Ambiente de Extração e Avaliaçao de Opiniões na Web

1,079 views
1,008 views

Published on

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,079
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Ambiente de Extração e Avaliaçao de Opiniões na Web

  1. 1. Ambiente de Extração e Avaliação de Opiniões na Web
  2. 2. Wisdom of Crowds <ul><li>O que é Inteligência Coletiva? </li></ul><ul><ul><li>Pesquisas, mercado financeiro </li></ul></ul><ul><li>Tomada de decisão e inferência </li></ul><ul><ul><li>Como e por que tomamos as decisões que tomamos </li></ul></ul><ul><li>Aprendizado de Maquinas </li></ul><ul><ul><li>Criando agentes racionais </li></ul></ul>
  3. 3. WEB 2.0 <ul><li>  </li></ul>
  4. 4. Um Objetivo Simples <ul><li>Inferir uma polaridade baseado numa frase. </li></ul><ul><li>Tipos de Avaliação: </li></ul><ul><ul><li>A nível de documento </li></ul></ul><ul><ul><li>A nivel de sentença </li></ul></ul><ul><ul><li>Comparativas </li></ul></ul><ul><li>Qual usar? Depende... </li></ul>
  5. 5. Mercado Livre
  6. 6. Anatomia de um Review
  7. 7. Passos <ul><li>O objetivo pode ser simples, mas a jornada... </li></ul><ul><li>Resumidamente: </li></ul><ul><li>Preparação de dados </li></ul><ul><li>Pré-processamento </li></ul><ul><li>Classificação </li></ul><ul><li>Validação e resultados </li></ul>
  8. 8. Preparação dos dados <ul><li>Corpora </li></ul><ul><ul><li>Gutenberg, Brown, Floresta Sintáctica, Reuters, Mac Morpho... </li></ul></ul><ul><li>Precisamos construir um Corpus </li></ul><ul><ul><li>É só um monte de texto categorizado </li></ul></ul><ul><li>Quais as reais necessidades? </li></ul><ul><ul><li>Tamanho é documento </li></ul></ul>
  9. 9. WebCrawling <ul><li>Um agente inteligente </li></ul><ul><li>Exemplos </li></ul><ul><ul><li>Googlebot, Yahoo! Slurp, MSNBot... </li></ul></ul><ul><li>Bem facil e divertido de criar, mas pode ficar bem complicado </li></ul><ul><ul><li>MultiThreading, select, fork, distribuído, armadilhas... </li></ul></ul><ul><li>No problemo, nao queremos competir com o Google </li></ul>
  10. 10. Uma imagem vale mais <ul><li>A mágica do Reactor </li></ul><ul><ul><li>Pool de deferreds, chamadas assíncronas e callbacks </li></ul></ul><ul><ul><li>Extração, expressões regulares e parsers </li></ul></ul>
  11. 11. Sobre a Base de Dados <ul><li>+150 000 páginas </li></ul><ul><li>4.7 GB em disco(SQLite) </li></ul><ul><li>45635 paginas de produtos </li></ul><ul><li>39655 reviews </li></ul><ul><li>Mas isso ainda nao é um corpus! </li></ul>
  12. 12. Pré-Processamento <ul><li>O que acontece aqui? Quase tudo. </li></ul><ul><ul><li>Gostaria que meus livros tivessem uma função de busca com CTRL+F... </li></ul></ul><ul><li>Scrapping </li></ul><ul><ul><li>Onde extraímos o que nos interessa </li></ul></ul><ul><li>NLP </li></ul><ul><ul><li>Olhando texto com significado e obtendo relações </li></ul></ul>
  13. 13. Scrapper <ul><li>Mas que bagunça... </li></ul><ul><ul><li>A base de dados é só um monte de HTMLs! </li></ul></ul><ul><li>E por que não expressões regulares? </li></ul><ul><ul><li>O sobrinho que sabe fazer páginas e o Frontpage são seus inimigos </li></ul></ul><ul><li>Xpath, CSS Selectors e HTML/XML parsers </li></ul><ul><ul><li>BeautifulSoup, Lxml, Web::Scraper... </li></ul></ul><ul><li>Gerando um Corpus </li></ul>
  14. 14. NLP <ul><li>Natural Language Processing </li></ul><ul><li>O que é? </li></ul><ul><li>É uma área bem abrangente </li></ul><ul><ul><li>Taggers, parsers, chunkers, lexing, stemming, classificação, arvores sintaticas, parsers... a lista é grande </li></ul></ul><ul><li>NLTK </li></ul><ul><ul><li>Um framework bem prático. Ótima maneira de aprender sobre NLP </li></ul></ul><ul><ul><li>NLTK Book(http://www.nltk.org/book) </li></ul></ul>
  15. 15. Sentenças <ul><li>Separando Sentenças </li></ul><ul><li>Punkt </li></ul><ul><ul><li>Supervisionado </li></ul></ul><ul><li>Exemplo: </li></ul><ul><li>” Quando eu era jovem, pensava que o dinheiro era a coisa mais importante do mundo. Hoje, tenho certeza.” </li></ul><ul><li>=> </li></ul><ul><li>['Quando eu era jovem, pensava que o dinheiro era a coisa mais importante do mundo.', </li></ul><ul><li>'Hoje, tenho certeza.'] </li></ul>
  16. 16. Palavras <ul><li>Mesmo conceito, aplicado em sentenças </li></ul><ul><ul><li>Punkt mais uma vez </li></ul></ul><ul><li>Exemplo: </li></ul><ul><li>” Quando eu era jovem, pensava que o dinheiro era a coisa mais importante do mundo. Hoje, tenho certeza.” </li></ul><ul><li>=> </li></ul><ul><li>[['Quando', 'eu', 'era', 'jovem', ',', 'pensava', 'que', 'o', 'dinheiro', 'era', 'a', 'coisa', 'mais', 'importante', 'do', 'mundo.'], </li></ul><ul><li>['Hoje', ',', 'tenho', 'certeza.']] </li></ul>
  17. 17. POS Tagging <ul><li>Portugues </li></ul><ul><ul><li>Substantivo, adjetivo, pronome, advérbio... </li></ul></ul><ul><li>Contexto </li></ul><ul><ul><li>Posicão e significado </li></ul></ul><ul><li>O POS Tagger vai fazer o trabalho sujo: </li></ul><ul><li>&quot;O aluno sempre presente&quot; </li></ul><ul><li>=>[('O', 'ART'), ('aluno', 'N'), ('sempre', 'ADV'), ('presente', 'ADJ')] </li></ul><ul><li>“ A criança ganhou um presente”=> </li></ul><ul><li>[('A', 'ART'), ('criança’, 'NN'), ('ganhou', 'V'), ('um', 'ART'), ('presente', 'N')] </li></ul>
  18. 18. O Tagger Mais Simples do Mundo <ul><li>O POS Tagger nao é magico </li></ul><ul><ul><li>Como ele consegue determinar o tipo de classe gramatical? É aquilo que o Adriano não gosta de fazer </li></ul></ul><ul><li>Mac Morpho </li></ul><ul><li>Características do Mac Morpho </li></ul><ul><li>Precisão de 0.20843979451870578 </li></ul>N ART NPROP PREP V PREP|+ , ADJ ADV KC PCP &quot; 236462 151891 114318 104364 98056 78274 68494 53372 30653 28262 23092 21069
  19. 19. Vamos complicar <ul><li>0.20 de precisão é QUASE inútil, para qualquer proposito prático </li></ul><ul><ul><li>Precisamos usar o corpus de maneira eficiente </li></ul></ul><ul><li>Ngram Taggers </li></ul><ul><ul><li>“ N-Grams são tuplas de palavras que são encontram juntas repetidas vezes” </li></ul></ul><ul><li>Unigram Tagger </li></ul><ul><ul><li>Analiza uma palavra por vez </li></ul></ul><ul><li>Bigram Tagger </li></ul><ul><ul><li>Analiza de duas em duas </li></ul></ul><ul><li>Trigram Tagger </li></ul><ul><ul><li>Analiza Três... E geralmente para por aqui mesmo </li></ul></ul>
  20. 20. Combinando Taggers <ul><li>O Problema de analisar muito contexto </li></ul><ul><ul><li>Dificuldade em classificar </li></ul></ul><ul><li>Backoffs! </li></ul><ul><ul><li>Ou ”Quando você esgotar as possibilidades, pode vir falar comigo” </li></ul></ul><ul><li>A Mistura final: </li></ul><ul><ul><li>Um BigramTagger com backoff para um UnigramTagger com backoff para TaggerDefault Para Substantivos </li></ul></ul><ul><li>Precisão 0 . 90597348107904574 , </li></ul>
  21. 21. Extração de Features <ul><li>Reforçando: definição de Feature </li></ul><ul><li>Para que? </li></ul><ul><ul><li>Não necessariamente saberemos de antemão o que estamos avaliando </li></ul></ul><ul><ul><li>Hidden Features </li></ul></ul><ul><li>Exemplo: </li></ul><ul><li>“ A bateria tem curta duração.” </li></ul><ul><ul><li>Qual o feature nessa sentença? </li></ul></ul>
  22. 22. Label Sequencial Rules <ul><li>Minerando sequências com a frase anterior era possivel obter </li></ul><ul><ul><li>[(A,ART),(bateria,N),(tem,V)] </li></ul></ul><ul><ul><li>[(bateria,N),(tem,V),(curta,ADJ)] </li></ul></ul><ul><li>Onde o feature em questao é a bateria </li></ul><ul><li>O que fazer com isso? Guarde </li></ul><ul><ul><li>[(A,ART),($feature,N),(tem,V)] </li></ul></ul><ul><ul><li>[($feature,N),(tem,V),(curta,ADJ)] </li></ul></ul><ul><li>Com essas LSRs fica facil descobrir features </li></ul>
  23. 23. Minerando LSRs Com o N95 <ul><li>Seeds = ['interface', 'camera', 'gps', 'wifi', 'bluetooth', 'bateria', 'tela', 'memoria'] </li></ul>[($feature,NN)(se,PROPESS)(tiver,V)] [(gps,NN)($feature,NN)(bluetooth,NN)] [(de,PREP)($feature,NN)(e,KC)] [($feature,NN)(não,NN)(tem,V)] [($feature,N)(grande,ADJ)(de,PREP|+)] [($feature,NN)(roda,N)(bem,ADV)] [(excelente,ADJ)($feature,NN)] [($feature,N)(branca,ADJ)(c,N)] [($feature,N)(mas,KC)(vale,V)] [($feature,N)(que,PRO-KS-REL)(neste,NN)] [($feature,NN)(não,NN)(estão,NN)] [($feature,N)(apesar,PREP)(de,PREP)] [($feature,NN)(e,KC)(infravermelho,ADJ)] [($feature,NN)(muito,ADV)(instável,NN)]
  24. 24. Usando LSRs em Outros Reviews <ul><li>Usando as LSRs nos reviews de Iphone tivemos resultados satisfatorios </li></ul>Feature Frequência Feature Frequência Feature Frequência áudio 252 fácil 84 Ladrões 42 ipod 210 som 84 Ouvidos 42 tela 168 installer 84 Intuitivo 42 apple 126 sensor 84 Rápido 42 touchscreen 126 conexão 84
  25. 25. Classificação <ul><li>Algoritmos disponiveis </li></ul><ul><ul><li>SVM, bayes, redes neurais, arvores de decisão... </li></ul></ul><ul><li>Os Escolhidos: Naive Bayes e Arvores de Decisão </li></ul><ul><li>Por que Naive Bayes? </li></ul><ul><li>Por que Arvores de Decisão? </li></ul><ul><li>E a análise linguística, entra em algum lugar? </li></ul><ul><li>Classificação -> Positivo ou Negativo </li></ul><ul><ul><li>Neutro complicaria </li></ul></ul>
  26. 26. Treinando os Classificadores <ul><li>O treinamento é simples </li></ul><ul><ul><li>É so ter a entrada organizada! </li></ul></ul>
  27. 27. Classificando <ul><li>” Achei a bateria do iphone muito fraca” </li></ul><ul><li>=> 'neg' </li></ul><ul><li>Ambos classificadores obtiveram a mesma resposta </li></ul><ul><li>A precisão dos dois é parecida, com leve vantagem para o Naive Bayes ( 0,916666667) e Árvore de Decisão(0,8888889) </li></ul><ul><li>Agora ja é sumarizar as opiniões! </li></ul>
  28. 28. Obrigado! Perguntas? Contato: paulo.alem@gmail.com

×