Processamento Automático da     Língua Portuguesa        Wesley Seidel               William Colen        @wseidel        ...
Bio●   Wesley Seidel             ●   William Colen       –   Matemático                –   Engenheiro       –   Pesquisado...
Língua natural              Língua formal●   Humana                  ●   Criada artificialmente●   Comunicação            ...
Processamento de Linguagens Naturais (PLN)Executar tarefas que envolvam linguagem humana            Extração de informação...
Exemplo: Agente de Conversação               Computador do filme               “2001: Uma Odisseia no Espaço”,            ...
Exemplo: Sistema de respostas   Buscar usando                              Fazer uma   palavras chave                     ...
Exemplo: tradução automática               Babel Fish é uma espécie fictícia na série               O Guia do Mochileiro d...
Dave Bowan: Open the pod bay doors, HAL.HAL: Im sorry Dave, Im afraid I cant do that.HAL reconhece palavras em    Reconhec...
Ordem, afirmação ou pergunta?HAL ainda deve interpretar o que Davedeseja com a sentença -   –   Ordem: HAL, open the pod b...
Quanta seda chinesa foi exportada para a   Europa Ocidental no final do século 18? Semântica     Significado de “exportada...
Aplicações: busca semânticahttp://www.wolframalpha.com/input/?i=What+year+was+Lula+born%3F
Aplicações: busca semântica http://www.powerset.com/explore/go/What-year-Elvis-Presley-died?
Aplicações: busca semântica   http://www.google.com/squared/search?q=tea
Aplicações: tradução automáticahttp://translate.google.com/translate_s?hl=en&clss=&q=ciência+da+computação&tq=&sl=pt&tl=zh...
Aplicações: corretor gramaticalhttp://translate.google.com/translate_s?hl=en&clss=&q=ciência+da+computação&tq=&sl=pt&tl=zh...
Conhecimento em    Processamento de Linguagem    Processador de                  Processador de        dados              ...
Língua                       DadosO Plínio Balduino gostou   print tweet.lengthdo nível da programação       81do evento p...
Ambiguidade: problema fundamental●   “O sr. Mendonça chegou.”        –   em “sr.”, o ponto marca fim de sentença?●   “Quem...
Tarefas Processamento de Linguagem●   Segmentador de Sentenças●   Tokenizador●   Reconhecedor de Entidades Nomedas●   Etiq...
Segmentador de sentenças●   Entrada        O sr. Mendonça chegou. Entrego-lhe os documentos.●   Saída        [O sr. Mendon...
Tokenizador●   Entrada        [O sr. Mendonça chegou.]        [Entrego-lhe os documentos.]●   Saída        { [O] [sr.] [Me...
Detector de Entidades Nomeadas●   Entrada        O Red Hot se apresentará em São Paulo , o Wesley          vai no show .● ...
Etiquetador Morfológico●   Entrada        Quem casa quer casa .●   Saída                 Token        Etiqueta            ...
Chunker●   Entrada        A Maria vai entregar os documentos ao Pedro.●   Saída        A Maria: SN        vai entregar: SV...
CoGrOO●   Extensão Corretor Gramatical LGPL para o    LibreOffice / Apache OpenOffice●   Aplica processamento de linguagem...
CoGrOO     Sugeito               As meninaCorretor ortográfico   Corretor gramatical      Sugeito              As menina
Arquitetura do CoGrOO  Text Sentence                                         Subject                  Tokenizer        Chu...
API do CogrOO 3.x●   Tarefas disponíveis       –   Corretor Gramatical       –   Detector de sentenças, Tokenizer ...●   O...
API do CogrOO 3.xCorretor Gramatical// instantiate the grammar checker passing the configurationCogroo theCogroo = new Cog...
API do CogrOO 3.xAnalisadores// check the text to get the errors and the analysis resultCheckerResult results = theCogroo....
API do CogrOO 3.x AnalisadoresFlat structure for: A moça bonita chegou hoje de carro novo.      A        lemma[o]         ...
Apache OpenNLP●   Framework livre para as tarefas de baixo nível●   Algoritmos de aprendizado de máquina         (entropia...
Apache OpenNLP Linha de comando$ bin/opennlp POSTagger pt-pos-maxent.binQuem casa quer casa .Quem_pron casa_v quer_v casa_...
LTasks.com●   PLN as a Service: http://www.ltasks.com●   Enriquece seu texto com metadados●   Gratuito!        –   API cal...
LTasks.com●   PLN as a Service: http://www.ltasks.com●   Enriquece seu texto com metadados●   Gratuito!         –   API ca...
Referências utilizadas[1] JURAFSKY, D.; MARTIN, J. H. . Speech and Language Processing. 2. ed.: Pearson, 2008.1024 p.[2] C...
Muito obrigado!        Wesley Seidel               William Colen        @wseidel                    @wcolen               ...
Upcoming SlideShare
Loading in …5
×

Processamento Automático da Língua Portuguesa: DevInSampa 2011

2,706 views
2,550 views

Published on

Palestra oferecida pelo Wesley Seidel e William Colen no DevInSampa.

Published in: Technology, Spiritual

Processamento Automático da Língua Portuguesa: DevInSampa 2011

  1. 1. Processamento Automático da Língua Portuguesa Wesley Seidel William Colen @wseidel @wcolen LTasks.com O seu aplicativo entendendo o seu texto.http://devinsampa.com.br
  2. 2. Bio● Wesley Seidel ● William Colen – Matemático – Engenheiro – Pesquisador – Pesquisador – Programador – Programador – Software livre – Software livre – Empreendedor – Empreendedor
  3. 3. Língua natural Língua formal● Humana ● Criada artificialmente● Comunicação ● Matemática, lógica, computação● Falada, escrita ou gesticulada ● Escrita ou digital● Rica, viva e natural ● Universal● Estrutura “escondida” ● Estrutura evidente● Um livro, um post de ● Um banco de dados, blog, um tweet um RDF, um programa
  4. 4. Processamento de Linguagens Naturais (PLN)Executar tarefas que envolvam linguagem humana Extração de informação Comunicação homem-máquina Melhorar comunicação homem-homem ...
  5. 5. Exemplo: Agente de Conversação Computador do filme “2001: Uma Odisseia no Espaço”, de Stanley Kubrick, 1968 HAL 9000 Reconhecimento de voz, inter-● Conversa fluente em inglês pretação de linguagem natural Planejamento de diálogo e sín-● Leitura de lábios tese de vozArthur C. Clarke estava otimista de quando teríamosum sistema de diálogo como o HAL 9000. Masquanto longe estamos disso?
  6. 6. Exemplo: Sistema de respostas Buscar usando Fazer uma palavras chave pergunta completa Fácil para ● O que significa “procrastinar”?os buscadores atuais ● Em que ano a USP foi fundada? ● Quantos cursos eram oferecidos na Universidade naquele ano? Requer reso- lução de infe- ● Quanta seda chinesa foi exportada para a rências, sínte-se e resumo de Inglaterra no final do século 18?informações dediversas fontes. ● O que os cientistas pensam a respeito da clonagem humana?
  7. 7. Exemplo: tradução automática Babel Fish é uma espécie fictícia na série O Guia do Mochileiro das Galáxias (1978), de Douglas Adams.● Traduz instantaneamente de qualquer linguagem para qualquer linguagem.● Seria factível um sistema que fizesse o mesmo que o Babel Fish?● Imagine poder traduzir para o nosso idioma as centenas de milhares de páginas Web que estão originalmente em idiomas que não dominamos, como o chinês, por exemplo?
  8. 8. Dave Bowan: Open the pod bay doors, HAL.HAL: Im sorry Dave, Im afraid I cant do that.HAL reconhece palavras em Reconhecimento de vozum sinal de áudio Fonética ee gera áudio a partir de Fonologiasequências de palavras Síntese de vozContrações: Im, I cant MorfologiaInterpreta variações: doors (plural)HAL deve saber que “Im I do, sorry thatafraid Dave Im cant.” não teria sentido Sintaxepara Dave
  9. 9. Ordem, afirmação ou pergunta?HAL ainda deve interpretar o que Davedeseja com a sentença - – Ordem: HAL, open the pod bay door. – Afirmação: HAL, the pod bay door is open. – Pergunta: HAL, is the pod bay door open?HAL é bem educado no uso do idioma: – Im sorry, Im afraid Pragmática (ou etiqueta – I cant (no lugar de I wont) do diálogo)
  10. 10. Quanta seda chinesa foi exportada para a Europa Ocidental no final do século 18? Semântica Significado de “exportada”das palavras ou “seda” Europa Europa OrientalComposição Ocidental Sul da Europa semântica Significado de “final” quando combinado a “século 18”
  11. 11. Aplicações: busca semânticahttp://www.wolframalpha.com/input/?i=What+year+was+Lula+born%3F
  12. 12. Aplicações: busca semântica http://www.powerset.com/explore/go/What-year-Elvis-Presley-died?
  13. 13. Aplicações: busca semântica http://www.google.com/squared/search?q=tea
  14. 14. Aplicações: tradução automáticahttp://translate.google.com/translate_s?hl=en&clss=&q=ciência+da+computação&tq=&sl=pt&tl=zh-CN
  15. 15. Aplicações: corretor gramaticalhttp://translate.google.com/translate_s?hl=en&clss=&q=ciência+da+computação&tq=&sl=pt&tl=zh-CN
  16. 16. Conhecimento em Processamento de Linguagem Processador de Processador de dados linguagem Conhecimento da língua● Programa Unix “wc” - conta total de bytes, palavras e linhas de um arquivo texto. – Bytes e linhas → processador de dados – Palavras → processador linguístico
  17. 17. Língua DadosO Plínio Balduino gostou print tweet.lengthdo nível da programação 81do evento paradesenvolvedores print tweet.authorDevInSampa. p_balduinoEle comentou isto dia 26 print tweet.datede julho no Twitter. O 20110726pessoal do DevInSampagostou e retweetou.
  18. 18. Ambiguidade: problema fundamental● “O sr. Mendonça chegou.” – em “sr.”, o ponto marca fim de sentença?● “Quem casa quer casa.” – quando “casa” é verbo ou substantivo?● “Eu preparei o pato dela.” – Eu cozinhei o pato dela. – Eu fiz o pato (de plástico?) dela.
  19. 19. Tarefas Processamento de Linguagem● Segmentador de Sentenças● Tokenizador● Reconhecedor de Entidades Nomedas● Etiquetador Morfológico● Chunker● Parser …
  20. 20. Segmentador de sentenças● Entrada O sr. Mendonça chegou. Entrego-lhe os documentos.● Saída [O sr. Mendonça chegou.] [Entrego-lhe os documentos.]
  21. 21. Tokenizador● Entrada [O sr. Mendonça chegou.] [Entrego-lhe os documentos.]● Saída { [O] [sr.] [Mendonça] [chegou] [.] } { [Entrego] [-lhe] [os] [documentos] [.] }
  22. 22. Detector de Entidades Nomeadas● Entrada O Red Hot se apresentará em São Paulo , o Wesley vai no show .● Saída Bandas Pessoas Red Hot ● ●Wesley Lugares Eventos ● São Paulo ● show
  23. 23. Etiquetador Morfológico● Entrada Quem casa quer casa .● Saída Token Etiqueta Quem pronome casa verbo quer verbo casa substantivo . pontuação
  24. 24. Chunker● Entrada A Maria vai entregar os documentos ao Pedro.● Saída A Maria: SN vai entregar: SV os documentos: SN a: SP o Pedro: SN
  25. 25. CoGrOO● Extensão Corretor Gramatical LGPL para o LibreOffice / Apache OpenOffice● Aplica processamento de linguagem natural● Sua API pode ser usada por outros projetos
  26. 26. CoGrOO Sugeito As meninaCorretor ortográfico Corretor gramatical Sugeito As menina
  27. 27. Arquitetura do CoGrOO Text Sentence Subject Tokenizer Chunker Boundary Verb (2) (5)Detector (1) Finder (6) Grammar Name PoS Error Finder (3) Tagger (4) Detector (7) Suggestions Lexical Language Error Dictionary Models Patterns
  28. 28. API do CogrOO 3.x● Tarefas disponíveis – Corretor Gramatical – Detector de sentenças, Tokenizer ...● Obtenha o binário – Download ou Maven (repo próprio)● Documentação – http://ccsl.ime.usp.br/redmine/projects/cogroo/wiki/How_to
  29. 29. API do CogrOO 3.xCorretor Gramatical// instantiate the grammar checker passing the configurationCogroo theCogroo = new Cogroo(config);// check the text to get the errorsList<Mistake> erros = theCogroo.checkText(input);//p rint error detailsfor (Mistake erro : erros) { System.out.println("Message " + erro.getShortMessage() + ""); System.out.println("Wrong text" +input.substring(erro.getStart(), erro.getEnd()) + ""); System.out.print (" Suggestions: " ); for (String suggestion : erro.getSuggestions()) { System.out.print("[" + suggestion + "] "); }}
  30. 30. API do CogrOO 3.xAnalisadores// check the text to get the errors and the analysis resultCheckerResult results = theCogroo.analyseAndCheckText(input);//lets show the flat structureSystem.out.println("Flat structure for: n" + input);for (Sentence sentence : results.sentences) { for (Token token : sentence.getTokens()) { // print the text System.out.print(" " + input.substring( token.getSpan().getStart(), token.getSpan().getEnd())); //print the lemma System.out.print("t lemma[" + token.getPrimitive() + "] "); //print the morphological tag, we use a tag interpreter here System.out.print("t tag[" + mtagToStr(token.getMorphologicalTag())+"]"); ))
  31. 31. API do CogrOO 3.x AnalisadoresFlat structure for: A moça bonita chegou hoje de carro novo. A lemma[o] tag[DET_F_S_] moça lemma[moço] tag[ADJ_F_S_] bonita lemma[bonito] tag[N_F_S_] chegou lemma[chegar] tag[V_PS_3S_IND_VFIN_] hoje lemma[hoje] tag[ADV_] de lemma[de] tag[PRP_] carro lemma[carro] tag[N_M_S_] novo lemma[novo] tag[ADJ_M_S_] . lemma[.] tag[-PNT_ABS_]
  32. 32. Apache OpenNLP● Framework livre para as tarefas de baixo nível● Algoritmos de aprendizado de máquina (entropia, redes neurais)● Treinamento, avaliação e execução● Diversos modelos prontos para uso, inclusive português● http://incubator.apache.org/opennlp/
  33. 33. Apache OpenNLP Linha de comando$ bin/opennlp POSTagger pt-pos-maxent.binQuem casa quer casa .Quem_pron casa_v quer_v casa_s ._. API// load the modelsInputStream modelIn = new FileInputStream("pt-pos-maxent.bin");POSModel model = new POSModel(modelIn);// load the pos taggerPOSTaggerME tagger = new POSTaggerME(model);// load the pos taggerString sent[] = new String[]{"Quem", "casa", "quer", "casa", "."};String tags[] = tagger.tag(sent);
  34. 34. LTasks.com● PLN as a Service: http://www.ltasks.com● Enriquece seu texto com metadados● Gratuito! – API calls gratuitas – Usuários com grandes necessidades podem aumentar a cota● Alto desempenho e Alta precisão● Webservice (quase) pronto para uso● SDK para diversas linguagens (em desenvolvimento)
  35. 35. LTasks.com● PLN as a Service: http://www.ltasks.com● Enriquece seu texto com metadados● Gratuito! – API calls gratuitas – Usuários com grandes necessidades podem aumentar a cota● Alto desempenho e Alta precisão● Webservice (quase) pronto para uso● SDK para diversas linguagens (em desenvolvimento)● Experimente hoje mesmo! – http://ltasks.com/2011/08/demo-do-ltasks-para-o-devinsampa/
  36. 36. Referências utilizadas[1] JURAFSKY, D.; MARTIN, J. H. . Speech and Language Processing. 2. ed.: Pearson, 2008.1024 p.[2] COLEN, W. Mini-curso Processamento de linguagens naturais: pondo em prática (inPortuguese), EAIGIME II, August 25-28, 2009[3] Corretor Gramatical CoGrOO: http://cogroo.sourceforge.net[4] CoGrOO Comunidade: http://ccsl.ime.usp.br/cogroo/comunidade/[5] Apache OpenNLP: http://incubator.apache.org/opennlp/[6] LTasks.com: http://ltasks.com
  37. 37. Muito obrigado! Wesley Seidel William Colen @wseidel @wcolen LTasks.com O seu aplicativo entendendo o seu texto.http://devinsampa.com.br

×