ambiente de extração e avaliaçao de opiniões na web

28
Ambiente de Extração e Avaliação de Opiniões na Web Danielle Costa Rangel Eduardo Gomes de Souza Paulo Rafael Migueis Alem Projeto final de graduação em Sistemas de Informação Orientação: Valeria Menezes Bastos Painel apresentado In: XXIX CILAMCE, Iberian Latin American Congress on Computation Methods in Engineering, 2009, Búzios, Brasil

Upload: paulo-alem

Post on 29-Jun-2015

918 views

Category:

Technology


1 download

TRANSCRIPT

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

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

Danielle Costa RangelEduardo Gomes de SouzaPaulo Rafael Migueis Alem

Projeto final de graduação em Sistemas de InformaçãoOrientação: Valeria Menezes Bastos

Painel apresentado In: XXIX CILAMCE, Iberian Latin American Congress on Computation Methods in Engineering, 2009, Búzios, Brasil

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

Wisdom of Crowds

O que é Inteligência Coletiva? Pesquisas, mercado financeiro

Tomada de decisão e inferência Como e por que tomamos as decisões que

tomamos Aprendizado de Maquinas Criando agentes racionais

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

WEB 2.0

 

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

Um Objetivo Simples

Inferir uma polaridade baseado numa frase.

Tipos de Avaliação: A nível de documento A nivel de sentença Comparativas

Qual usar? Depende...

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

Mercado Livre

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

Anatomia de um Review

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

Passos

O objetivo pode ser simples, mas a jornada...Resumidamente:

Preparação de dados

Pré-processamento

Classificação

Validação e resultados

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

Preparação dos dados

Corpora Gutenberg, Brown, Floresta Sintáctica, Reuters, Mac

Morpho...

Precisamos construir um Corpus É só um monte de texto categorizado

Quais as reais necessidades? Tamanho é documento

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

WebCrawling

Um agente inteligente

Exemplos Googlebot, Yahoo! Slurp, MSNBot...

Bem fácil e divertido de criar, mas pode ficar bem complicado

MultiThreading, select, fork, distribuído, armadilhas...

No problema, nao queremos competir com o Google

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

Uma imagem vale mais

A mágica do Reactor Pool de deferreds, chamadas assíncronas e callbacks Extração, expressões regulares e parsers

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

Sobre a Base de Dados

+150 000 páginas

4.7 GB em disco(SQLite)

45635 páginas de produtos

39655 reviews

Mas isso ainda nao é um corpus!

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

Pré-Processamento

O que acontece aqui? Quase tudo. Gostaria que meus livros tivessem uma função de

busca com CTRL+F...

Scrapping Onde extraímos o que nos interessa

NLP Olhando texto com significado e obtendo relações

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

Scrapper

Mas que bagunça... A base de dados é só um monte de HTMLs!

E por que não expressões regulares? O sobrinho que sabe fazer páginas e o Frontpage são

seus inimigos

Xpath, CSS Selectors e HTML/XML parsers BeautifulSoup, Lxml, Web::Scraper...

Gerando um Corpus

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

NLP

Natural Language Processing O que é? É uma área bem abrangente Taggers, parsers, chunkers, lexing, stemming,

classificação, arvores sintaticas, parsers... a lista é grande

NLTK Um framework bem prático. Ótima maneira de

aprender sobre NLP NLTK Book(http://www.nltk.org/book)

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

Sentenças

Separando Sentenças Punkt Supervisionado

Exemplo: ”Quando eu era jovem, pensava que o dinheiro era a

coisa mais importante do mundo. Hoje, tenho certeza.”

=>['Quando eu era jovem, pensava que o dinheiro era a

coisa mais importante do mundo.', 'Hoje, tenho certeza.']

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

Palavras

Mesmo conceito, aplicado em sentenças Punkt mais uma vez

Exemplo:”Quando eu era jovem, pensava que o dinheiro era a

coisa mais importante do mundo. Hoje, tenho certeza.”

=>[['Quando', 'eu', 'era', 'jovem', ',', 'pensava', 'que', 'o',

'dinheiro', 'era', 'a', 'coisa', 'mais', 'importante', 'do', 'mundo.'],

['Hoje', ',', 'tenho', 'certeza.']]

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

POS Tagging

Português Substantivo, adjetivo, pronome, advérbio...

Contexto Posicão e significado

O POS Tagger vai fazer o trabalho sujo:"O aluno sempre presente"=>[('O', 'ART'), ('aluno', 'N'), ('sempre', 'ADV'),

('presente', 'ADJ')]“A criança ganhou um presente”=>[('A', 'ART'), ('criança’, 'NN'), ('ganhou', 'V'), ('um',

'ART'), ('presente', 'N')]

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

O Tagger Mais Simples do Mundo

O POS Tagger nao é mágico Como ele consegue determinar o tipo de classe

gramatical? É aquilo que o Adriano não gosta de fazer Mac Morpho Características do Mac Morpho

Precisão de 0.20843979451870578

N ART NPROP PREP V PREP|+ , ADJ ADV KC PCP "

236462 151891 114318 104364 98056 78274 68494 53372 30653 28262 23092 21069

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

Vamos complicar

0.20 de precisão é QUASE inútil, para qualquer proposito prático

Precisamos usar o corpus de maneira eficiente Ngram Taggers “N-Grams são tuplas de palavras que são encontram

juntas repetidas vezes” Unigram Tagger Analiza uma palavra por vez

Bigram Tagger Analiza de duas em duas

Trigram Tagger Analiza Três... E geralmente pára por aqui mesmo

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

Combinando Taggers

O Problema de analisar muito contexto Dificuldade em classificar

Backoffs! Ou ”Quando você esgotar as possibilidades, pode vir

falar comigo” A Mistura final: Um BigramTagger com backoff para um

UnigramTagger com backoff para TaggerDefault Para Substantivos

Precisão 0.90597348107904574,

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

Extração de Features

Reforçando: definição de Feature Para que? Não necessariamente saberemos de antemão o que

estamos avaliando Hidden Features

Exemplo:“A bateria tem curta duração.”

Qual o feature nessa sentença?

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

Label Sequencial Rules

Minerando sequências com a frase anterior era possível obter

[(A,ART),(bateria,N),(tem,V)][(bateria,N),(tem,V),(curta,ADJ)]

Onde o feature em questão é a bateria O que fazer com isso? Guarde [(A,ART),($feature,N),(tem,V)] [($feature,N),(tem,V),(curta,ADJ)]

Com essas LSRs fica fácil descobrir features

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

Minerando LSRs Com o N95

Seeds =['interface', 'camera', 'gps', 'wifi', 'bluetooth', 'bateria', 'tela', 'memoria']

[($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)]

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

Usando LSRs em Outros Reviews

Usando as LSRs nos reviews de Iphone tivemos resultados satisfatórios

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

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

Classificação

Algoritmos disponíveis SVM, bayes, redes neurais, arvores de decisão...

Os Escolhidos: Naïve Bayes e Arvores de Decisão Por que Naïve Bayes? Por que Árvores de Decisão? E a análise linguística, entra em algum lugar? Classificação → Positivo ou Negativo Neutro complicaria

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

Treinando os Classificadores

O treinamento é simples É só ter a entrada organizada!

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

Classificando

”Achei a bateria do iphone muito fraca”=> 'neg' Ambos classificadores obtiveram a mesma

resposta A precisão dos dois é parecida, com leve vantagem

para o Naive Bayes(0,916666667) e Árvore de Decisão(0,8888889)

Agora ja é sumarizar as opiniões!

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

Obrigado!

Perguntas?

Contato: [email protected]