sistemas de processamento de linguagem natural na prática · mulheres cantando por homens que...

Post on 01-Dec-2018

220 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Sistemas de Processamento de Linguagem Natural na Prática

Lições aprendidas na busca por insights em dados não estruturados

William ColenHead de IA @ Stilingue (www.stilingue.com.br)

Member @ Apache SF (www.apache.org)PMC/Commiter @ Apache OpenNLP (opennlp.apache.org)

colen@apache.org

@wcolenslideshare: wcolen

https://github.com/wcolen/qconsp2018-opennlp-flink-example

1Motivação NLP Como fazer em

Português

2 3Indo um pouco mais profundo

4Analisandoa Internet

5

1Motivação NLP Como fazer em

Português

2 3Indo um pouco mais profundo

4Analisandoa Internet

5

Mas o que é Natural Language Processing?

Línguas Naturais

Línguas Naturais

Aquelas que evoluem naturalmente por humanos devido ao uso e repetição sem planejamento ou

premeditação.

Línguas Estruturadas

Aquelas construídas ou formais, como as utilizadas para programar um computador, ou a linguagem

matemática.

Boa parte do conhecimento humano está em documentos difíceis de serem interpretados por computadores

Boa parte do conhecimento humano está em documentos difíceis de serem interpretados por computadores

Boa parte do conhecimento humano está em documentos difíceis de serem interpretados por computadores

Informação de alto valore mais atualizada

Mas… com muito ruído, semântica oculta e busca ineficiente

Boa parte do conhecimento humano está em documentos difíceis de serem interpretados por computadores

Informação de alto valor e mais atualizada

Mas… com muito ruído, semântica oculta e busca ineficiente

Processamento de Linguagem Natural

O QUE?QUEM?

ONDE?

QUANDO?

FALARAM SOBRE CERVEJA NO FERIADO DO DIA DO TRABALHADOR?

O QUE?

Ranking/Evolução - Publicações cerveja durante o feriado prolongado Dia do Trabalhador

Cerveja x Tema - Publicações cerveja durante o feriado prolongado Dia do Trabalhador

Sentimento - Publicações cerveja durante o feriado prolongado Dia do Trabalhador

Termos Correlacionados - Publicações cerveja durante o feriado prolongado Dia do Trabalhador

Sunburst Termos - Publicações cerveja durante o feriado prolongado Dia do Trabalhador

#comoEuConsigo

Resolvendo um problema simples de cada vez

1Motivação NLP Como fazer em

Português

2 3Indo um pouco mais profundo

4Analisandoa Internet

5

Desafio: ambiguidade

O sr. Mendonça chegou.

Quem casa quer casa.

Eu preparei o pato dela.

|O|sr.|Paulo|chegou|.|||Vamos|?||

|O|sr.|Paulo|chegou|.| ART ABR N VERB PU

|O sr. Paulo |chegou Sintagma Nominal Sintagma Verbal

O sr. Paulo está chegando . | Sujeito | Predicado

O sr. Paulo chegou . | Vamos ?||SentenceDetector

Tokenizer

POS Tagger

Chunker

Shallow Parser

O sr. Paulo chegou . Vamos ?||

PipelineLanguageDetector

SentenceDetector Tokenizer POS Tagger Chunker

Lemmatizer

Name Finder

Sentiment

Entity Linker

Index

PipelineLanguageDetector

SentenceDetector Tokenizer POS Tagger Chunker

Lemmatizer

Name Finder

Sentiment

Entity Linker

Index

SegmentaçãoSeleção Anotação Anotação++

Desafios em trabalhar com português

Escassos recursos linguísticos

Dicionários, corpus, ferramentas e modelos

Desafios em trabalhar com portuguêsEscassos recursos linguísticos

Dicionários, corpus, ferramentas e modelos

1Motivação NLP Como fazer em

Português

2 3Indo um pouco mais profundo

4Analisandoa Internet

5

Desafios em trabalhar com portuguêsEscassos recursos linguísticos

Dicionários, corpus, ferramentas e modelos

Dicionários

LéxicosOrtográficos Semânticos

Dicionários

Ortográficos

Hunspell pt-BR (corretor ortográfico do LibreOffice)

esse comercial da #brama, em são paulo c/ mulheres cantando por homens q bebe +

conscientemente e ótm :P

Esse comercial da Brahma em São Paulo com mulheres cantando por homens que bebem mais

conscientemente e ótimo.

Dicionários

LéxicosOrtográficos Semânticos

Dicionários

Léxicos

JSpell.Br (CoGrOO USP/SP)

Podem ajudar em anotadores, comoPOS Tagging e Lematização

https://github.com/cogroo/jspell.br

Dicionários

LéxicosOrtográficos Semânticos

Dicionários

Semânticos

Podem ajudar em termos, entidades e conceitos

Entidades na Stilingue

Semânticos

Analise de sentimento

Semânticos

PipelineLanguageDetector

SentenceDetector Tokenizer POS Tagger Chunker

Lemmatizer

Name Finder

Sentiment

Entity Linker

Index

Desafios em trabalhar com portuguêsEscassos Recursos linguísticos

Dicionários, corpus, ferramentas e modelos

Corpus

DocumentoNão Anotado Tokens

Corpus

Não Anotado

Wikipedia

• Servem como exemplos de uso da língua

• Criação simples: crawler de notícias, coletar tweets

• Corpus livre e aberto: Wikipedia Dumps https://dumps.wikimedia.org

Corpus

DocumentoNão Anotado Tokens

Corpus

Documentopos eu curti pos eu bebo todas e adoroooo neg ressaca braba com essa cerva de milho neg mano essa cerva ta quente

Outros exemplos- Pares <Língua> <Documento> - Pares <Cancêr Sim|Não> <Laudo médico> …

Corpus

DocumentoNão Anotado Tokens

Corpus

Tokens

Floresta (Linguateca)Summit (PUC-RS)

0 A o art F=S _ _ _ _ 1 equipe _ n F=S 0 _ _ _ 2 de de prp _ _ _ _ _ 3 Peter_Savolainen _ prop M=S 0 (PER) (5) _ 4 , _ , _ _ _ _ _ 5 de de prp _ _ _ _ _ 6 o o art M=S _ _ _ _ 7 Instituto_Real_de_Tecnologia _ prop M=S 0 (ORG) (5) _ 8 , _ , _ _ _ _ _ 9 de de prp _ _ _ _ _ 10 Estocolmo Estocolmo prop M=S 0 (PLC) _ _ 11 , _ , _ _ _ _ _ 12 Suécia Suécia prop F=S 0 (PLC) _ _ 13 , _ , _ _ _ _ _ 14 constatou constatar v-fin PS=3S=IND _ _ _ _ 15 que que conj-s _ _ _ _ _ 16 a o art F=S _ _ _ _ 17 diversidade diversidade, diverso n F=S 0 _ _ _ 18 genética genético adj F=S _ _ _ _ 19 era ser v-fin IMPF=3S=IND _ _ _ _ 20 maior maior adj F=S _ _ _ _ 21 entre entre prp _ _ _ _ _ 22 os o art M=P _ _ _ _ 23 cães cão n M=P 0 _ _ _ 24 de de prp _ _ _ _ _ 25 o o art M=S _ _ _ _ 26 leste leste n M=S 0 _ _ _ 27 asiático asiático adj M=S _ _ _ _ 28 . . . _ _ _ _ _

Summit (PUC-RS)

PipelineLanguageDetector

SentenceDetector Tokenizer POS Tagger Chunker

Lemmatizer

Name Finder

Sentiment

Entity Linker

Index

Desafios em trabalhar com portuguêsEscassos Recursos linguísticos

Dicionários, corpus, ferramentas e modelos

Ferramentas

Machine Learning + DL Deep Learning

Ferramentas

Machine Learning + DL NLTK (Python)

spaCy (Python)

Apache OpenNLP (Java)Stanford Core NLP (Java)

CoGrOO (Java)

Centradas em Machine Learning.Podem usar DL para partes específicas.

Ex.: OpenNLP pode usar Word Embeddings como features

Ferramentas

Machine Learning + DL

CoGrOO https://github.com/cogroo/cogroo4/wiki/API-CoGrOO-4

Ferramentas

Machine Learning + DL Deep Learning

Ferramentas

Deep Learning

Tensor FlowApache MXNetEclipse DL4J

PyTorch

Ferramentas

Deep Learning

Tensor FlowApache MXNetEclipse DL4J

PyTorch

Desafios em trabalhar com portuguêsEscassos Recursos linguísticos

Dicionários, corpus, ferramentas e modelos

Modelos

Prateleira Tailor Made

Modelos

• CoGrOO (https://github.com/cogroo/cogroo4/wiki/API-CoGrOO-4)

• Apache OpenNLP (http://opennlp.apache.org/models.html)

• NLTK (http://www.nltk.org/howto/portuguese_en.html)

Prateleira

Sentence Detector | Tokenizer | Named Entity | POS Tagger | Chunking | ParserSentiment | Linking | Word Embeddings

Bons como baseline e para componentes secundários.

Modelos

Prateleira Tailor Made

Modelos

Tailor MadeTreinar um modelo sob medida adequado para o contexto de aplicação utilizando um corpus criado sob medida.

Bons quando para contextos específicos e quando precisamos de maior eficácia.

Desafios em trabalhar com portuguêsEscassos Recursos linguísticos

Dicionários, corpus, ferramentas e modelos

Como criar modelos customizados para máxima eficácia?

1Motivação NLP Como fazer em

Português

2 3Indo um pouco mais profundo

4Analisandoa Internet

5

Como criar modelos customizados para máxima eficácia?

Ciclo de desenvolvimento

Vamos criar um modelo de entidades nomeadas em notícias

Ciclo de desenvolvimento

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um novo modelo

Ciclo de desenvolvimento

• Corpus Amazônia: http://www.linguateca.pt/floresta/ficheiros/gz/amazonia.ad.gz

• Apache OpenNLP: https://www.apache.org/dyn/closer.cgi/opennlp/opennlp-1.8.4/apache-opennlp-1.8.4-bin.tar.gz

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

A1 STA:cu =CJT:fcl ==ADVL:adv("depois" <left>) depois ==ACC-PASS:pron-pers("se" <coll> <left> M 3P ACC) se ==P:v-fin("encontrar" <se-passive> <nosubj> <cjt-head> <fmc> <mv> PR 3P IND VFIN) encontram ==PIV:pp ===H:prp("com" <right>) com ===P<:np ====>N:art("o" <artd> DET F S) a ====H:n("dissidência" <np-def> <ac> <am> F S) dissidência ====N<:pp =====H:prp("de" <sam-> <np-close>) de =====P<:np ======>N:art("o" <artd> <-sam> DET M S) o ======H:n("grupo" <np-def> <HH> M S) grupo ======, ======APP:np =======>N:art("o" <artd> DET M P) os =======H:prop("Bacamarteiros_de_Pinga_Fogo" <org> <np-close> M P) Bacamarteiros_de_Pinga_Fogo =, =CO:conj-c("e" <co-fin> <co-fmc>) e =CJT:x ==SUBJ:np ===>N:art("o" <artd> DET F S) a ===H:n("festa" <np-def> <occ> <left> F S) festa ==P:v-fin("continuar" <cjt-sta> <fmc> <mv> PR 3S IND VFIN) continua ==ADVL:pp ===H:prp("por" <right>) por ===P<:n("muito_tempo" <np-idf> <dur> M S) muito_tempo .

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

$ bin/opennlp TokenNameFinderCrossValidator.ad -lang pt -encoding ISO-8859-1 / -data amazonia.ad -reportOutputFile detailed_report.txt / -misclassified true > misclassified.txt

detailed_report.txt misclassified.txt

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

detailed_report.txt

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

Evaluated 275769 samples with 328431 entities; found: 317170 entities; correct: 264015. TOTAL: precision: 83.24%; recall: 80.39%; F1: 81.79%. time: precision: 93.89%; recall: 91.63%; F1: 92.75%. [target: 18338; tp: 16804; fp: 1093] numeric: precision: 90.65%; recall: 89.64%; F1: 90.14%. [target: 15173; tp: 13601; fp: 1403] event: precision: 93.13%; recall: 86.28%; F1: 89.57%. [target: 50094; tp: 43219; fp: 3189] place: precision: 87.99%; recall: 80.35%; F1: 83.99%. [target: 52123; tp: 41879; fp: 5718] person: precision: 79.31%; recall: 81.17%; F1: 80.23%. [target: 85314; tp: 69250; fp: 18069] organization: precision: 78.32%; recall: 78.67%; F1: 78.50%. [target: 69654; tp: 54798; fp: 15167] thing: precision: 78.86%; recall: 68.91%; F1: 73.55%. [target: 9915; tp: 6832; fp: 1832] abstract: precision: 73.97%; recall: 66.85%; F1: 70.23%. [target: 11262; tp: 7529; fp: 2650] artprod: precision: 71.46%; recall: 61.02%; F1: 65.83%. [target: 16558; tp: 10103; fp: 4034]

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

Confusion Matrix a b c d e f g h i j k l m n o p q r s | <-- classified as <4780195> 409 420 7676 1137 505 1787 132 835 3339 2770 3481 4405 1030 1044 261 418 142 523 | a = other 232 <4123> 26 192 5 74 4 4 . 748 23 422 31 94 14 30 1 . 2 | b = abstract-cont 790 26 <7861> 113 125 22 41 4 6 174 988 104 710 29 144 11 108 . 6 | c = abstract-start 3176 282 69 <13548> 37 164 74 8 19 1348 273 1509 177 507 61 107 18 30 127 | d = artprod-cont 1992 38 258 160 <10927> 21 65 6 20 84 939 73 1447 19 362 7 124 3 13 | e = artprod-start 695 47 15 266 7 <7986> 85 8 . 712 64 508 53 172 35 12 2 4 8 | f = event-cont 4364 15 58 137 98 122 <43825> 10 41 68 539 68 536 34 140 3 24 . 12 | g = event-start 296 . 8 26 2 . 1 <8493> 25 5 4 29 12 15 11 4 2 77 3 | h = numeric-cont 1075 . . 39 18 2 9 12 <13809> 9 7 22 15 10 19 2 12 . 113 | i = numeric-start 1387 512 136 1417 11 358 21 9 4 <37838> 364 2935 184 1694 124 205 17 18 18 | j = organization-cont 2738 64 571 509 559 125 206 21 15 963 <57223> 507 3778 218 1739 21 368 2 27 | k = organization-start 2270 375 30 1413 18 256 39 60 4 2741 187 <51957> 643 1080 133 222 20 21 44 | l = person-cont 4645 84 407 695 776 119 101 9 62 643 2820 1682 <71628> 294 942 57 313 3 34 | m = person-start 770 132 27 659 6 125 20 5 10 3145 147 2240 173 <22709> 91 177 12 7 9 | n = place-cont 1829 35 167 355 285 84 69 1 13 416 2816 345 2678 211 <42553> 42 177 2 45 | o = place-start 232 33 7 146 2 9 6 18 1 498 24 408 19 108 10 <2272> 3 1 1 | p = thing-cont 758 7 93 74 109 5 34 16 26 56 714 71 744 24 134 7 <7034> 4 5 | q = thing-start 185 2 . 13 . 21 2 28 . 36 3 45 3 8 3 9 . <5798> 16 | r = time-cont 823 2 26 111 15 18 19 5 114 38 60 64 83 9 38 4 11 7 <16891>| s = time-start

detailed_report.txt

misclassified.txt

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

Expected: { " <START:artprod> Luz Quartiada <END> " é pura <START:abstract> prosa <END> poética que prende o leitor do começo ao <START:event> fim <END> quando descreve personagens como " <START:person> Clarice <END> " e seus anseios de mulher de um mundo escondido e ameaçado pelo progresso :} Predicted: { " <START:abstract> Luz Quartiada <END> " é pura prosa poética que prende o leitor do começo ao <START:event> fim <END> quando descreve personagens como " <START:artprod> Clarice <END> " e seus anseios de mulher de um mundo escondido e ameaçado pelo progresso :} False positives: { [Luz Quartiada, Clarice] } False negatives: { [Luz Quartiada, prosa, Clarice] }

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

<generators> <cache> <generators> <window prevLength = "2" nextLength = "2"> <tokenclass/> </window> <window prevLength = "2" nextLength = "2"> <token/> </window> <definition/> <prevmap/> <bigram/> <sentence begin="true" end="false"/> </generators> </cache> </generators>

Default feature generator

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

Default feature generator

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

<generators> <cache> <generators> <window prevLength = "3" nextLength = "3"> <tokenclass/> </window> <window prevLength = "3" nextLength = "3"> <token/> </window> <definition/> <prevmap/> <bigram/> <sentence begin="true" end="false"/> </generators> </cache> </generators>

Feature generator: v01

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

Feature generator: v01 x v2Evaluated 275769 samples with 328431 entities; found: 317170 entities; correct: 264015. TOTAL: precision: 83.24%; recall: 80.39%; F1: 81.79%. time: precision: 93.89%; recall: 91.63%; F1: 92.75%. [target: 18338; tp: 16804; fp: 1093] numeric: precision: 90.65%; recall: 89.64%; F1: 90.14%. [target: 15173; tp: 13601; fp: 1403] event: precision: 93.13%; recall: 86.28%; F1: 89.57%. [target: 50094; tp: 43219; fp: 3189] place: precision: 87.99%; recall: 80.35%; F1: 83.99%. [target: 52123; tp: 41879; fp: 5718] person: precision: 79.31%; recall: 81.17%; F1: 80.23%. [target: 85314; tp: 69250; fp: 18069] organization: precision: 78.32%; recall: 78.67%; F1: 78.50%. [target: 69654; tp: 54798; fp: 15167] thing: precision: 78.86%; recall: 68.91%; F1: 73.55%. [target: 9915; tp: 6832; fp: 1832] abstract: precision: 73.97%; recall: 66.85%; F1: 70.23%. [target: 11262; tp: 7529; fp: 2650] artprod: precision: 71.46%; recall: 61.02%; F1: 65.83%. [target: 16558; tp: 10103; fp: 4034]

Evaluated 275769 samples with 328431 entities; found: 318807 entities; correct: 265517. TOTAL: precision: 83.28%; recall: 80.84%; F1: 82.05%. time: precision: 93.90%; recall: 92.16%; F1: 93.02%. [target: 18338; tp: 16900; fp: 1098] numeric: precision: 90.30%; recall: 89.68%; F1: 89.99%. [target: 15173; tp: 13607; fp: 1461] event: precision: 93.17%; recall: 86.15%; F1: 89.53%. [target: 50094; tp: 43158; fp: 3162] place: precision: 87.60%; recall: 81.33%; F1: 84.35%. [target: 52123; tp: 42392; fp: 6000] person: precision: 79.87%; recall: 81.05%; F1: 80.46%. [target: 85314; tp: 69146; fp: 17424] organization: precision: 77.89%; recall: 79.36%; F1: 78.62%. [target: 69654; tp: 55274; fp: 15689] thing: precision: 81.48%; recall: 67.49%; F1: 73.83%. [target: 9915; tp: 6692; fp: 1521] abstract: precision: 75.70%; recall: 65.60%; F1: 70.29%. [target: 11262; tp: 7388; fp: 2371] artprod: precision: 70.60%; recall: 66.19%; F1: 68.32%. [target: 16558; tp: 10960; fp: 4564]

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

<generators> <cache> <generators> <window prevLength = "3" nextLength = "3"> <tokenclass/> </window> <window prevLength = "3" nextLength = "3"> <token/> </window> <window prevLength = "3" nextLength = "3"> <brownclustertokenclass dict = “brownCluster.txt"/> </window> <window prevLength = "3" nextLength = "3"> <tokenpos model = "en-pos-perceptron.bin"/> </window> <definition/> <prevmap/> <bigram/> <sentence begin="true" end="false"/> </generators> </cache> </generators>

Feature generator: v02

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

Feature generator: v2 x v3Evaluated 275769 samples with 328431 entities; found: 318807 entities; correct: 265517. TOTAL: precision: 83.28%; recall: 80.84%; F1: 82.05%. time: precision: 93.90%; recall: 92.16%; F1: 93.02%. [target: 18338; tp: 16900; fp: 1098] numeric: precision: 90.30%; recall: 89.68%; F1: 89.99%. [target: 15173; tp: 13607; fp: 1461] event: precision: 93.17%; recall: 86.15%; F1: 89.53%. [target: 50094; tp: 43158; fp: 3162] place: precision: 87.60%; recall: 81.33%; F1: 84.35%. [target: 52123; tp: 42392; fp: 6000] person: precision: 79.87%; recall: 81.05%; F1: 80.46%. [target: 85314; tp: 69146; fp: 17424] organization: precision: 77.89%; recall: 79.36%; F1: 78.62%. [target: 69654; tp: 55274; fp: 15689] thing: precision: 81.48%; recall: 67.49%; F1: 73.83%. [target: 9915; tp: 6692; fp: 1521] abstract: precision: 75.70%; recall: 65.60%; F1: 70.29%. [target: 11262; tp: 7388; fp: 2371] artprod: precision: 70.60%; recall: 66.19%; F1: 68.32%. [target: 16558; tp: 10960; fp: 4564]

Evaluated 275769 samples with 328431 entities; found: 319684 entities; correct: 265738. TOTAL: precision: 83.13%; recall: 80.91%; F1: 82.00%. time: precision: 93.99%; recall: 92.23%; F1: 93.10%. [target: 18338; tp: 16914; fp: 1082] numeric: precision: 91.39%; recall: 89.71%; F1: 90.54%. [target: 15173; tp: 13611; fp: 1283] event: precision: 93.18%; recall: 85.64%; F1: 89.25%. [target: 50094; tp: 42903; fp: 3141] place: precision: 87.28%; recall: 81.42%; F1: 84.25%. [target: 52123; tp: 42437; fp: 6183] person: precision: 79.93%; recall: 82.02%; F1: 80.96%. [target: 85314; tp: 69978; fp: 17571] organization: precision: 77.56%; recall: 79.26%; F1: 78.40%. [target: 69654; tp: 55206; fp: 15973] thing: precision: 81.63%; recall: 66.17%; F1: 73.09%. [target: 9915; tp: 6561; fp: 1476] abstract: precision: 73.10%; recall: 65.11%; F1: 68.87%. [target: 11262; tp: 7333; fp: 2699] artprod: precision: 70.40%; recall: 65.20%; F1: 67.70%. [target: 16558; tp: 10795; fp: 4538]

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

$ bin/opennlp TokenNameFinderTrainer.ad -lang pt -encoding ISO-8859-1 / -data amazonia.ad -model qcon.bin

Treinar um modelo para homologação

Criar um modelo Baseline

Corpus Baseline

AvaliaçãoHomologação

Engenharia de Features

Anotar mais dados

Criar um modelo

$ bin/opennlp TokenizerMEEvaluator.ad -lang pt -encoding ISO-8859-1 / -data homologacao.ad -model qcon.bin -detokenizer portuguese.xml / -misclassified true

Com o modelo treinado, avaliar em dados reais anotados (corpus ouro)

#comoJuntaTudo ou…

como processar a Internet??

1Motivação NLP Como fazer em

Português

2 3Indo um pouco mais profundo

4Analisandoa Internet

5

PipelineLanguageDetector

SentenceDetector Tokenizer POS Tagger Chunker

Lemmatizer

Name Finder

Sentiment

Entity Linker

Index

SegmentaçãoSeleção Anotação Anotação++

SentenceDetector Tokenizer POS Tagger Name Finder

Index

LanguageDetector

Datasource

NLP em Streaming

NLP em Streaming

https://github.com/wcolen/qconsp2018-opennlp-flink-example

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// Perform language detection SplitStream<Annotation> articleStream = rawStream .map(new LanguageDetectorFunction()) .split(new LanguageSelector(nlpLanguages));

// English NLP pipeline articleStream.select("eng") .map(new SentenceDetectorFunction(engSentenceModel)) .map(new TokenizerFunction(engTokenizerModel)) .map(new POSTaggerFunction(engPosModel)) .map(new ChunkerFunction(engChunkModel)) .map(new NameFinderFunction(engNerPersonModel)) .addSink(new ElasticsearchSink<>(config, transportAddresses, new ESSinkFunction()));

// Portuguese NLP pipeline articleStream.select("por") .map(new SentenceDetectorFunction(porSentenceModel)) .map(new TokenizerFunction(porTokenizerModel)) .map(new POSTaggerFunction(porPosModel)) .map(new ChunkerFunction(porChunkModel)) .map(new NameFinderFunction(porNerPersonModel)) .addSink(new ElasticsearchSink<>(config, transportAddresses, new ESSinkFunction()));

Agradecimentos equipe Apache OpenNLP

Suneel Marthi@suneelmarthi

Jörn Kottmann @joernkottmann

Tommaso Teofili@tteofili

Peter Thygesenin:thygesen

@pthyge

William Colen@wcolen

Rodrigo Agerri@ragerri

Daniel Russin:daniel-russ-9541aa15

Koji Sekiguchi@kojisays

Jeff Zemerickin:jeffzemerick

Bruno Kinoshita @kinow

Agradecimentos

Equipe de IA da Stilinguehttp://www.stilingue.com.br @Stilingue_API#contratandoMentesCuriosas e parcerias!!

Sistemas de Processamento de Linguagem Natural na Prática

William ColenHead de IA @ Stilingue (www.stilingue.com.br)

Member @ Apache SF (www.apache.org)PMC/Commiter @ Apache OpenNLP (opennlp.apache.org)

colen@apache.org

@wcolen

slideshare: wcolen https://github.com/wcolen/qconsp2018-opennlp-flink-example

Obrigado!Perguntas?

top related