Top Banner
Sistemas de Processamento de Linguagem Natural na Prática Lições aprendidas na busca por insights em dados não estruturados William Colen Head de IA @ Stilingue (www.stilingue.com.br) Member @ Apache SF (www.apache.org) PMC/Commiter @ Apache OpenNLP (opennlp.apache.org) [email protected] @wcolen slideshare: wcolen https://github.com/wcolen/qconsp2018-opennlp-flink-example
92

Sistemas de Processamento de Linguagem Natural na Prática · 2018. 7. 31. · Sistemas de Processamento de Linguagem Natural na Prática Lições aprendidas na busca por insights

Feb 01, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Sistemas de Processamento de Linguagem Natural na Prática

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

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


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


    [email protected]

    @wcolen
slideshare: wcolen

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

    http://www.stilingue.com.brhttp://www.apache.orghttp://opennlp.apache.orgmailto:[email protected]

  • 1Motivação NLP Como fazer em Português

    2 3Indo um pouco mais profundo

    4Analisando
a Internet

    5

  • 1Motivação NLP Como fazer em Português

    2 3Indo um pouco mais profundo

    4Analisando
a 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 valor
e 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

    4Analisando
a 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 ?||Sentence
Detector

    Tokenizer

    POS Tagger

    Chunker

    Shallow Parser

    O sr. Paulo chegou . Vamos ?||

  • PipelineLanguage
Detector

    Sentence
Detector Tokenizer POS Tagger Chunker

    Lemmatizer

    Name Finder

    Sentiment

    Entity Linker

    Index

  • PipelineLanguage
Detector

    Sentence
Detector 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

    4Analisando
a 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, como
POS 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

  • PipelineLanguage
Detector

    Sentence
Detector 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

    https://dumps.wikimedia.orghttps://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 - Pares …

  • 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)

  • PipelineLanguage
Detector

    Sentence
Detector 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 | Parser
Sentiment | Linking | Word Embeddings

    Bons como baseline e para componentes secundários.

    https://github.com/cogroo/cogroo4/wiki/API-CoGrOO-4http://www.nltk.org/howto/portuguese_en.html

  • 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

    4Analisando
a 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ção
Homologaçã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ção
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

    http://www.linguateca.pt/floresta/ficheiros/gz/amazonia.ad.gzhttp://www.linguateca.pt/floresta/ficheiros/gz/amazonia.ad.gzhttps://www.apache.org/dyn/closer.cgi/opennlp/opennlp-1.8.4/apache-opennlp-1.8.4-bin.tar.gzhttps://www.apache.org/dyn/closer.cgi/opennlp/opennlp-1.8.4/apache-opennlp-1.8.4-bin.tar.gzhttps://www.apache.org/dyn/closer.cgi/opennlp/opennlp-1.8.4/apache-opennlp-1.8.4-bin.tar.gz

  • A1 STA:cu =CJT:fcl ==ADVL:adv("depois" ) depois ==ACC-PASS:pron-pers("se" M 3P ACC) se ==P:v-fin("encontrar" PR 3P IND VFIN) encontram ==PIV:pp ===H:prp("com" ) com ===PN:art("o" DET F S) a ====H:n("dissidência" F S) dissidência ====NN:art("o" DET M P) os =======H:prop("Bacamarteiros_de_Pinga_Fogo" M P) Bacamarteiros_de_Pinga_Fogo =, =CO:conj-c("e" ) e =CJT:x ==SUBJ:np ===>N:art("o" DET F S) a ===H:n("festa" F S) festa ==P:v-fin("continuar" PR 3S IND VFIN) continua ==ADVL:pp ===H:prp("por" ) por ===P

  • $ 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ção
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

  • detailed_report.txt

    Criar um modelo Baseline

    Corpus Baseline

    Avaliação
Homologaçã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ção
Homologaçã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 |

  • misclassified.txt

    Criar um modelo Baseline

    Corpus Baseline

    Avaliação
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

    Expected: { " Luz Quartiada " é pura prosa poética que prende o leitor do começo ao fim quando descreve personagens como " Clarice " e seus anseios de mulher de um mundo escondido e ameaçado pelo progresso :} Predicted: { " Luz Quartiada " é pura prosa poética que prende o leitor do começo ao fim quando descreve personagens como " Clarice " 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ção
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

    Default feature generator

  • Criar um modelo Baseline

    Corpus Baseline

    Avaliação
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

    Default feature generator

  • Criar um modelo Baseline

    Corpus Baseline

    Avaliação
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

    Feature generator: v01

  • Criar um modelo Baseline

    Corpus Baseline

    Avaliação
Homologaçã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ção
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

  • Criar um modelo Baseline

    Corpus Baseline

    Avaliação
Homologaçã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ção
Homologação

    Engenharia de Features

    Anotar mais dados

    Criar um modelo

  • Criar um modelo Baseline

    Corpus Baseline

    Avaliação
Homologaçã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ção
Homologaçã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

    4Analisando
a Internet

    5

  • PipelineLanguage
Detector

    Sentence
Detector Tokenizer POS Tagger Chunker

    Lemmatizer

    Name Finder

    Sentiment

    Entity Linker

    Index

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

  • Sentence
Detector Tokenizer POS Tagger Name Finder

    Index

    Language
Detector

    Data
source

    NLP em Streaming

  • NLP em Streaming

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

    final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

// Perform language detection SplitStream 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 Thygesen
in:thygesen

    @pthyge

    William Colen
@wcolen

    Rodrigo Agerri
@ragerri

    Daniel Russ
in:daniel-russ-9541aa15

    Koji Sekiguchi
@kojisays

    Jeff Zemerick
in:jeffzemerick

    Bruno Kinoshita 
@kinow

  • Agradecimentos

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

  • Sistemas de Processamento de Linguagem Natural na Prática

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


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


    [email protected]

    @wcolen 


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

    Obrigado!
Perguntas?

    http://www.stilingue.com.brhttp://www.apache.orghttp://opennlp.apache.orgmailto:[email protected]