SlideShare uma empresa Scribd logo
1 de 37
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
Bio
●   Wesley Seidel             ●   William Colen
       –   Matemático                –   Engenheiro
       –   Pesquisador               –   Pesquisador
       –   Programador               –   Programador
       –   Software livre            –   Software livre
       –   Empreendedor              –   Empreendedor
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
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
                      ...
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 voz


Arthur C. Clarke estava otimista de quando teríamos
um sistema de diálogo como o HAL 9000. Mas
quanto longe estamos disso?
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 de
diversas fontes.
                   ●   O que os cientistas pensam a respeito da
                       clonagem humana?
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?
Dave Bowan: Open the pod bay doors, HAL.
HAL: I'm sorry Dave, I'm afraid I can't do that.

HAL reconhece palavras em    Reconhecimento
                                 de voz
um sinal de áudio                              Fonética e
e gera áudio a partir de                       Fonologia
sequências de palavras        Síntese de voz



Contrações: I'm, I can't
                                               Morfologia
Interpreta variações: doors (plural)

HAL deve saber que “I'm I do, sorry that
afraid Dave I'm can't.” não teria sentido       Sintaxe
para Dave
Ordem, afirmação ou pergunta?
HAL ainda deve interpretar o que Dave
deseja 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:
   –   I'm sorry, I'm afraid            Pragmática
                                        (ou etiqueta
   –   I can't (no lugar de I won't)     do diálogo)
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 Oriental
Composição
               Ocidental         Sul da Europa
 semântica
               Significado de “final” quando
               combinado a “século 18”
Aplicações: busca semântica




http://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ática




http://translate.google.com/translate_s?hl=en&clss=&q=ciência+da+computação&tq=&sl=pt&tl=zh-CN
Aplicações: corretor gramatical




http://translate.google.com/translate_s?hl=en&clss=&q=ciência+da+computação&tq=&sl=pt&tl=zh-CN
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
Língua                       Dados

O Plínio Balduino gostou   print tweet.length
do nível da programação       81
do evento para
desenvolvedores            print tweet.author
DevInSampa.                   p_balduino
Ele comentou isto dia 26   print tweet.date
de julho no Twitter. O        20110726
pessoal do DevInSampa
gostou e retweetou.
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.
Tarefas Processamento de Linguagem
●   Segmentador de Sentenças
●   Tokenizador
●   Reconhecedor de Entidades Nomedas
●   Etiquetador Morfológico
●   Chunker
●   Parser
    …
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.]
Tokenizador
●   Entrada
        [O sr. Mendonça chegou.]
        [Entrego-lhe os documentos.]
●   Saída
        { [O] [sr.] [Mendonça] [chegou] [.] }
        { [Entrego] [-lhe] [os] [documentos] [.] }
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
Etiquetador Morfológico
●   Entrada
        Quem casa quer casa .
●   Saída
                 Token        Etiqueta
            Quem          pronome
            casa          verbo
            quer          verbo
            casa          substantivo
            .             pontuação
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
CoGrOO
●   Extensão Corretor Gramatical LGPL para o
    LibreOffice / Apache OpenOffice
●   Aplica processamento de linguagem natural
●   Sua API pode ser usada por outros projetos
CoGrOO
     Sugeito               As menina




Corretor ortográfico   Corretor gramatical


      Sugeito              As menina
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
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
API do CogrOO 3.x
Corretor Gramatical
// instantiate the grammar checker passing the configuration
Cogroo theCogroo = new Cogroo(config);

// check the text to get the errors
List<Mistake> erros = theCogroo.checkText(input);
//p rint error details
for (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 + "] ");
      }
}
API do CogrOO 3.x
Analisadores
// check the text to get the errors and the analysis result
CheckerResult results = theCogroo.analyseAndCheckText(input);
//lets show the flat structure
System.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())+"]");
    )
)
API do CogrOO 3.x
 Analisadores
Flat 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_]
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/
Apache OpenNLP
 Linha de comando
$ bin/opennlp POSTagger pt-pos-maxent.bin
Quem casa quer casa .

Quem_pron casa_v quer_v casa_s ._.


 API
// load the models
InputStream modelIn = new FileInputStream("pt-pos-maxent.bin");
POSModel model = new POSModel(modelIn);

// load the pos tagger
POSTaggerME tagger = new POSTaggerME(model);

// load the pos tagger
String sent[] = new String[]{"Quem", "casa", "quer", "casa", "."};
String tags[] = tagger.tag(sent);
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)
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/
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 (in
Portuguese), 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
Muito obrigado!


        Wesley Seidel               William Colen
        @wseidel                    @wcolen




                                      LTasks.com
                           O seu aplicativo entendendo o seu texto.
http://devinsampa.com.br

Mais conteúdo relacionado

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

Semelhante a Processamento Automático da Língua Portuguesa: DevInSampa 2011 (20)

Programação lógica
Programação lógicaProgramação lógica
Programação lógica
 
Ferramentas digitais para tradução
Ferramentas digitais para traduçãoFerramentas digitais para tradução
Ferramentas digitais para tradução
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
 
Explorando O Potencial Das Linguagens De Programação Open Source
Explorando O Potencial Das Linguagens De Programação Open SourceExplorando O Potencial Das Linguagens De Programação Open Source
Explorando O Potencial Das Linguagens De Programação Open Source
 
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdfPARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
 
Cogroo Google Oss Jam Sao Paulo V01
Cogroo Google Oss Jam Sao Paulo V01Cogroo Google Oss Jam Sao Paulo V01
Cogroo Google Oss Jam Sao Paulo V01
 
Brandon, um ChatBot com NLP em Ruby
Brandon, um ChatBot com NLP em RubyBrandon, um ChatBot com NLP em Ruby
Brandon, um ChatBot com NLP em Ruby
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
Apresent dosvox janice
Apresent dosvox janiceApresent dosvox janice
Apresent dosvox janice
 
Apresent dosvox janice
Apresent dosvox janiceApresent dosvox janice
Apresent dosvox janice
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
Tutorial em Processamento de Linguagem Natural
Tutorial em Processamento de Linguagem NaturalTutorial em Processamento de Linguagem Natural
Tutorial em Processamento de Linguagem Natural
 
Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
As ferramentas, os percursos e as estratégias de tradução no universo digital...
As ferramentas, os percursos e as estratégias de tradução no universo digital...As ferramentas, os percursos e as estratégias de tradução no universo digital...
As ferramentas, os percursos e as estratégias de tradução no universo digital...
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
 
Traducao de software livre
Traducao de software livreTraducao de software livre
Traducao de software livre
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 

Mais de William Colen

Cogroo Comunidade no FISL XI
Cogroo Comunidade no FISL XICogroo Comunidade no FISL XI
Cogroo Comunidade no FISL XI
William Colen
 

Mais de William Colen (6)

Falando com a máquina: Desenvolvimento de assistentes pessoais virtuais
Falando com a máquina: Desenvolvimento de assistentes pessoais virtuaisFalando com a máquina: Desenvolvimento de assistentes pessoais virtuais
Falando com a máquina: Desenvolvimento de assistentes pessoais virtuais
 
CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13
 
Cogroo Comunidade no FISL XI
Cogroo Comunidade no FISL XICogroo Comunidade no FISL XI
Cogroo Comunidade no FISL XI
 
Programabilida de BrOffice.org - Fisl 11
Programabilida de BrOffice.org - Fisl 11Programabilida de BrOffice.org - Fisl 11
Programabilida de BrOffice.org - Fisl 11
 
Criando extensões para o BrOffice (Serpro 2010)
Criando extensões para o BrOffice (Serpro 2010)Criando extensões para o BrOffice (Serpro 2010)
Criando extensões para o BrOffice (Serpro 2010)
 
Tutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOfficeTutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOffice
 

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

  • 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. Bio ● Wesley Seidel ● William Colen – Matemático – Engenheiro – Pesquisador – Pesquisador – Programador – Programador – Software livre – Software livre – Empreendedor – Empreendedor
  • 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. 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. 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 voz Arthur C. Clarke estava otimista de quando teríamos um sistema de diálogo como o HAL 9000. Mas quanto longe estamos disso?
  • 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 de diversas fontes. ● O que os cientistas pensam a respeito da clonagem humana?
  • 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. Dave Bowan: Open the pod bay doors, HAL. HAL: I'm sorry Dave, I'm afraid I can't do that. HAL reconhece palavras em Reconhecimento de voz um sinal de áudio Fonética e e gera áudio a partir de Fonologia sequências de palavras Síntese de voz Contrações: I'm, I can't Morfologia Interpreta variações: doors (plural) HAL deve saber que “I'm I do, sorry that afraid Dave I'm can't.” não teria sentido Sintaxe para Dave
  • 9. Ordem, afirmação ou pergunta? HAL ainda deve interpretar o que Dave deseja 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: – I'm sorry, I'm afraid Pragmática (ou etiqueta – I can't (no lugar de I won't) do diálogo)
  • 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 Oriental Composição Ocidental Sul da Europa semântica Significado de “final” quando combinado a “século 18”
  • 12. Aplicações: busca semântica http://www.powerset.com/explore/go/What-year-Elvis-Presley-died?
  • 13. Aplicações: busca semântica http://www.google.com/squared/search?q=tea
  • 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. Língua Dados O Plínio Balduino gostou print tweet.length do nível da programação 81 do evento para desenvolvedores print tweet.author DevInSampa. p_balduino Ele comentou isto dia 26 print tweet.date de julho no Twitter. O 20110726 pessoal do DevInSampa gostou e retweetou.
  • 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. Tarefas Processamento de Linguagem ● Segmentador de Sentenças ● Tokenizador ● Reconhecedor de Entidades Nomedas ● Etiquetador Morfológico ● Chunker ● Parser …
  • 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. Tokenizador ● Entrada [O sr. Mendonça chegou.] [Entrego-lhe os documentos.] ● Saída { [O] [sr.] [Mendonça] [chegou] [.] } { [Entrego] [-lhe] [os] [documentos] [.] }
  • 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. Etiquetador Morfológico ● Entrada Quem casa quer casa . ● Saída Token Etiqueta Quem pronome casa verbo quer verbo casa substantivo . pontuação
  • 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. 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. CoGrOO Sugeito As menina Corretor ortográfico Corretor gramatical Sugeito As menina
  • 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. 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. API do CogrOO 3.x Corretor Gramatical // instantiate the grammar checker passing the configuration Cogroo theCogroo = new Cogroo(config); // check the text to get the errors List<Mistake> erros = theCogroo.checkText(input); //p rint error details for (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. API do CogrOO 3.x Analisadores // check the text to get the errors and the analysis result CheckerResult results = theCogroo.analyseAndCheckText(input); //lets show the flat structure System.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. API do CogrOO 3.x Analisadores Flat 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. 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. Apache OpenNLP Linha de comando $ bin/opennlp POSTagger pt-pos-maxent.bin Quem casa quer casa . Quem_pron casa_v quer_v casa_s ._. API // load the models InputStream modelIn = new FileInputStream("pt-pos-maxent.bin"); POSModel model = new POSModel(modelIn); // load the pos tagger POSTaggerME tagger = new POSTaggerME(model); // load the pos tagger String sent[] = new String[]{"Quem", "casa", "quer", "casa", "."}; String tags[] = tagger.tag(sent);
  • 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. 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. 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 (in Portuguese), 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. Muito obrigado! Wesley Seidel William Colen @wseidel @wcolen LTasks.com O seu aplicativo entendendo o seu texto. http://devinsampa.com.br