processamento automático da língua portuguesa - campus party br 6

Download Processamento Automático da Língua Portuguesa - Campus Party Br 6

If you can't read please download the document

Upload: william-colen

Post on 28-Jun-2015

987 views

Category:

Documents


2 download

TRANSCRIPT

  • 1. Processamento Automtico da Lngua PortuguesaWesley SeidelWilliam Colen@wseidel @wcolen LTasks.comO seu aplicativo entendendo o seu texto.http://www.campus-party.com.br/

2. Agenda Quem somos? O que uma Linguagem Natural? E Processamento de Linguagem Natural (PLN)? Alguns exemplos Lngua versus Dados Por que difcil? Ambiguidade Tarefas PLN Bibliotecas: CoGrOO, OpenNLP e LTask 3. Quem somos? Wesley Seidel William Colen Matemtico Engenheiro Computao Mestre em CC (Quase) mestre em CC Pesquisador Pesquisador Programador Programador Software livre Software livre Empreendedor Empreendedor 4. O que Linguagem Natural? 5. Lngua naturalLngua formal Humana Criada artificialmente Comunicao Matemtica, lgica,computao Falada, escrita ougesticulada Escrita ou digital Rica, viva e natural Universal Estrutura escondida Estrutura evidente Texto de livro Tabela do BD Post em um blog Arquivo XML Tweet Cdigo fonte 6. Processamento de Linguagens Naturais (PLN)Tarefas computacionais que envolvam alinguagem humanaExtrao de informaoComunicao homem-mquina Melhorar comunicao homem-homem... 7. Exemplo: Agente de Conversao Computador de 2001: Uma Odisseia no Espao, de Stanley Kubrick, 1968HAL 9000Reconhecimento de voz, inter- Conversa fluente em ingls pretao de linguagem naturalPlanejamento de dilogo e sn- Leitura de lbiostese de vozArthur C. Clarke estava otimista de quando teramosum sistema de dilogo como o HAL 9000. Masquanto longe estamos disso? 8. Exemplo: traduo automtica Babel Fish uma espcie fictcia na srie O Guia do Mochileiro das Galxias (1978), de Douglas Adams. Traduz instantaneamente de qualquer linguagempara qualquer linguagem. Seria factvel um sistema que fizesse o mesmo queo Babel Fish? Imagine poder traduzir para o nosso idioma ascentenas de milhares de pginas Web que estooriginalmente em idiomas que no dominamos,como o chins, por exemplo? 9. Exemplo: Sistema de respostas Buscar usandoFazer uma palavras chave pergunta completaFcil para O que significa procrastinar?os buscadoresatuais Em que ano foi a primeira Campus Party? Quantas palestras sobre desenvolvimento web foram oferecidas naquele edio?Requer reso- luo de infe- Quanta seda chinesa foi exportada para a rncias, snte-se e resumo de Inglaterra no final do sculo 18?informaes dediversas fontes. O que os cientistas pensam a respeito da clonagem humana? 10. Alguns sistemas que usam PLN 11. Aplicaes: busca semntica http://www.wolframalpha.com/ 12. Aplicaes: busca semntica http://www.google.com/squared/search?q=tea 13. Aplicaes: traduo automticahttp://translate.google.com/translate_s?hl=en&clss=&q=cincia+da+computao&tq=&sl=pt&tl=zh-CN 14. Aplicaes: classificao http://paraondefoimeuvoto.com.br/vereador/celso-jatene 15. Aplicaes: corretor gramaticalhttp://translate.google.com/translate_s?hl=en&clss=&q=cincia+da+computao&tq=&sl=pt&tl=zh-CN 16. Processador deProcessador dedados linguagem Conhecimento da lngua Programa Unix wc - conta total de bytes,palavras e linhas de um arquivo texto. Bytes e linhas processador de dados Palavras processador lingustico 17. Lngua DadosRafael Winter sugere que print tweet.lengthseus seguidores vejam a 128agenda do PalcoPitgoras da CP. print tweet.authorrafael_winterEle ainda lembra quenesse palco haveroprint tweet.datediversas palestras sobre20130124tecnologia. 18. Ambiguidade: problema fundamental O sr. Mendona chegou. em sr., o ponto marca fim de sentena? Quem casa quer casa. quando casa verbo ou substantivo? Eu preparei o pato dela. Eu cozinhei o pato dela. Eu fiz o pato (de plstico?) dela. 19. Tarefas Processamento de Linguagem Segmentador de Sentenas Tokenizador Reconhecedor de Entidades Nomedas Etiquetador Morfolgico Chunker Parser 20. Segmentador de sentenas EntradaO sr. Mendona chegou. Entrego-lhe os documentos. Sada[O sr. Mendona chegou.][Entrego-lhe os documentos.] 21. Tokenizador Entrada[O sr. Mendona chegou.][Entrego-lhe os documentos.] Sada{ [O] [sr.] [Mendona] [chegou] [.] }{ [Entrego] [-lhe] [os] [documentos] [.] } 22. Detector de Entidades Nomeadas EntradaO Red Hot se apresentar em So Paulo , o Wesleyvai no show . SadaBandas PessoasRed Hot WesleyLugaresEventos So Paulo show 23. Etiquetador Morfolgico EntradaQuem casa quer casa . Sada TokenEtiquetaQuempronomecasaverboquerverbocasasubstantivo. pontuao 24. Chunker (Sintagmas) EntradaA Maria vai entregar os documentos ao Pedro. SadaA Maria: SNvai entregar: SVos documentos: SNa: SPo Pedro: SN 25. CoGrOO Extenso Corretor Gramatical para oLibreOffice / Apache OpenOffice Aplica processamento de linguagem natural Sua API pode ser usada por outros projetos Apache 2.0 26. CoGrOO Sugeito As meninaCorretor ortogrfico Corretor gramaticalSugeitoAs menina 27. Arquitetura do CoGrOO Text Sentence SubjectTokenizer Chunker BoundaryVerb (2)(5)Detector (1) Finder (6) GrammarNamePoS ErrorFinder (3) Tagger (4)Detector (7)SuggestionsLexical LanguageError DictionaryModelsPatterns 28. API do CogrOO 4.x Tarefas disponveis Corretor Gramatical Detector de sentenas, Tokenizer ... Obtenha o binrio Download ou Maven (repo prprio) Documentao http://ccsl.ime.usp.br/redmine/projects/cogroo/wiki/How_to 29. API do CogrOO 4.x Analisadores (1/2)// Primeiro criamos o pipe usando as configuraes de idioma: ComponentFactory factory = ComponentFactory.create(new Locale("pt","BR")); AnalyzerI cogroo = factory.createPipe();// Crie um objeto do tipo Document e inclua o texto que ser processado:Document document = new DocumentImpl();document.setText("Um longo texto, com diversos pargrafos e sentenas.");// Execute os anotadorescogroo.analyze(document); 30. API do CogrOO 4.xAnalisadores (2/2)// Usando os getters do documento possvel obter as anotaes:for (Sentence sentence : document.getSentences()) { // lista de sentenassentence.getStart(); sentence.getEnd(); // caracteres onde a sentena comea e terminasentence.getText(); // texto da sentena// Tokensfor (Token token : sentence.getTokens()) { // lista de tokenstoken.getStart(); token.getEnd(); // caracteres onde o token comea e terminatoken.getLexeme(); // o texto do tokentoken.getLemmas(); // um array com os possveis lemas para o par lexeme+postagtoken.getPOSTag(); // classe morfolgica de acordo com o contextotoken.getFeatures(); // gnero, nmero, tempo etc}// Chunksfor (Chunk chunk : sentence.getChunks()) { // lista de chunkschunk.getStart(); chunk.getEnd(); // ndice do token onde o chunk comea e do token onde eleterminachunk.getTag(); // the chunk tagchunk.getTokens(); // a list with the covered tokens}// Structurefor (SyntacticChunk structure : sentence.getSyntacticChunks()) { // lista de SyntacticChunksstructure.getStart(); structure.getEnd(); // ndice do token onde o structure comea e do tokenonde ele terminastructure.getTag(); // the structure tagstructure.getTokens(); // a list with the covered tokens} 31. API do CogrOO 4.x AnalisadoresFlat structure for: A moa bonita chegou hoje de carro novo.Alemma[o]tag[DET_F_S_]moa lemma[moo] 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_]carrolemma[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 nvel Algoritmos de aprendizado de mquina (entropia, redes neurais) Treinamento, avaliao e execuo Diversos modelos prontos para uso, inclusiveportugus http://incubator.apache.org/opennlp/ 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 a modelInputStream 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. LTasks.com PLN as a Service: http://www.ltasks.com Enriquece seu texto com metadados Gratuito! API calls gratuitas Usurios com grandes necessidades podem aumentar a cota Alto desempenho e Alta preciso Webservice (quase) pronto para uso SDK para diversas linguagens (em desenvolvimento) Experimente hoje mesmo! 35. Referncias 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 prtica (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 36. Muito obrigado!Wesley SeidelWilliam Colen@wseidel @wcolen LTasks.comO seu aplicativo entendendo o seu texto.http://www.campus-party.com.br/