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

Post on 29-Jun-2015

918 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

WEB 2.0

 

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...

Mercado Livre

Anatomia de um Review

Passos

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

Preparação de dados

Pré-processamento

Classificação

Validação e resultados

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

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

Uma imagem vale mais

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

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!

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

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

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)

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.']

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.']]

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')]

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

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

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,

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?

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

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)]

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

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

Treinando os Classificadores

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

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!

Obrigado!

Perguntas?

Contato: paulo.alem@gmail.com

top related