15
1.
INTRODUÇÃO
1.1.
Motivação
A capacidade de incremento tecnológico em âmbito computacional mostrou-se promissora
desde o princípio da evolução dos computadores. Já na primeira década do século XXI foi
alcançado o patamar de armazenamento de vários gigabytes em dispositivos portáteis e
terabytes em computadores pessoais, e tudo isso a um custo acessível, o que antes seria
inimaginável. Consequência direta deste processo, a capacidade de produção e
armazenamento de dados, assim como a disponibilização e acesso às informações, propicia o
que já em 1982, foi anunciado por John Naisbitt como questão a ser refletida: “Estamos nos
afogando em informações, mas com sede de conhecimento” (SANTOS, 2009).
Vivenciamos nas últimas décadas o aumento tanto de recursos e informações disponíveis na
Web quanto de usuários conectados e atentos ao que se passa cotidianamente. Somente no
Brasil, segundo o IBOPE Nielsen Online1 (2011), o acesso à Internet em qualquer ambiente
(domicílios, trabalho, escolas, lan houses ou outros locais) atingiu 77,8 milhões de pessoas no
segundo trimestre de 2011. Esse número é 5,5% superior ao do segundo trimestre de 2010 e
20% maior que o do segundo trimestre de 2009, conforme mostra a Figura 1.
Figura 1 - Evolução de usuários da Web, no Brasil.
Fonte: IBOPE Nielsen Online, 2011.
1
IBOPE Nielsen Online é uma joint-venture entre o IBOPE e a Nielsen Online, líder mundial em mensuração do
comportamento dos usuários da Internet. Através de uma tecnologia proprietária, é capaz de medir o
comportamento dos usuários, bem como a atividade publicitária on-line, e fornecer dados sobre a Internet
mundial, objetivando entender o comportamento dos usuários e os negócios que podem ser feitos pela Web.
16
Fenômeno mais recente, com crescente aumento de adeptos às redes sociais, tais como Orkut
(ORKUT, 2011), Facebook (FACEBOOK, 2011), a Web passou a ser espaço não só de
compartilhamento de informações, mas também vitrine de satisfação, positiva ou negativa, de
clientes/usuários de empresas. Essa mesma pesquisa mostrou que na subcategoria
Comunidades, em que se classificam os sites de redes sociais, fóruns, blogs, microblogs e
outras páginas de relacionamento, chegou a 39,3 milhões de pessoas, equivalente a um
alcance de 87% dos internautas de agosto, posiciona os sites sociais como a terceira
subcategoria em número de usuários e mantendo o Brasil como o país com maior alcance em
sites de comunidades entre os países que utilizaram a mesma metodologia (IBOPE, 2011).
Trata-se de uma imensa massa de dados, armazenados sob as mais variadas formas, tais como
arquivos de áudio, imagens, vídeos, textos (MARINHO, 2003), os quais são pesquisados e
acessados a partir de milhões de páginas indexadas pelos sistemas de busca (PAL, 2000). O
produto da intensa interação dos usuários nas redes sociais e em sites que utilizam sistemas de
recomendação é o armazenamento e disponibilização de um material composto pela opinião e
sentimento dos usuários (SANTOS, 2010).
Isto porque, apesar da aparente facilidade de acesso à Internet, é justamente esta infinidade de
informações disponibilizadas na Internet, e da mesma forma, inúmeros produtos a venda nos
sites de comércio eletrônico, que encontrar o que realmente se deseja não é tarefa fácil
(MARINHO, 2003). Esse é o campo no qual é aberta área para pesquisa de como encontrar
formas de aperfeiçoar as buscas em sistemas de recomendação, já que é neles que se
encontram informações preciosas dos usuários, suas críticas, sugestões, opiniões essas que são
valiosas, mas que devem ser extraídas e analisadas.
É neste aspecto, conforme o exposto por Braga (2005), que se faz necessária a utilização da
mineração de dados (data mining, em inglês), por ser um conjunto de técnicas utilizadas na
área de Data Warehouse, a qual provê métodos para descobrir padrões em dados, sem a
tendenciosidade e a limitação de uma análise baseada na intuição humana. Se por um lado, é
instrumento pelo qual as organizações possam obter informações sobre seus serviços e
produtos (SANTOS, 2010), por outro, é uma forma pela qual é possível criar ferramentas que
facilitem a busca pelo que realmente se necessita, por parte dos usuários, como nos casos dos
sistemas de recomendação.
17
A mineração de dados é aplicada em diversas áreas de conhecimento e pesquisa acadêmica,
como na Medicina, nas Ciências Sociais, assim como nos setores executivos de organizações.
No Marketing, vem sendo utilizada como ferramenta para descobrir a intenção e opinião dos
clientes. Isto porque, conforme Santos (2010), essa opinião, informal ou formal, dependendo
de onde foi postada, é de extrema importância, pois refletirá o sentimento sem censura do
usuário. O que difere das pesquisas tradicionais, realizada de forma direta com cliente, o que
gerar intimidação ao usuário, fazendo com que o resultado da pesquisa não reflita com
veracidade a opinião e pensamento de forma real.
Dentre os fatores que favoreceram o crescimento da utilização da mineração de dados
destacam-se: a economia estável, o que gerou maior concorrência e formas diferenciadas na
conquista de clientes, e o crescimento das transações comerciais em sites de comércio
eletrônico (Zuchini, 2003). Através da mineração de dados é possível estudar os perfis dos
clientes e assim, traçar as melhores estratégias para vendas e estudos de projeção comercial.
Neste contexto, a mineração de texto encontra relevância como instrumento de análise já que
os clientes utilizam os sistemas de recomendação como espaços para buscar opiniões acerca
de produtos e serviços que lhes interessam, assim como expor suas críticas, comentários e
outras formas de análise de produtos que já foram adquiridos (SANTOS, 2010). Dessa forma,
segundo
Kumar
(2006)
o
mundo
virtual
passa
a
ser
espaço
também
do
chamado marketing viral, ou seja, “boca a boca” entre os clientes, motivo de sucesso ou
fracasso de muitas organizações.
1.2.
Objetivo Geral
O objetivo geral deste estudo é utilizar conceitos e técnicas de processamento de linguagem
natural, tendo como base a biblioteca Natural Language Toolkit (NLTK), buscando encontrar
padrões nos posts do sistema de recomendação do comércio eletrônico da Amazon.
18
1.3.
Objetivos Específicos
Os objetivos específicos são:
Analisar técnicas de mineração de texto;
Aprender a utilização da biblioteca NLTK para processamento de linguagem
natural;
Utilizar técnicas de processamento de texto para extração de informações;
Encontrar padrões nos posts do sistema de recomendação da Amazon.
Desenvolver um protótipo de software que possa rotular os posts com problemas
de serviço.
1.4.
Metodologia
O trabalho é iniciado a partir da análise de processamento de linguagem natural. Como a
extração dos posts será do sistema de recomendação da Amazon, o estudo morfológico e
gramatical é da língua inglesa. Em seguida, é estudada a utilização a biblioteca NLTK, que
permite trabalhar com processamento de linguagem natural, assim como da linguagem de
programação Python. Após esta etapa, são extraídos posts do sistema de recomendação da
Amazon, dentre os quais somente os que possuem opiniões negativas em relação ao serviço e
não em relação ao produto. Então, é buscado um padrão nestes posts que permita classificálos corretamente de acordo com critérios pré-estabelecidos.
1.5.
Organização do Trabalho
Este estudo foi organizado de modo que sejam compreendidas todas as etapas necessárias
para o correto processamento e análise de linguagem natural, esquematizado da seguinte
forma:
19
a) O Capítulo 2 apresenta conceitos e técnicas referentes à Mineração de Dados,
Mineração de Texto e Processamento de Linguagem Natural. Apresenta ainda a
linguagem de programação Python e a Biblioteca NLTK.
b) O Capítulo 3 apresenta a conceituação de Mineração de Dados Sociais em Sistemas de
Recomendação, os posts extraídos do Sistema de Recomendação da Amazon, as
técnicas utilizadas para processamento de Linguagem Natural, o desenvolvimento do
protótipo de sistema e a busca por um padrão nos posts e a análise dos resultados.
c) O capítulo 4 apresenta as conclusões deste trabalho, acerca do uso biblioteca NLTK na
busca de padrões nos posts estudados.
20
2. FUNDAMENTAÇÃO TEÓRICA
Este capítulo pretende apresentar uma abordagem teórica acerca dos conteúdos a serem
desenvolvidos neste trabalho. Para isto buscou-se organizá-lo de forma que os tópicos
apresentem uma linha de raciocínio, facilitando a leitura e compreensão do tema pelo leitor.
Desta forma, o capítulo está organizado da seguinte forma: o tópico 2.1 apresenta definições e
conceitos discutidos por diversos autores sobre dado, informação e conhecimento. O tópico
2.2 apresenta o conceito de Mineração de Dados, motivação de uso, origem da discussão e
definições teóricas. O tópico 2.3 aborda o conceito de Mineração de Dados na Web e suas
sub-categorias: Mineração de Conteúdo, Mineração de Estrutura e Mineração de Uso. No
tópico 2.4 é apresentado o conceito de Mineração de Textos, métodos de extração da
informação e sub-etapas. No tópico 2.5 é apresentado o conceito de Processamento de
Linguagem Natural e a Biblioteca Natural Language Toolkit (NLTK), desenvolvida em
linguagem de programação Python.
2.1.
Dado, Informação e Conhecimento: Definições e Conceitos
Segundo Librelotto at al (2005), a utilização dos termos “dado, informação e conhecimento”
de forma mal definida, em algumas situações em conversas coloquiais, pode resultar em uma
deturpação de distinções técnicas, a ponto que esses termos possam ser vistos como
sinônimos. Logo, esta seção pretende delinear seus significados, de forma a evitar
ambigüidades na seqüência do desenvolvimento deste trabalho.
Park at al. (2003) abordou que dados e conhecimento são simplesmente pontos finais em uma
linha contínua, como sugere a Figura 2 No lado esquerdo, encontra-se o dado; do lado direito,
o conhecimento.
21
Figura 2 - Linha contínua da Interpretação.
Para Librelotto (2005), o dado é uma modelação simples, uma seqüência de símbolos
quantificáveis. Setzer (1999) ampliou a definição de dado, englobando neste conceito texto,
imagens, sons e animações. Considera-se o texto como um dado já que as letras são símbolos
nos qual é possível extrair informação.
Segundo Setzer (1999), um dado é necessariamente uma entidade matemática e, desta forma,
puramente sintática. Isto significa que os dados podem ser totalmente descritos através de
representações formais, estruturais. No processamento computacional, trechos de um texto
podem ser ligados virtualmente a outros trechos, variando a forma de acordo com a linguagem
de programação utilizada, mas basicamente o que se utiliza é endereços da unidade de
armazenamento. Por exemplo, no caso de uso de “ponteiros”, os quais podem fazer a ligação
de um ponto de um texto a uma representação quantificada de uma figura, de um som, etc.
Uma distinção fundamental entre dado e informação é que o primeiro é puramente sintático e
o segundo contém necessariamente semântica (implícita na palavra "significado" usada em
sua caracterização). É interessante notar que é impossível introduzir semântica em um
computador, porque a máquina mesma é puramente sintática, assim como a totalidade da
matemática (SETZER, 1999), por exemplo, a frase "Paris é uma cidade fascinante" é um
exemplo de informação somente se, ao ser lida ou ouvida por alguém, "Paris" signifique a
capital da França e "fascinante" tenha a qualidade usual e intuitiva associada com aquela
palavra.
22
O conhecimento é uma modelação simbólica complexa, ou seja, uma representação de algum
aspecto de um universo de discurso. Isto é, o que uma pessoa pode falar sobre um
determinado assunto, por exemplo, conhecimento sobre filosofia, computação ou biologia.
(LIBRELOTTO, 2005). A Figura 3 apresenta uma equação que expressa o relacionamento
entre conhecimento e dados:
Figura 3 - Equação representativa da definição de Conhecimento.
Fonte: Adaptada de Librelotto (2005).
A informação contida em algum dado depende do que uma pessoa sabe sobre o tema e, em
geral, isto pode variar de indivíduo para indivíduo (LIBRELOTTO, 2005). A Figura 4
demonstra que informação representa uma mudança no conhecimento, pois ela altera o
conhecimento sobre um determinado tema.
Figura 4 - Equação que expressa a formação do novo conhecimento.
Fonte: Adaptada de LIBRELOTTO (2005).
23
Para Setzer (1999), o conhecimento é uma abstração interior, pessoal, de alguma coisa que foi
experimentada por alguém. Usando o exemplo anterior, alguém tem algum conhecimento de
Paris somente se a visitou.
2.2.
Mineração de Dados
O atual volume e a elevada taxa de crescimento dos bancos de dados ultrapassaram a
capacidade humana de analisar, interpretar e utilizar a informação neles contida, criando
assim, conforme Fayyad et al. (1996), a necessidade de criação de métodos e ferramentas
eficientes e capazes de manipular esta massa de dados.
Segundo Zuchini (2003), o termo Knowledge Discovery in Databases (KDD) foi criado para
nomear o processo de descoberta de conhecimento a partir de conjuntos de dados. Representa
muito mais do que apenas a aplicação de técnicas capazes de revelar similaridades e
diferenças, de produzir regras e resumos dos dados. A este conjunto de atividades em
particular reserva-se o termo “mineração de dados”, ainda segundo Zuchini (2003), não há
consenso sobre a terminologia usada pelos autores nesta área de pesquisa. Alguns consideram
o termo mineração de dados como sinônimo de KDD, como por exemplo, em Mitchell
(1999). Já Holsheimer et al. (1999), mineração de dados é definido como um “tipo especial de
aprendizado de máquina onde o ambiente é visto através de um banco de dados”.
Quanto ao processo de mineração de dados em si, Zuchini (2003) abordou que existem
diversos métodos aplicados, provenientes de diversas áreas do conhecimento, tais como
“análise exploratória de dados” (Jain et al. 1988; Tukey, 1977), “análise de agrupamentos”
(Everitt, 1993), “classificação automática” (Costa, 1999), “reconhecimento de padrões” (Duda
et al. 2000; Bishop, 1995), “aprendizado de máquina” (Michalski et al. 1998), todos usados
para referir-se ao processo de mineração.
24
2.3.
Mineração de Dados na Web
Partindo do contexto de que mineração de dados refere-se ao processo não trivial de
identificação de padrões válidos, previamente desconhecidos e potencialmente úteis dos dados
(FRAWLEY, 1992), conceitua-se, de forma mais abrangente, que a mineração de dados na
Web refere-se como a descoberta e análise inteligente de informações úteis da Web
(COOLEY, 1997).
A Figura 5 apresenta as três categorias em que a mineração na Web é dividida, de acordo com
a parte a ser minerada. Por se tratar de interesses distintos, e por isso, tipos diferenciados de
mineração, cada uma destas categorias possuem suas próprias técnicas. As metodologias são
muitas vezes herdadas de outras áreas do Conhecimento, como Aprendizagem de Máquina,
Banco de Dados, Estatística, Recuperação de Informação, Inteligência Artificial e Redes
Sociais (MARINHO et al. 2003).
Figura 5 - Categorias da Mineração de Dados na Web e respectivas áreas de interesse.
Segundo Marinho et al. (2003), os estudos da mineração na Web foram iniciados em meados
de 1996. Entretanto, dois fatores geraram recentemente um maior interesse no avanço destes
estudos. São eles: o aumento das transações comerciais na Web e o desenvolvimento da Web
semântica (DECKER apud MARINHO, 2003) e da tecnologia dos agentes da informação
(SYCARA apud MARINHO, 2003).
Apesar das diferenças e particularidades entre a mineração de dados tradicional e a mineração
de dados na Web, a metodologia utilizada para a mineração na Web segue os mesmos passos
utilizados no processo geral de descoberta de conhecimento em bases de dados (KDD)
25
(MARINHO, 2003). A Figura 6 mostra o processo de mineração de dados na Web e suas
subdivisões, que na verdade são análogas às fases do processo KDD (ETIZIONE apud
MARINHO, 2003). A primeira fase refere-se ao processo de descoberta de recursos; a
segunda, a seleção dos recursos que realmente interessam e seu pré-processamento; a terceira,
ao reconhecimento de padrões; e a quarta, a validação e interpretação dos resultados.
Figura 6 - Processo de Mineração de Dados na Web.
2.3.1. Categorias da Mineração na Web
Esta seção apresenta uma visão geral das subcategorias de Mineração na Web: Mineração de
Conteúdo, Mineração de Estrutura e Mineração de Uso.
2.3.1.1.
Mineração de Conteúdo
Segundo (MARINHO, 2003), a Mineração de Conteúdo trata do descobrimento de
informações úteis do conteúdo, dados, documentos e serviços da Web. O conteúdo da Web
não se limita a textos ou hipertextos, abrangendo diversos tipos de dados, tais como áudio,
vídeo, metadados e vínculos de hipertexto, mas Marinho (2003) ressalta que o foco ainda está
nos dados de texto e hipertexto, apesar de já existir uma área de pesquisa destinada ao estudo
da mineração de dados multimídia. De forma geral, a mineração de conteúdo consiste na
descoberta de informação em documentos como posts, textos, páginas HTML, áudio e vídeo.
Ainda (MARINHO, 2003), os dados de texto na Web são categorizados em três tipos:
desestruturados, semiestruturados e estruturados. O primeiro tipo são, por exemplo, textos de
notícias; o segundo, HTML; e o último, tabelas de Banco de Dados.
26
Para tratamento dos dados desestruturados é utilizada a Mineração de Dados em Textos (em
inglês, Knowledge Discovery in Texts) (MARINHO, 2003). Algumas abordagens tratam da
mineração de dados em texto sugerem reestruturar o documento de forma que eles se tornem
legíveis para as máquinas, ou seja, técnicas para inserção de marcas (tags) semânticas nas
informações.
Segundo (MARINHO, 2003), existem basicamente duas estratégias para a mineração de
conteúdo: a minerar diretamente do conteúdo dos documentos e/ou incrementar o poder de
busca de outras ferramentas e serviços. Na primeira estratégia, os documentos pretendidos já
foram recuperados e já estão prontos para serem minerados. Na segunda estratégia, a
mineração ajuda a realizar o processo de indexação e categorização dos documentos. Dessa
forma, conforme o salientado pelo autor percebe-se que quando a mineração de conteúdo
utiliza a segunda estratégia, ela complementa o processo de recuperação de informação, sendo
utilizada como uma ferramenta pelos motores e serviços de busca, ou seja, recuperação
inteligente de informação.
2.3.1.2.
Mineração de Estrutura
O foco da mineração de estrutura são as informações que existem de forma implícita entre os
documentos, ou seja, o que há por trás da interligação entre os documentos da Web. O que
liga esses documentos são os vínculos de hipertexto, os quais são os principais objetos de
estudo nesta categoria (MARINHO, 2003).
A Web pode ser visualizada como um grafo orientado, onde os nós representam páginas, e as
setas entre pares de nós representam vínculos entre as páginas. Essa representação da Web em
forma de grafo apresenta uma forte semelhança com as chamadas redes sociais2 (KUMAR,
2
A teoria moderna de redes sociais foi desenvolvida a partir do trabalho de Stanley Milgram. Em 1967, Milgram
conduziu experimentos onde ele pedia que diversas pessoas residentes em Omaha, Nebraska, conduzissem uma
carta para um associado seu que morava em Boston. As pessoas só podiam enviar a carta para outra pessoa que
elas conhecessem pelo primeiro nome, e essas pessoas por sua vez só podiam retransmitir a carta para uma
pessoa que elas também conhecessem pelo primeiro nome. O objetivo era de que a carta chegasse ao seu
associado no menor número de “passos” possíveis. Milgram descobriu que o número médio de “passos” ao
longo do caminho das cartas que conseguiam chegar com sucesso era seis, criando o pensamento de que
27
2003) que, juntamente com a análise de citações, inspirou a pesquisa dessa categoria de
mineração.
Marinho (2003) aponta que muitas pesquisas têm sido realizadas com o intuito de explorar as
similaridades entre a Web e as Redes Sociais (KUMAR, 2003). O objetivo comum destas
pesquisas é desenvolver técnicas que possam incrementar o poder dos motores de busca e dos
sistemas de gerenciamento do conhecimento.
2.3.1.3.
Mineração de Uso
A mineração de uso da Web focaliza-se em técnicas que possam prever o comportamento do
usuário no processo de interação deste com a Web. Ou seja, a mineração de uso utiliza os
dados secundários provenientes da interação do usuário com a Web diferentemente das
categorias citadas nas seções acima, que utilizam os dados reais ou primários da Web.
Os dados de uso da Web incluem dados provenientes de logs de servidores Web, logs de
servidores proxy, logs de browsers, perfis de usuário, cookies, seções ou transações de
usuários, pasta favoritos, consultas do usuário, cliques de mouse e qualquer outro dado gerado
pela interação do usuário com a Web (MARINHO, 2003).
Segundo Srivastava duas abordagens classificam o processo de mineração de uso da Web. A
primeira mapeia os dados de uso do servidor Web em tabelas relacionais antes das técnicas
adaptadas de mineração de dados serem aplicadas. A segunda utiliza os dados de logs
diretamente utilizando técnicas especiais de pré-processamento. Cooley apud Marinho (2003)
completa que, assim como no KDD, a limpeza e pré-processamento dos dados, nesta
abordagem, é uma parte crucial do processo, pois a qualidade desses dados vai determinar a
eficiência dos algoritmos de mineração.
quaisquer duas pessoas residentes nos Estados Unidos estavam ligadas em uma rede social com “seis graus de
separação”.
28
As aplicações da mineração de uso da Web podem ser classificadas em duas categorias
principais: aprendizado de perfil de usuário ou modelagem em interfaces adaptativas
(personalização) e aprendizado de padrões de navegação de usuário (SRIVASTAVA, 2000).
Marinho (2003) salienta que a mineração de uso da Web vem sido utilizada principalmente
por sites de comércio eletrônico, visto que para essas empresas é de fundamental importância
aprender sobre o comportamento dos clientes, seus perfis de compra, preferências e padrões
de navegação. Alguns sites populares de comércio eletrônico já utilizam estas técnicas não só
para a adaptação do site de acordo com o perfil do usuário, mas como para fazer
recomendações de produtos de acordo com compras anteriores, ou baseadas na similaridade
entre perfis de usuários.
2.4.
Mineração de Textos
Mineração de texto é também conhecida como mineração de dados de texto (HEARST,
1997), ou descoberta de conhecimento de banco de dados textuais (FELDMAN et al. 1995),
refere-se ao processo de extração de padrões não-triviais ou conhecimento de textos nãoestruturados. Pode ser vista como uma extensão da mineração de dados ou descoberta de
conhecimento a partir de banco de dados estruturados (FAYYAD et al. 1996; SIMOUDIS,
1996).
O texto é a forma mais simples e natural de armazenamento da informação, logo acredita-se
que a mineração de texto possui um potencial ainda maior que a mineração de dados (TAN,
1999). Segundo este autor, a mineração de texto, no entanto, é muito mais complexa que a
mineração de dados pelo fato de envolver dados não estruturados. Para ele, mineração de
texto é um campo multidisciplinar o qual envolve: recuperação da informação, análise de
texto, extração de informações, clustering, classificação, visualização, tecnologias de banco
de dados e mineração de dados.
Segundo Ah-hwee Tan (1999), a mineração de textos pode ser dividida em duas etapas ou
fases distintas. São elas: 1) transformação do texto livre (desestruturado) em uma forma préestruturada e 2) extração de conhecimento e/ou informações. Esta segunda etapa permite a
29
extração de padrões e representação gráfica, o que auxilia a análise das informações obtidas.
Uma forma intermediária pode ser semiestruturada, como a representação gráfica conceitual,
ou estruturada, como a representação de dados relacionais. A forma intermediária pode ser
baseada em documento, onde cada entidade representa um documento, ou baseada em
conceito, onde cada entidade representa um objeto ou conceitos de interesses em um domínio
específico. A Figura 7 mostra a arquitetura de transformação do texto “livre” em forma
intermediária, na qual, a partir da destilação do conhecimento (em inglês, Knowledge
Distillation) deduz padrões ou conhecimento acerca de objetos ou conceitos.
Forma Intermediária
Baseada em
Documento
Forma Intermediária
Baseada em Conceito
Figura 7 - Arquitetura de transformação do texto livre em forma intermediária.
Fonte: (TAN, 1999)
Bird (2009) considera como sendo a primeira etapa do processo de mineração de textos a
contagem das palavras que podem ser consideradas sequências de caracteres válidos e com
significado. As palavras-chaves incluem também os tokens, sequência de caracteres que
formam as palavras ou símbolos com significado, tais como “:-) ”, “tudo”, “eu”. Sumarizar a
frequência em que as palavras aparecem em determinado texto é importante, segundo este
autor, porque possibilita determinar o tema ou assunto do texto.
Da mesma forma, deve ser pesquisada a contextualização das palavras, pois em muitos casos
estas possuem mais de um significado. Logo, não devem ser analisadas isoladamente. Por
30
exemplo, um caso de significado múltiplo na língua portuguesa, a palavra “meia” tanto
significa vestimenta, como em “calçar a meia”, quanto a metade de algo, “meia hora”.
2.5.
Processamento de Linguagem Natural
As ferramentas para mineração de textos são baseadas principalmente em técnicas de
Processamento de Linguagem Natural (PLN), as quais incluem análise de texto, categorização
de texto, extração e sumarização.
O processamento de linguagem natural é importante por razões científicas, econômicas,
sociais e culturais. Atualmente está em crescimento rápido com as suas teorias e métodos
utilizados amplamente em nas novas tecnologias de processamento de linguagem. Por isso é
importante que a cada dia mais pessoas tomem conhecimento dessa tecnologia e trabalhem
com processamento de linguagem natural. Na área comercial necessita de pessoas para
interação com os softwares, pois o processo não é automático, analise de informações de
negócios e ainda desenvolvedores de softwares para a Web. Na área acadêmica necessita
pessoal para áreas como linguística e inteligência artificial (Bird, 2009).
Para processamento de linguagem natural foi desenvolvido a Natural Language Toolkit.
Trata-se de uma biblioteca de código aberto, desenvolvida em Python, que inclui códigos de
exemplos, dados e documentação gratuita no site www.nltk.org com distribuições para
Windows, Macintosh e Unix (BIRD, 2009). A seção 2.5.2 aborda com mais profundidade este
tema.
2.5.1. Linguagem de Programação Python
Python é uma linguagem de programação interpretada, interativa e orientada a
objetos. Fornece estruturas de alto nível de dados, tais como lista e arrays associativos
(chamados de dicionários), tipagem dinâmica e ligação dinâmica, módulos, classes, exceções,
gerenciamento automático de memória, etc. Possui sintaxe extremamente simples e elegante e
31
ainda é uma poderosa linguagem de programação e de propósito geral. Foi projetado em 1990
por Guido van Rossum.
Como muitas outras linguagens de script é livre, mesmo para fins comerciais, e pode ser
executado em praticamente qualquer computador moderno. Um programa em Python é
compilado automaticamente pelo interpretador em plataforma de código de bytes
independente, que é então interpretado (SANNER). Segundo Labaki (2006) é uma linguagem
de código aberto e gratuita, está disponível para vários sistemas operacionais como Windows,
Linux, Mac, Palm entre outros.
Python é uma linguagem orientada a objetos porem permite a programação procedural,
dinamicamente tipada. Por exemplo, ao atribuir valor1 = 1, a variável valor1 será
automaticamente tipada como inteiro. Atualmente é amplamente utilizada pela Google, Nasa,
Nokia, Yahoo entre outros (LABAKI, 2006).
Alguns aspectos a serem considerados, segundo Pereira (2008) na pesquisa de Processamento
de Linguagem Natural:
Fonologia: relacionada aos fonemas, reconhecimento de sons que formam as
palavras de uma língua.
Morfologia: reconhecimento das palavras em unidades básicas.
Sintaxe: define a estrutura de uma frase com base na forma como as palavras se
relacionam categorias gramaticais.
Semântica: relacionada com o significado das palavras que compõem um texto.
Pragmática: adequa o significado de uma frase ao contexto em que ela é usada.
2.5.2. Natural Language Toolkit
O NLTK é uma ferramenta da linguagem de alto nível Python, criada pelo holandês Guido
Van Rossum sob o ideal de “Programação de Computadores Para todos”.
32
Conforme o exposto por Bird (2009), as palavras devem ser analisadas sempre dentro de um
contexto para evitar ambiguidades, como no exemplo de palavras com mais de um
significado, tomar um banho” e “tomar um café”.
O método concordance do NLTK nos permite trazer o contexto em que uma palavra se
encontra. Por exemplo, a palavra monstrous, no texto Moby Dick, de Herman Melville
(1851). Para utilizar este método, basta digitar >>> text1.concordance(“monstrous”) no shell
do Python após importar as devidas bibliotecas referentes ao NLTK bibliotecas (Bird, 2009).
Outro método bastante utilizado é o método similar com o qual é possível trazer as palavras
que estão relacionadas com a qual você busca. Esse método é útil para trazer informações, por
exemplo, sobre posts em produtos de comercio eletrônico, pois é possível trazer as palavras
que estão diretamente relacionadas com determinado produto. Assim é possível classificar o
post como positivo ou negativo.
O código text1.similar(“monstrous”), por exemplo, traz na maioria palavras positivas em
relação ao Moby Dick. No entanto, em outro texto sobre catástrofes naturais, o termo
“monstrous” irá trazer uma lista de palavras relacionadas a grandeza das catástrofes,
geralmente consideradas negativas (BIRD, 2009).
Para classificarmos um texto sobre um determinado assunto podemos contar a frequência com
que determinadas palavras referentes a esse assunto aparecem no texto. Assim basta procurar
por palavras-chave longas, pois palavras curtas são amplamente usadas em diversos textos, o
que impossibilita a descoberta do tema do texto.
O método FreqDist é utilizado para realizar esse tipo de descoberta, como por exemplo se a
palavra football aparece repetidas vezes em um texto. Deste modo pode-se afirmar que esse
texto enquadra-se na categoria esportes (BIRD, 2009).
Conforme Bird (2009), Acessando textos da Web e ou do disco local, a biblioteca NLTK
fornece alguns livros para testarmos o conhecimento. Entretanto, caso seja necessário
importar novas referências, tanto da Web quanto do disco local, deve-se utilizar os seguintes
códigos conforme a Figura 8, no Shell do Python.
33
Figura 8 - Código para buscar um texto de uma url.
A variável raw agora contém o texto com todos os caracteres do livro, inclusive espaços em
branco e pontuação. Estes caracteres “extras” não interessam para a análise. Para retirá-los,
utiliza-se a tokenização, que produz uma lista de palavras sem a pontuação e espaços. A
Figura 9 mostra o código do método para tokenização de textos.
Figura 9 - Método para realizar a tokenização de textos.
É possível ainda abrir textos do disco local simplesmente utilizando o método open e em
seguida o método read, como mostra a Figura 10.
Figura 10 - Código para abrir um arquivo de texto.
2.5.2.1.
Classificação Supervisionada
Segundo Bird (2009), a detecção de padrões é parte central do processamento de linguagem
natural. Por exemplo, na língua inglesa, palavras terminadas com “ed” tendem a ser passado
de verbos. O uso frequente do futuro pode ser característico de um texto de noticias. Esse tipo
34
de padrão pode ser útil para detectar se um email é um spam ou não, ou se o assunto central
de um texto é esportes, tecnologia ou política.
Classificar é a tarefa de escolher o rótulo correto para uma dada entrada. Nessa tarefa cada
entrada é considerada isoladamente e o conjunto de rótulos é definido com antecedência. A
Figura 11 mostra o processo de classificação supervisionada na qual o desenvolvedor precisa
treinar um algoritmo de aprendizado inserindo valores de entrada e especificando quais
valores devem ser a saída. Após o treinamento, é inserido o conjunto maior de dados para
obter as saídas previstas (BIRD, 2009).
(a) Treinamento
Entrada: Texto
Extração de informações
Algoritmo de
aprendizado
de maquina
Extração de informações
Modelo
(b)voPredição
texto
Entrada: Texto
Classificador
vo texto
Saída: Nova Classificação
Figura 11 - Processo de Classificação Supervisionada.
Fonte: NLTK BOOK (2009)
2.5.2.2.
Categorizando as palavras
Segundo Bird (2009), a categorização de palavras se torna útil para o processamento de texto,
pois é necessário conhecer o conteúdo do texto para que seja possível enquadrá-lo em
determinadas categorias. Desta forma, é possível definir se um determinado texto é sobre
ciência, tecnologia ou esportes. Ou seja, pelo conteúdo do texto pode-se determinar
informações como, por exemplo, se o texto é positivo ou negativo, ou o seu assunto.
35
A classificação gramatical das palavras (substantivo, verbos, pronomes, adjetivo, etc.) permite
categorizar cada palavra de um texto, o que é útil para várias atividades de processamento de
textos (BIRD, 2009).
A classificação de palavras em categorias também é conhecido como partes do discurso,
classes das palavras ou ainda categorias lexicais, a categoria de uma palavra pode ser definida
de três maneiras, são elas:
Formal, analisa a estrutura interna da palavra, por exemplo, –ness é um sufixo que se combina
a um adjetivo formando um substantivo como happy + ness = happyness, logo ao encontrar
esse sufixo é grande a probabilidade da palavra ser um substantivo.
Sintática, esse método verifica os contextos onde ocorre a palavra, por exemplo, na língua
inglesa um adjetivo é uma palavra que ocorre antes de um substantivo exemplo the near
window.
Conceitualista analisa, por exemplo, o significado da palavra, por exemplo, “verjaardag” que
significa aniversário em holandês podemos supor que seja um substantivo, porem existem
muitas palavras que não possuem correspondência, podemos perceber que as três maneiras de
categorizar palavras possuem limitações e ao trabalhar com o processamento de linguagem
natural especificamente com categorizador devemos ter ciência de que a categorização não
estará 100% correta (STACK EXCHANGE, 2011).
Ao trabalhar com processamento de linguagem natural devemos ainda ter em mente que todas
as línguas adquirem novos itens lexicais com o tempo, todos os anos os grandes dicionários
adicionam palavras novas estas são adicionadas nas chamadas classes abertas são as classes
que não possuem tamanho finito, os linguistas costumam reconhecer como classes abertas as
classes de substantivos, verbos, adjetivos e advérbios. Ao contrario as preposições são
consideradas classes fechadas, ou seja, o número de palavras desta classe é limitado e as
mudanças quando ocorrem, mudam muito lentamente.
A Figura 12 mostra um exemplo de código, em Python, de categorização das palavras, no
qual VB significa verbo, NN substantivo, IN preposição e JJ adjetivo. Observe que a primeira
36
palavra refuse é um verbo diferente da segunda que é um substantivo, o verbo significa
“negar” e o substantivo, “lixo”.
Figura 12 - Código para categorização das palavras.
37
3. MINERAÇÃO DE DADOS SOCIAIS EM SISTEMAS DE RECOMENDAÇÃO
Este capítulo aborda conceitos e definições relacionados a Sistemas de Recomendação de
forma geral, e o Sistema de Recomendação do site de comércio eletrônico Amazon, em
específico. Aborda também estratégias de mineração de dados sociais e métodos de análise
das palavras-chave coletadas nos posts, objeto deste estudo.
3.1.
Sistemas de recomendação
Segundo Reategui. (2005), os sistemas de recomendação auxiliam no aumento da capacidade
e eficácia deste processo de indicação já bastante conhecida na relação social entre seres
humanos. Em um sistema típico as pessoas fornecem recomendações como entradas e o
sistema agrega e direciona para os indivíduos considerados potenciais interessados neste tipo
de recomendação. Logo, conforme Reategui et al. (2005), um dos grandes desafios deste tipo
de sistema é realizar o casamento correto entre os que estão recomendando e aqueles que
estão recebendo a recomendação, ou seja, definir e descobrir este relacionamento de
interesses.
O primeiro sistema de recomendação, o Tapestry, era referenciado com a expressão
“filtragem colaborativa”. Consistia em um sistema específico em que a filtragem de
informação era realizada de forma manual, com auxilio humano, a partir da colaboração dos
grupos interessados (REATEGUI et al. 2005). Mas, ainda segundo o autor, atualmente já é
consenso a utilização da expressão “sistemas de recomendação” por três motivos. Primeiro,
porque se trata de um termo genérico. Segundo, porque os recomendadores podem não
explicitar colaboração com os que as recebem já estes não precisam necessariamente se
conhecer. E terceiro, porque os recomendadores podem sugerir itens de interesse particular,
inclusive aqueles que poderiam ser desconsiderados.
Reategui (2005) considera que existem dois tipos de sistemas de recomendação: os sistemas
de filtragem colaborativa e os sistemas de filtragem baseada em conteúdo. Segundo ele, cada
um destes tipos aplicam abordagens distintas e por isso são tipados como tipos diferentes de
38
sistemas de recomendação, apesar de possuírem a mesma finalidade. No caso do sistema de
filtragem colaborativa, a recomendação é explícita, feita com base em interesses em comum.
Já no sistema de filtragem baseada em conteúdo, a recomendação é implícita, feita com base
em comportamentos comuns aos recomendadores.
Os sites de comércio eletrônico são atualmente o maior foco de utilização dos sistemas de
recomendação, empregando diferentes técnicas para encontrar os produtos mais adequados
para seus clientes e aumentar deste modo sua lucratividade. O “My Yahoo” foi o primeiro a
utilizar os sistemas de recomendação em grandes proporções (REATEGUI, 2005).
Atualmente, um grande número de sites emprega os sistemas de recomendação para levar aos
usuários diferentes tipos de sugestões, como ofertas casadas ("clientes que compraram item X
também compraram item Y"), itens de sua preferência, itens mais vendidos nas suas
categorias favoritas, etc.
A Figura 13 mostra um exemplo de recomendação do comercio eletrônico da Amazon, em
que é exibido uma recomendação favorável (“The most helpful favorable review”) versus uma
recomendação crítica (“The most helpful critical review”).
Figura 13 – Site de comércio eletrônico Amazom.com
39
3.2.
Implementação de um Minerador
Esta seção apresenta o desenvolvimento prático da busca pelo padrão nos posts e a rotulação
destes a partir da categorização das palavras utilizando o NLTK.
3.2.1. Coleta dos Posts do Sistema de Recomendação da Amazon.com
As amostras foram escolhidas no site do comércio eletrônico Amazon, tendo como limitação
somente os posts negativos em relação ao serviço. A seleção foi feita dentre os posts que
apresentavam as palavras shipping, arrive, problem, late e delivery, e seus respectivos
contextos com o objetivo de delimitar o universo da pesquisa a problemas de remessa de
produtos, no anexo 1 encontram-se os 50 posts coletados com as palavras padrão destacadas
em uma coluna em verde e na coluna seguinte uma breve analise das sequencias gramaticais
mais encontradas. Abaixo na Tabela 1, encontra-se um exemplo de um destes posts.
Tabela 1 – Categorização dos posts coletados do site de comércio eletrônico Amazon.com
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
My packet
01
don't come
until this
time.
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
[('My', 'PRP$'), ('packet',
'NN'), ('do', 'VBP'), ("n't",
[ ('do', 'VBP'),
'RB'), ('come', 'VB'),
("n't", 'RB'),
('until', 'IN'), ('this', 'DT'),
('come', 'VB') ]
('time', 'NN'), ('.', '.')]
Verbo (come)
precedido por
advérbio
de
negação (not).
40
3.2.2. Análise das palavras-chave
Na busca das palavras que estão relacionadas ao problema de atraso de entrega dos produtos
no sistema de recomendação foram analisados os posts mais recentes dos principais produtos
desse comércio eletrônico assim sendo as palavras mais recorrentes e as que pelo próprio
significado único palavra como late que isolada de qualquer contexto significa atraso.
A análise das palavras-chave foi feita com o seguinte critério: palavras mais utilizadas e com
relação direta com o problema de em entrega em atraso. Para isso foram selecionados 50 posts
no site de comércio eletrônico da Amazon. A tabela 2 mostra as palavras mais frequentes para
esse caso.
Tabela 2 – Palavras mais frequentes segundo critério estabelecido.
Palavra
Número de ocorrências
Came / Come
2
Delay
5
Late / Later
10
Arrive / Arrived / Arrival
28
Wait / waited
2
Delivery / delivered
3
Ship / Shipping / Shipment
7
As palavras que possuem mais de uma palavra na mesma linha na tabela acima como, por
exemplo, arrive, arrived, arrival foram consideradas juntas, pois são palavras derivadas da
primitiva arrive.
Deve-se ter cuidado com a palavra wait que pode estar relacionado à expectativa, por
exemplo, (I can‟t wait for new ipod) ou ainda como outro caso encontrado no post do plantio
de limão onde a palavra wait refere se a espera pelo tempo de germinação de sementes
conforme listado nas instruções do produto conforme o post : A wait time of 1-2 months was
listed in the description.
41
Foram encontrados ainda dois casos considerados atípicos, pois cada um destes ocorreu
apenas uma vez nos 50 posts. Além disto, nestes casos não foram adicionados as palavraschave. Foram eles:
“half month after ordering”
“ a week or two longer”
No entanto, estes casos pertencem às amostras coletadas, ambos foram adicionados ao
software para que em casos semelhantes sejam detectados e classificados como post com
problemas no serviço de entrega.
3.2.2.1.
Palavra-chave Arrive
A Figura 14 mostra a palavra-chave arrive, a qual encontra-se em 48% dos posts, e suas
derivações arrived e arrival, com todas as combinações encontradas nos 24 posts. O número
em parênteses representa a quantidade de vezes que essas expressões se repetem.
Figura 14 - Frequência da palavra-chave arrive nos posts coletados.
42
Para a palavra-chave arrive percebe-se a existência de muitas combinações de sequências
morfológicas. Somadas correspondem a mais de 50% dos casos (sendo 28 ocorrências em 50
posts).
A sequência mais frequente refere-se aos substantivos relacionados ao tempo de espera
(“week”, “day”, “month”, “forever”), seguido de “to” e verbo “arrive” (sendo 11
ocorrências em 28 posts). A segunda sequência mais frequente refere-se a “not arrive”e
“didn‟t arrive” („RB‟, „VB‟), ou seja advérbio de negação seguido de “arrive” (sendo 9
ocorrências em 28 posts). Ainda houve ocorrência desta palavra-chave com advérbio de
tempo long (3 ocorrências em 28 posts), adjetivo late (4 ocorrências em 28 posts) e adjetivo
slow (1 ocorrência em 28 posts). A Tabela 3 mostra as ocorrências observadas e suas
respectivas frequências.
Tabela 3 – Ocorrências da palavras-chave arrive nos posts coletados
SEQUÊNCIA
Week , day, forever, month to arrive
('NN'), ('TO'), ('VB')
not arrive
(„RB‟, „VB‟)
Arrive late,arrive later
('arrived', 'VBD'), ('late', 'JJ')
long to arrive
('long', 'RB'), ('to', 'TO'), ('arrive', 'VB'),
slow to arrive
('slow', 'JJ'), ('to', 'TO'), ('arrive', 'JJ')
3.2.2.2.
NÚMERO DE OCORRÊNCIAS (%)
11 (39,28%)
9 (32,14%)
4 (14,28%)
3 (10,71%)
1 (3,57%)
Palavra-chave late e derivada later
O padrão encontrado nos posts que utilizam a palavra-chave late e a derivada later ocorre
com seguinte sequência: adjetivo “late” ou “later” precedido de substantivo, podendo estar
43
no plural ou singular. Nessas ocorrências, o substantivo sempre esteve relacionado ao tempo
de espera, por exemplo, acompanhado das palavras week, weeks, day, days, month, months.
Entretanto uma exceção à regra detectada foi no caso em que advérbios de intensidade
precedem o adjetivo late, como em very late. Dos 10 posts que possuem esta palavra-chave,
apenas dois possuem essa sequência gramatical (advérbio + adjetivo), sendo 8 os casos com a
sequência substantivo relacionado ao tempo. A Figura 15 exibe todas as ocorrências com a
palavra-chave late e a derivada later.
Figura 15 - Frequência da palavra-chave late e a derivada later nos posts coletados.
A Tabela 4 mostra as ocorrências de contexto da palavra-chave late e a derivadas e
respectivas frequências.
Tabela 4 – Ocorrências do contexto da palavra-chave late e derivada nos posts coletados.
SEQUÊNCIA
NÚMERO DE OCORRÊNCIAS (%)
Week, day, month late
('substantivo relativo ao tempo', 'NNS'), ('late',
8 (80%)
'JJ')]
Too, very late
('adverbio de intensidade', 'RB'), ('late', 'JJ')]
2 (20%)
44
3.2.2.3.
Palavra-chave ship e derivadas shipping e shipment
No caso da palavra-chave ship e suas derivadas shipping e shipment foi encontrado uma
grande variedade de sequências. Porém ao observar as palavras que se relacionam diretamente
com ship e derivadas, foi observado que são os mesmos substantivos encontrados
anteriormente para as palavras-chave anteriores. São eles, as relacionadas ao tempo days,
weeks e months, advérbio de negação como em not ship e ainda combinações com outras
palavras-chave, como em shipping delay.
A Figura 16 exibe as combinações encontradas nos 7 posts em que a palavra-chave é ship e
suas derivadas.
Figura 16 - Frequência da palavra-chave ship, shipping e shipment nos posts coletados.
A Tabela 5 mostra as ocorrências de contexto da palavra-chave late e a derivadas e
respectivas frequências.
45
Tabela 5 – Ocorrência das palavras-chave contexto da palavra ship, shipping e shipment
Sequência
Número de ocorrências
Advérbio de negação seguido da palavra-
2
chave
('did', 'VBD'), ('not', 'RB'), ('ship', 'VB')
[ ('slow', 'NN'), ('free', 'JJ'), ('shipping', 'NN')]
2
Substantivo seguido de número cardinal e
1
substantivo relacionado ao tempo
[('shipment', 'NN'), ('was', 'VBD'), ('5', 'CD'),
('days', 'NNS'), ('late', 'JJ')]
[ ('worst', 'JJS'), ('shipping', 'VBG'), ('time',
1
'NN')]
[ ('shipping', 'NN'), ('delays', 'VBZ')]
3.2.2.4.
1
Palavra-chave delay
A palavra-chave delay seguiu o mesmo padrão das anteriores. Na maioria dos casos foi
encontrada a palavra-chave acompanhada da palavra relativa ao tempo de espera. No caso de
delay houveram somente 5 ocorrências, sendo 2 ocorrências com week, 2 com day e days e 1
com long, relacionada também a demora na entrega. A Figura 17 ilustra ocorrência da
palavra-chave delay nos posts coletados.
46
Figura 17 - Frequência da palavra-chave delay nos posts coletados.
3.2.3. Extração da informação
A informação pode vir de diferentes formas, estruturadas ou não. Porém é mais trabalhoso
buscar informações em textos não estruturados, pois é preciso analisar o texto de uma forma
mais profunda para encontrar relações entre entidades.
Uma comparação que ilustra esta ideia é fornecida no livro “Processamento de Linguagem
Natural com Python”. O exemplo é o seguinte: encontrar a localização de uma empresa com
dados estruturados e não estruturados. A Tabela 6 mostra a informação estruturada em uma
lista de tuplas (entidade, relacionamento, entidade).
Tabela 6 – Tabela tuplas empresa versus localização.
Empresa
Localização
Omnicom
New York
DDB Needham
New York
BBDO South
Atlanta
Georgia-Pacific
Atlanta
47
Neste caso, pode-se utilizar um método específico, em Python, para retornar a resposta da
pergunta: “Qual empresa está localizada em Atlanta?”. A Figura 18 mostra o código em
Python para exibir uma informação estruturada em uma tupla.
Figura 18 - Código em python para busca em informação esruturada.
O método acima retorna quais as empresas localizadas em Atlanta, porém extrair esse tipo de
informação em um texto como o seguinte extraído do corpus da nltk (nltk.corpus.ieer, fileid=
NYT19980315.0085).
(1) The fourth Wells account moving to another agency is the packaged paperproducts
division of Georgia-Pacific Corp., which arrived at Wells only last fall. Like Hertz and
the History Channel, it is also leaving for an Omnicom-owned agency, the BBDO
South unit of BBDO Worldwide. BBDO South in Atlanta, which handles corporate
advertising for Georgia-Pacific, will assume additional duties for brands like Angel
Soft toilet tissue and Sparkle paper towels, said Ken Haldin, a spokesman for
Georgia-Pacific in Atlanta.
Fazendo a leitura da frase podemos facilmente detectar a resposta, porém fazer com que o
computador entenda e retorne a devida resposta é mais complicado e trabalhoso. Para isso,
deve-se transformar a informação não estruturada em estruturada. seguindo de forma coerente
com o devido problema os seguintes passos para de extração de informação:
48
Texto (strings)
Tuplas (palavras, categoria)
Reconhecimento
de entidades
Segmentação
das sentenças
Lista de Strings
Reconhecimento
dos
relacionamentos
Tokenização
Reconhecimento dos
Padrões (seqüência
morfológica, palavras
chaves)
Lista de Strings
sem espaços
Categorização
Figura 19 - Método para extração de informação.
Fonte:
(NLTK Book, 2009)
Essa arquitetura de extração de informação recebe como entrada um texto como o exemplo
anterior e retorna uma lista de tuplas com as relações. Logo o sistema para descoberta de
padrões em posts está baseado nessa arquitetura de extração de informação. A primeira etapa
transforma o texto em uma lista de strings, retirando os espaços em branco, conhecida como
tokenização. Um exemplo do uso do método word_tokenize:
Figura 20 - Código para efetuar a tokenização.
A segunda etapa, também chamada de categorização, transforma a lista de strings em uma
lista de tuplas (palavra, classificação morfológica). Nessa etapa foram detectados alguns
padrões, como por exemplo, o caso da palavra “late” onde percebemos que 80% das
49
ocorrências possuíam a sequência morfológica substantivo (com relação ao tempo) + adjetivo
(late ou later). Nessa etapa ainda foram detectadas algumas limitações do categorizador
padrão da biblioteca NLTK, que serão abordadas no próximo tópico deste capítulo. Um
exemplo de utilização do método pos_tag, que adiciona as tags (classificação morfológica
abreviada logo após a palavra):
Figura 21- Categorização de um post.
O padrão de sequência morfológica (tag patterns) descreve as seqüências morfológicas que
devem ser observadas com cuidado pelo sistema, pois nem todos os casos em que ocorrem à
sequência procurada são realmente casos de atraso na entrega de produtos. No entanto, em
casos de grandes textos é possível diminuir a quantidade de amostras a serem analisadas
minuciosamente. Os padrões de sequência morfológica são semelhantes aos padrões de
expressões regulares, por exemplo, a busca por palavras que terminam com “ed”, que na
maioria são verbos no passado. Entretanto existem adjetivos como “talented” (talentoso) que
possui a terminação “ed” e não é um verbo flexionado no passado.(English Stackex Change,
2011).
Tabela 7 – Categorias com maior frequência encontrada.
Tag
Significado
Exemplo
ADJ / JJ Adjetivo
New, good, big
ADV
Adverbio
Already, early, now
CNJ
Conjunção
And, or, if
DET
Determinante
The, a, some
EX
Existencial
There, there‟s
FW
Palavra estrangeira
Quo, maitre
NN
Substantivo
Home, education
NP
Substantivo Próprio Brasil, João
C
Numero Cardinal
10, five
TO
A palavra to
To
V
Verbo
Is, get, make
50
A Tabela 8 refere-se a algumas funções em Python para busca de padrões de expressões
regulares:
Tabela 8 – Funções em python para busca de padrão me expressões regulares.
Função
Significado
s.startwith(a)
Verifica se o elemento s inicia com a letra a
s.endwith(a)
Verifica se o elemento s termina com letra a
palavra in frase Verifica se a palavra está contida na frase
s.islower()
Verifica se todos os caracteres do elemento são minúsculos
s.isupper()
Verifica se todos os caracteres do elemento são maiúsculas
s.istitle()
Verifica se todas as palavra contidas em s tem letra inicial maiúscula
A terceira etapa é também chamada de reconhecimento de entidade. Utilizamos a
segmentação e rotulação de entidades que possam ter relação com o problema de atraso na
entrega de produtos.
A Figura 22 mostra um exemplo de segmentação e rotulação (chunking), onde as caixas
pequenas representam a categorização morfológica onde PRP – pronome próprio, VBD –
verbo no passado simples, DT – determinante, JJ – adjetivo, NN – substantivo e as caixas
grandes representam os segmentos (chunk).
Figura 22 - Segmentação com rótulos, também conhecida como chunking.
Fonte: NLTK BOOK (2009)
A técnica utilizada para o reconhecimento de entidades é chamada de chunking que pode ser
traduzido como segmentação com rótulos.
Acerca das limitações do categorizador Nltk, a primeira falha no categorizador foi percebida
executar o pos_tag (tag após a palavra) em um post que possui parte do post maiúsculo. Nesse
51
caso todas as palavras maiúsculas foram definidas como nome próprio, como o seguinte
exemplo:
[ ('MONTH', 'NNP'), ('TO', 'NNP'), ('ARRIVE', 'NNP')]
Segundo problema, não foi uma falha mas uma limitação. O categorizador padrão da NLTK
rotula todos os abvérbios com a mesma tag („RB‟), logo tornou-se necessário criar uma tag
para classificá-los como advérbio de tempo, de negação e intensidade, para classificá-los
corretamente e novamente verificar a existência de padrão de tags.
Outra dificuldade encontrada foi acerca dos substantivos relacionados ao tempo, como em
“weeks”, “days”, “months”, “forever”. Para resolver esse problema todos os substantivos
encontrados nos 50 posts foram adicionados ao novo tagger.
O método conhecido como uni-gram tagger (customizador de tags) é o método no qual
adicionamos a palavra e sua respectiva tag ao tagger, padrão fornecido pela NLTK. Assim
quando ocorre uma palavra que está previamente definida por esse novo tagger, o tagger
padrão simplesmente a ignora. Assim a palavra passa a ser categorizada pelo tagger treinado.
Exemplo de utilização e treinamento do tagger: primeiro com o tagger padrão, podem-se
observar abaixo na figura 23 que not ("n't", 'RB') foi classificado apenas como advérbio, o que
dificulta a descoberta de um padrão já que a sequência advérbio + verbo pode ser encontrada
em muitos casos. Entre estes alguns referentes ao serviço em atraso, logo, ao classificarmos
corretamente, diminuímos o universo de busca e assim podemos obter um maior índice de
acerto ao buscar sequência de tags.
Figura 23 - Exemplo de post com problemas na categorização
Para treinar o tagger padrão foi adicionado o advérbio not com a tag „RBN‟ para advérbio
de negação:
52
Figura 24 - Categorizador customizado.
Pode-se observar na figura 24 que as outras palavras continuam a ser categorizadas
pelo tagger padrão. Somente as palavras desejadas são categorizadas pelo custom tag
(categorizador customizado).
3.2.4. Implementação do Sistema
Foi desenvolvido um protótipo de sistema, ainda em fase inicial, porém com ele foi possível
rotular os post como positivos ou negativos em relação ao problema do serviço de entrega 45
dos 50 posts utilizados como base para o estudo foram rotulados corretamente, o motivo de
não sucesso em rotular 100% será apresentado logo após a explicação do funcionamento dos
métodos para a rotulação destes posts.
O sistema foi divido em métodos, para facilitar a manutenção do código e o aprimoramento
deste, a primeira parte importa-se a biblioteca Nltk e declara-se as variáveis.
Figura 25 - Imports e declarações de variáveis do sistema de busca.
53
O primeiro método faz uma busca no post a fim de descobrir se as palavras padrão estão
presentes no post, se mostrou eficaz (90% de acerto) na busca. Porém possui limitações que
precisam ser resolvidas, por exemplo, ao buscar apenas uma palavra-chave. Para este caso foi
obtido 100% de acerto, no entanto, quando temos mais palavras-chave distintas ou não no
post pode-se encontrar problemas para a rotulação correta.
A Figura 26 mostra o método de busca para procurar por uma palavra-chave que está em uma
lista de strings. O código realiza a busca no post palavra por palavra. Se houver alguma das
palavras-chave no post é retornada a palavra-chave encontrada e o índice.
Figura 26 - Código do método de busca de palavra padrão.
A Figura 27 exibe o método para busca do contexto, ou seja, as palavras que estão próximas a
palavra padrão. Após a análise de todos os posts foi observado que a maioria das palavras
contexto chave (palavras relacionadas ao tempo de espera, advérbio de negação not e outras
palavras em que percebe-se relação com a palavra-chave) ocorre com o seguinte padrão: entre
quatro palavras antes e quatro palavras depois da palavra-chave. A partir disto, o método
sabendo qual o índice da palavra chave, reúne as quatro anteriores e quatro posteriores em
uma lista chamada contexto.
54
Figura 27 - Método para gerar o contexto da palavra-chave
A Figura 28 mostra o método para busca das palavras com maior ocorrência no contexto,
como por exemplo, weeks e days, presentes na lista de strings contexto.
55
Figura 28 - Método para verificação e rotulação do post.
O método verifica_post faz uma busca nas palavras do contexto comparando-as com as
palavras do contexto padrão e retorna uma mensagem positiva ou negativa em relação ao post.
Além desses métodos foram implementados os métodos para o categorizador padrão e
customizado, utilizando métodos fornecidos pela NLTK. A Figura 29 mostra o código do
método categorizadorPadrao().
Figura 29 - Método para categorização padrão do post.
O método categorizadorPadrao() cria as tuplas (palavra, classificação morfológica). Baseiase no corpus (conjunto de texto que servem de base para tokenização e categorização das
palavras). Este método apresentou os erros acima citados. Para correção destes, foi
desenvolvido o método categorizadorCustomizado(), cujo código é mostrado na Figura 30.
Figura 30 - Método para categorização customizada do post.
56
Conforme dito anteriormente, o sistema apresenta falhas que precisam ser resolvidas, tais
como detectar mais de uma palavra-chave no post, como por exemplo no caso do post nº 22,
exibido a seguir:
“…It did arrive within the time stated when ordered. Although I am fairly new to Amazon and
don't understand why anything ordered through Amazon takes so long to arrive.”
Ao analisar a frase acima pode-se observar que a primeira ocorrência de arrive afirma que o
produto chegou no tempo esperado, porém na segunda ocorrência é afirmado que o serviço de
entrega da Amazon demora muito para entregar. Nesse caso a solução não é trivial, partindo
de que é difícil para humanos analisarem esse tipo de frase, pois pode-se rotular o post das
duas formas. Ou seja, parte não tem problema com relação ao serviço e parte possui
problemas com a entrega.
Outra limitação apresentada no sistema e que não foi solucionada foi o fato de muitos
recomendadores, para dar ênfase ao que escrevem, fazem uso de aspas duplas, o que gera um
problema. O interpretador do Python verifica o código a ser executado e encontra aspas
duplas dentro de uma string (variável texto no código). Na linguagem de programação
Python, assim como em outras linguagens, são utilizadas aspas duplas para delimitar o início
e o fim de uma string. A solução nada prática foi eliminar manualmente as aspas dos posts
antes da execução do programa.
57
4. CONSIDERAÇÕES FINAIS
Este capítulo apresenta as conclusões alcançadas pelos resultados deste trabalho, assim como
as dificuldades encontradas durante o desenvolvimento, experiências adquiridas, propostas de
trabalhos futuros, e o artigo publicado em periódico, fruto deste estudo.
4.1.
Contribuições e Conclusões
As contribuições deste trabalho são:
a) Utilização de conceitos e técnicas de processamento de linguagem natural, tendo como
base a biblioteca Natural Language Toolkit (NLTK);
b) Análise de técnicas de mineração de texto;
c) Utilização da biblioteca NLTK para processamento de linguagem natural;
d) Utilização de técnicas de processamento de texto para extração de informações;
e) Padrões nos posts do sistema de recomendação da Amazon.
A partir destas contribuições pode-se concluir que:
a) Muitas recomendações negativas poderão ser classificadas corretamente permitindo
aos comércios eletrônicos minimizar perdas, tais como redução nas vendas por
problemas relacionados diretamente ao serviço e não à qualidade do produto.
b) A Biblioteca NLTK é uma ferramenta muito útil para processamento de linguagem
natural, entretanto, apresenta algumas limitações, por exemplo, quanto a categorização
de palavras.
c) Já foi alcançado um nível razoável de técnicas de processamento de texto e extração
de informações desenvolvidas pelas pesquisas acadêmicas, entretanto ainda é
necessário que se avance neste campo.
58
A seguir são apresentadas experiências obtidas ao longo do desenvolvimento deste
trabalho:
A biblioteca NLTK provê uma grande quantidade de recursos os quais, juntamente
com as funcionalidades da linguagem Python, auxiliam na busca de padrões em textos.
Essa busca, na maioria dos casos, pode se tornar uma tarefa trabalhosa pois é preciso
uma análise minuciosa do texto, frase e palavras envolvidos. Logo, a utilização desta
ferramenta, o NLTK, se fez fundamental nesta pesquisa, para o processamento de
linguagem natural.
A linguagem de programação Python realmente é mais simples e permite fazer
programas semelhantes aos desenvolvidos em Java ou C, porém com menos linhas de
código. Essa linguagem facilitou o aprendizado de manipulação de string e listas de
strings, o que permitiu o aprofundamento do meu conhecimento nessa linguagem.
4.1.1. Artigo Publicado
Este Trabalho gerou o artigo “Mineração de Dados em Sistema de Recomendação da Web”, o
qual foi publicado no 13º Simpósio de Iniciação Científica e Tecnológica, no Boletim Técnico
BT / 31 2011.
O estudo apresentou uma experiência de mineração de dados em sistemas de recomendação
da Web, utilizando linguagem de programação Python e o kit de desenvolvimento para
processamento de linguagem natural NLTK. O objetivo foi a busca de padrões linguísticos
nos posts do sistema de recomendação da Amazon, posts estes que sejam somente os
negativos em relação ao serviço.
59
4.2.
Trabalhos Futuros
As contribuições alcançadas com este trabalho não encerram as pesquisas relacionadas ao
processamento de linguagem natural e busca de padrões utilizando técnicas de mineração de
textos, mas abrem oportunidades para alguns trabalhos futuros:
Pesquisar soluções para as dificuldades apresentadas na seção 3.2.4;
Aplicação destas técnicas em outro cenário, como por exemplo, em outros sites de
recomendação, ou redes sociais, tais como Twitter, Facebook e Orkut;
Aprimoramento da ferramenta com uma interface gráfica mais amigável para que seja
possível pessoas mais leigas em programação utilizarem o sistema;
Utilização deste estudo em outro idioma, tal como português do Brasil;
Busca dos posts de maneira automatizada buscando diretamente do site por meio de
um Web Crawler.
60
5. REFERÊNCIAS
AMAZON. Comércio eletrônico Amazon. Disponível em: http://www.amazon.com/.
Acesso: 15/05/2011.
BRAGA, L. P. V. Introdução a Mineração de Dados. Rio de Janeiro: E-pappers Serviços
Editoriais, 2005.
BIRD, S; Natural Language Toolkit with Python, NLTK, 2009
BISHOP, C. M. Neural Networks for Pattern Recognition. UK: Oxford University Press,
1995.
COSTA, J. A. F. Classificação Automática e Análise de Dados por Redes Neurais AutoOrganizáveis. Tese de Doutorado. Universidade Estadual de Campinas (UNICAMP),
Faculdade de Engenharia Elétrica e de Computação, 1999.
DUDA, R. O., HART, P. E. STORK, D. G. Pattern Classification. Wiley Interscience, 2000.
ETZIONE O. The World Wide Web Quagmire or gold mine. Communications of the ACM,
vol.39, no.11, pp. 65-68, 1996.
EVERITT, B. Cluster Analysis. London: Edward Arnold; New York: John Wiley, 1993.
FACEBOOK. Disponível em: http://www.facebook.com
Acesso: 02/08/2011
FAYYAD, U.; PIATETSKY-SHAPIRO, G. e SMYTH, P. From data mining to knowledge
discovery: An Overview. In Advances in Knowledge Discovery and Data Mining,
MIT Press, Cambridge, Mass., 1-36. 1996.
61
FRAWLEY W.J.; PIATETSKY-SHAPIRO G.; MATHEUS, C.J. Knowledge discovery in
databases: an overview. In G. Piatetsky-Shapiro & W.J. Frawley, editors, “Knowledge
Discovery in Databases”. AAAI / MIT Press, 1991.
FELDMAN, R. E DAGAN, I. Knowledge discovery in textual databases (KDT). In
Proceedings of the First International Conference on Knowledge Discovery and
Data Mining (KDD-95), Montreal, Canada, August 20-21, AAAI Press, 112-117. 1995.
HAN, J.; KAMBER, M.; PEI, J. Data Mining: Concepts and Techniques. USA: Elsevier,
2011.
HEARST, M. A. Text data mining: Issues, techniques, and the relationship to
information access. Presentation notes for UW/MS workshop on data mining, 1997.
HOLSHEIMER, M.; SIEBES, A. P. J. M. Data Mining: the research for knowledge in
databases. Report CS-R9406. Centrum voor Wiskunde en Informatica, Amsterdam, The
Netherlands, 1994.
IBOPE NIELSEN ONLINE. Usabilidade da Internet no Brasil. Disponível em
http://www.ibope.com.br/calandraWeb/servlet/CalandraRedirect?temp=6&proj=PortalIBOPE
&pub=T&nome=home_materia&db=caldb&docid=C2A2CAE41B62E75E83257907000EC0
4F. Acesso em 13/09/2011.
JAIN, A. K.; MURTY, M. N.; FLYNN, P. J. Data Clustering: A Review. In: ACM
Computing Surveys, vol. 31, nº 3, pg. 264-323, 1999.
KUMAR R.; RAGHAVAN P.; RAJAGOPALAN S.; TOMKINS A.. The Web and Social
Networks. IEEE Computer, vol.35, no.11, 2002, pp.32-36. 2002.
LIBRELOTTO, G. V.; RAMALHO, J. C.; HENRIQUES, P. R. Representação de
Conhecimento na Sematic Web. XV Congresso da Sociedade Brasileira de Computação.
São Leopoldo, 2005.
MARINHO, L.; GIRARDI, R. Mineração na Web, Revista Eletrônica de Iniciação
Científica da Sociedade Brasileira de Computação, vol.3, n.2, 2003.
62
MICHALSKY, R. S.; BRATKO, I.; KUBAT, M. Machine Learning and Data Mining:
Methods and Applications. John Wiley & Sons, 1998.
MITCHELL, T. M. Machine Learning and Data Mining. Communications of the ACM, vol.
49, nº 11, Nov., 1999.
MONTANER, M., LÓPEZ, B., DE LA ROSA, J.L. A Taxonomy of Recommender Agents on
the Internet. Artificial Intelligence Review. Netherlands : Kluwer Academic Publishers, pp.
285-330, Agosto. 2003.
NLTK. Natural Language Toolkit. Disponível em: http://www.nltk.org/. Acesso:
21/04/2011.
ORKUT. Disponivel em: http://orkut.com
Acesso: 28/08/2011
PAL SANKAR, K.; VARUM T.; PABITRA M. Web Mining in Soft Computing
Framework: Relevant, State of the Art and Future Directions, 2000.
PARK, J e HUNTING, S. XML Topic Maps: Creating and Using Topic Maps for
the Web, volume ISBN 0-201-74960-2. Addison Wesley, 2003.
PYTHON. Python Programming Language. Disponível em: http://www.python.org/.
Acesso: 19/04/2011.
REATEGUI, E. B. e CAZELLA, S. C. Sistemas de Recomendação. XXV Congresso da
Sociedade Brasileira de Computação - A Universalidade da Computação: Um novo
agente de Inovação e Conhecimento. p. 306 - 348. 2005.
RICHARDSON, M. e DOMINGOS, P. Mining knowledge-sharing sites for viral marketing.
Proceedings of the Eighth ACM SIGKDD International Conference on Knowledge
Discovery and Data Mining. ACM Press, 2002.
63
SANTOS, L. M. ; ESMIN, A. A. A. ; ZAMBALDE, A. L. ; NOBRE, F. M. . Twitter, análise
de sentimento e desenvolvimento de produtos: Quanto os usuários estão expressando suas
opiniões?. Prisma.com, v. 13, p. 31-43, 2010.
SANTOS, R. Conceitos de Mineração de Dados na Web. In: XV Simpósio Brasileiro de
Sistemas Multimídia e Web, VI Simpósio Brasileiro de Sistemas Colaborativos, 2009,
Fortaleza – Anais, p. 81–124.
SETZER, V. Dado, Informação, Conhecimento e Competência. Revista de Ciência da
Informação DataGramaZero. 1999.
SIMOUDIS, E. Reality check for data mining. IEEE Expert, 11(5). 1996.
SRIVASTAVA J.; COOLEY R.; DESHPANDE M.; TAN, P.N. Web usage mining:
Discovery and applications of usage patterns from Web data. SIG KDD Explorations,
2000.
STACK EXCHANGE. Gramatica Inglesa. Disponível em: http://english.stackexchange.com/
Acesso: 15/07/2011
TAN, A. H. Text mining: the state of the art and the challenges. In: Workshop on Knowledge
Discovery From Advanced Databases, 1999. Proceedings... Heidelberg, 1999. p.65-70.
TUKEY, J. W. Exploratory Data Analysis. Addison-Wesley, Reading, MA, 1977.
TWITTER. Disponível em: http://twitter.com/
Acesso: 05/06/2011
ZUCHINI, M. H. Aplicações de mapas auto-organizáveis em Mineração de Dados e
recuperação de informação. 227 f. Dissertação (Mestrado em Engenharia Elétrica no Curso
de Engenharia Elétrica e de Computação) – UNICAMP – Universidade de Campinas,
Campinas, 2003.
64
6. ANEXO I
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
My packet
01
don't come
until this
time.
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
[('My', 'PRP$'), ('packet',
'NN'), ('do', 'VBP'), ("n't",
[ ('do', 'VBP'),
'RB'), ('come', 'VB'),
("n't", 'RB'),
('until', 'IN'), ('this', 'DT'),
('come', 'VB') ]
('time', 'NN'), ('.', '.')]
Verbo (come)
precedido por
advérbio
de
negação (not).
[('A', 'DT'), ('delay', 'NN'),
A delay of 23
days,
particularly
when caused
02
by A
AAAdvantage
's inefficiency
and poor
planning.
('of', 'IN'), ('23', 'CD'),
('days', 'NNS'), (',', ','),
Substantivo
('particularly', 'RB'),
('when', 'WRB'), ('caused',
'VBN'), ('by', 'IN'), ('A',
'DT'), ('AAAdvantage',
'NNP'), ("'s", 'POS'),
[ ('delay', 'NN'), ('of',
'IN'), ('23', 'CD'),
('days', 'NNS')]
(delay)
seguido
preposição
(of) e número
cardinal (23).
('inefficiency', 'NN'), ('and',
'CC'), ('poor', 'JJ'),
('planning', 'NN'), (',', ','),
('is', 'VBZ'),
('unacceptable', 'JJ')
Adjetivo
[('I', 'PRP'), ('am', 'VBP'),
03
I am still
('still', 'RB'), ('waiting',
waiting on
'VBG'), ('on', 'IN'), ('this',
this item,
'DT'), ('item', 'NN'), (',', ','),
more than a
('more', 'RBR'), ('than',
month later.
'IN'), ('a', 'DT'), ('month',
'NN'), ('later', 'JJ'), ('.', '.')]
(later)
precedido
[('month', 'NN'),
substantivo
('later', 'JJ')]
(month)
de
relacionado ao
tempo
espera.
de
65
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
[('I', 'PRP'), ('emailed',
'VBD'), ('again', 'RB'),
04
I emailed
('asking', 'VBG'), ('for',
again asking
'IN'), ('them', 'PRP'), ('to',
for them to
'TO'), ('look', 'VB'), ('into',
look into why
'IN'), ('why', 'WRB'),
[('long', 'JJ'),
such a long
('such', 'JJ'), ('a', 'DT'),
('delay', 'NN')]
delay if they
('long', 'JJ'), ('delay', 'NN'),
were already
('if', 'IN'), ('they', 'PRP'),
shipped.
('were', 'VBD'), ('already',
Substantivo
(delay)
precedido
de
adjetivo
(long).
'RB'), ('shipped', 'VBN'),
('.', '.')]
Substantivo
(delay)
Now Sirius
claims 4-6
05
week delay
before
shipping a
replacement.
precedido
[('Now', 'RB'), ('Sirius',
substantivo
'NNP'), ('claims', 'VBZ'),
('4-6', 'CD'), ('week', 'NN'),
[('4-6', 'CD'),
('delay', 'NN'), ('before',
('week', 'NN'),
'IN'), ('shipping', 'NN'), ('a', ('delay', 'NN')]
'DT'), ('replacement', 'NN'),
('.', '.')]
de
(week)
relacionada ao
tempo
precedido
número
cardinal.
de
66
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
50% of the
stock ordered
arrived, after
a 2 week
delay, and
worse, out of
06
those that
came, 35%
were in
unsellable
condition!
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
[('50', 'CD'), ('%', 'NN'),
Substantivo
('of', 'IN'), ('the', 'DT'),
(delay)
('stock', 'NN'), ('ordered',
precedido
'VBD'), ('arrived', 'VBN'),
substantivo
(',', ','), ('after', 'IN'), ('a',
(week)
'DT'), ('2', 'CD'), ('week',
relacionada ao
'NN'), ('delay', 'NN'), (',',
[('2', 'CD'), ('week',
tempo
','), ('and', 'CC'), ('worse',
'NN'), ('delay',
precedido
'VB'), (',', ','), ('out', 'IN'),
'NN')]
número
de
de
cardinal.
('of', 'IN'), ('those', 'DT'),
('that', 'WDT'), ('came',
'VBD'), (',', ','), ('35', 'CD'),
('%', 'NN'), ('were', 'VBD'),
('in', 'IN'), ('unsellable',
'JJ'), ('condition', 'NN'), ('!',
'.')]
[('First', 'NNP'), ('of', 'IN'),
07
First of all, it
('all', 'DT'), (',', ','), ('it',
arrived late,
'PRP'), ('arrived', 'VBD'),
in a box in
('late', 'JJ'), (',', ','), ('in',
terrible
'IN'), ('a', 'DT'), ('box',
[('arrived', 'VBD'),
no
condition,
'NN'), ('in', 'IN'), ('terrible',
('late', 'JJ')]
seguido
with
'JJ'), ('condition', 'NN'), (',',
insufficient
','), ('with', 'IN'),
packing.
('insufficient', 'NN'),
('packing', 'VBG'), ('.', '.')]
Verbo (arrive)
passado
de
adjetivo (late).
67
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
[('The', 'DT'), ('computer',
The computer 'NN'), ('arrived', 'VBD'),
08
arrived 3
('3', 'CD'), ('weeks', 'NNS'),
weeks later
('later', 'JJ'), ('and', 'CC'),
and in a
('in', 'IN'), ('a', 'DT'),
[('arrived', 'VBD'),
broken
('broken', 'NN'),
('3', 'CD'), ('weeks',
cardboard
('cardboard', 'NN'), ('box',
'NNS'), ('later', 'JJ')]
box, loosely
'NN'), (',', ','), ('loosely',
stuffed in
'RB'), ('stuffed', 'VBD'),
newspaper.
('in', 'IN'), ('newspaper',
Adjetivo (later)
precedido
de
substantivo
no
plural
(week)
relacionado
ao
tempo de espera.
'NN'), ('.', '.')]
[('The', 'DT'), ('first', 'JJ'),
The first set
of cd's didn't
09
arrive until
another week
later.
('set', 'NN'), ('of', 'IN'),
[('did', 'VBD'),
Verbo
(arrive)
('cd', 'NN'), ("'s", 'POS'),
("n't", 'RB'),
precedido
de
('did', 'VBD'), ("n't", 'RB'),
('arrive', 'VB')]
advérbio
de
negação (not).
('arrive', 'VB'), ('until',
'IN'), ('another', 'DT'),
[('week', 'NN'),
('week', 'NN'), ('later', 'JJ'),
('later', 'JJ')]
('.', '.')]
[('I', 'PRP'), ('had', 'VBD'),
I had no idea
that it would
10
take so long
to arrive 3
weeks or
more.
('no', 'DT'), ('idea', 'NN'),
('that', 'IN'), ('it', 'PRP'),
[('so', 'RB'), ('long',
('would', 'MD'), ('take',
'JJ'), ('to', 'TO'),
'VB'), ('so', 'RB'), ('long',
('arrive', 'JJ'), ('3',
'JJ'), ('to', 'TO'), ('arrive',
'CD'), ('weeks',
'JJ'), ('3', 'CD'), ('weeks',
'NNS')]
'NNS'), ('or', 'CC'), ('more',
'JJR')]
Verbo
(arrive)
precedido
de
preposição (to) e
adjetivo (long).
68
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
Verbo
[('We', 'PRP'), ('ordered',
We ordered it
and waited
11
for 2 weeks
for it
to arrive.
'VBD'), ('it', 'PRP'), ('and',
'CC'), ('waited', 'VBD'),
('for', 'IN'), ('2', 'CD'),
('weeks', 'NNS'), ('for',
'IN'), ('it', 'PRP'), ('to',
('2', 'CD'), ('weeks',
'NNS'), ('for', 'IN'),
('it', 'PRP'), ('to',
'TO'), ('arrive', 'VB')
(arrive)
precedido
por
preposição (to),
ligador e então
substantivo
(weeks)
'TO'), ('arrive', 'VB'), ('.',
relacionado
'.')]
tempo.
ao
[('I', 'PRP'), ('returned',
I returned the
product
12
unopened
because it
didn't arrive
in time.
'VBD'), ('the', 'DT'),
('product', 'NN'),
('unopened', 'VBD'),
[ ('did', 'VBD'),
('because', 'IN'), ('it',
("n't", 'RB'),
'PRP'), ('did', 'VBD'),
('arrive', 'VB')]
("n't", 'RB'), ('arrive',
Verbo
(arrive)
precedido
de
advérbio
de
negação.
'VB'), ('in', 'IN'), ('time',
'NN'), ('.', '.')]
[('It', 'PRP'), ('is', 'VBZ'),
It is over
priced and
13
took months
to arrive but
I love it.
Verbo
('over', 'IN'), ('priced',
'VBN'), ('and', 'CC'),
[('took', 'VBD'),
('took', 'VBD'), ('months',
('months', 'NNS'),
'NNS'), ('to', 'TO'),
('to', 'TO'), ('arrive',
('arrive', 'VB'), ('but',
'VB')]
'CC'), ('I', 'PRP'), ('love',
'VBP'), ('it', 'PRP'), ('.', '.')]
(arrive)
precedido
de
preposição (to) e
substantivo
(months)
relacionado
a
tempo no plural.
69
14
I waited a
couple
of
days in case
it
was
coming
separately,
but when it
didn't arrive
[('I', 'PRP'), ('waited',
'VBD'), ('a', 'DT'), ('couple',
[('did', 'VBD'),
'NN'), ('of', 'IN'), ('days',
("n't", 'RB'),
'NNS'), ('in', 'IN'), ('case',
('arrive', 'VB')]
'NN'), ('it', 'PRP'), ('was',
'VBD'), ('coming', 'VBG'),
('separately', 'RB'), (',', ','),
('but', 'CC'), ('when',
'WRB'), ('it', 'PRP'), ('did',
'VBD'), ("n't", 'RB'),
('arrive', 'VB'), ('.', '.')]
Verbo (arrive)
precedido de
adverbio de
negação
[('I', 'PRP'), ('had', 'VBD'),
I had ordered
other books
at the same
15
time and had
to wait 3
weeks for
this book.
('ordered', 'VBN'), ('other',
Verbo
'JJ'), ('books', 'NNS'), ('at',
'IN'), ('the', 'DT'), ('same',
'JJ'), ('time', 'NN'), ('and',
'CC'), ('had', 'VBD'), ('to',
'TO'), ('wait', 'VB'), ('3',
(wait)
seguido
de
[('wait', 'VB'), ('3',
número cardinal
'CD'), ('weeks',
e
'NNS')]
(weeks)
substantivo
relacionado
'CD'), ('weeks', 'NNS'),
ao
tempo no plural.
('for', 'IN'), ('this', 'DT'),
('book', 'NN'), ('.', '.')]
[('I', 'PRP'), ('was', 'VBD'),
I was
disappointed
this book did
16
not arrive wi
thin the time
frame I was
promised for
Christmas.
('disappointed', 'VBN'),
('this', 'DT'), ('book', 'NN'),
('did', 'VBD'), ('not', 'RB'),
('arrive', 'VB'), ('within',
[('did', 'VBD'), ('not',
'IN'), ('the', 'DT'), ('time',
'RB'), ('arrive',
'NN'), ('frame', 'NN'), ('I',
'VB')]
'PRP'), ('was', 'VBD'),
('promised', 'VBN'), ('for',
'IN'), ('Christmas', 'NNP'),
('.', '.')]
Verbo
(arrive)
precedido
de
advérbio
de
negação.
70
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
This site is
simple in
design, but
the item did
17
not arrive
when I
needed,
shipment
was 5 days
late.
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
Verbo
[('This', 'DT'), ('site', 'NN'),
('is', 'VBZ'), ('simple', 'JJ'),
('in', 'IN'), ('design', 'NN'),
(',', ','), ('but', 'CC'), ('the',
'DT'), ('item', 'NN'), ('did',
'VBD'), ('not', 'RB'),
('arrive', 'VB'), ('when',
'WRB'), ('I', 'PRP'),
('needed', 'VBD'), (',', ','),
('shipment', 'NN'), ('was',
precedido
[('did', 'VBD'), ('not', adverbio
'RB'), ('arrive',
18
now more
than 2
months late.
de
de
negação;
'VB')]
Adjetivo (Late)
[('shipment', 'NN'),
precedido
('was', 'VBD'), ('5',
substantivo
'CD'), ('days',
(days)
'NNS'), ('late', 'JJ')]
relacionado
de
ao
tempo de espera
'VBD'), ('5', 'CD'), ('days',
no plural.
'NNS'), ('late', 'JJ'), ('.', '.')]
As it was
(arrive)
Adjetivo (Late)
[('As', 'IN'), ('it', 'PRP'),
('was', 'VBD'), ('now',
[('2', 'CD'),
precedido
'RB'), ('more', 'JJR'),
('months', 'NNS'),
substantivo
('than', 'IN'), ('2', 'CD'),
('late', 'JJ')]
(months) tempo
('months', 'NNS'), ('late',
'JJ'), ('.', '.')]
e número.
de
71
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
[('The', 'DT'), ('site',
19
The site was
'NN'), ('was', 'VBD'),
slow to
('slow', 'JJ'), ('to', 'TO'),
Adjetivo
download,
('download', 'VB'), (',', ','),
precedido
the prices
('the', 'DT'), ('prices',
advérbio e ainda
were
'NNS'), ('were', 'VBD'),
outrageous,
('outrageous', 'JJ'), (',',
the flowers
','), ('the', 'DT'), ('flowers',
were
'NNS'), ('were', 'VBD'),
delivered
('delivered', 'VBN'),
very late and
('very', 'RB'), ('late', 'JJ'),
the quality
('and', 'CC'), ('the', 'DT'),
was poor.
('quality', 'NN'), ('was',
[('delivered', 'VBN'),
('very', 'RB'), ('late',
'JJ')]
precedido
(late)
de
de
verbo (delivered)
no passado.
'VBD'), ('poor', 'JJ'), ('.',
'.')]
The grill
20
came about a
week late.
Substantivo (late)
[('The', 'DT'), ('grill',
'NN'), ('came', 'VBD'),
[('week', 'NN'),
('about', 'IN'), ('a', 'DT'),
('late', 'NN')]
('week', 'NN'), ('late',
'NN'), ('.', '.')]
precedido
de
substantivo (week)
relacionado
tempo.
ao
72
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
21
A wait time of
1-2 months
was listed in
the
description,
but
this
shipment only
just arrived
today, three
and a half
months after
ordering.
[('A', 'DT'), ('wait', 'NN'),
('time', 'NN'), ('of', 'IN'),
('1-2', 'CD'), ('months',
'NNS'), ('was', 'VBD'),
('listed', 'VBN'), ('in',
'IN'), ('the', 'DT'),
('description', 'NN'), (',',
','), ('but', 'CC'), ('this',
'DT'), ('shipment', 'NN'),
('only', 'RB'), ('just',
'RB'), ('arrived', 'VBN'),
('today', 'NN'), (',', ','),
('three', 'CD'), ('and',
'CC'), ('a', 'DT'), ('half',
'NN'), ('months', 'NNS'),
('after', 'IN'), ('ordering',
'VBG'), ('.', '.')]
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
[('three', 'CD'),
('and', 'CC'), ('a',
'DT'), ('half', 'NN'),
('months', 'NNS'),
('after', 'IN'),
('ordering', 'VBG')]
Verbo no
gerúndio
(ordering)
precedido de
preposição e
substantivo
(months)
relacionado ao
tempo.
[('Although', 'IN'), ('I',
'PRP'), ('am', 'VBP'),
Although I
am fairly new
to Amazon
and don't
understand
22
why anything
ordered
through
Amazon takes
so long
to arrive.
('fairly', 'RB'), ('new',
'JJ'), ('to', 'TO'),
('Amazon', 'NNP'), ('and',
'CC'), ('do', 'VB'), ("n't",
'RB'), ('understand',
[('takes', 'VBZ'),
'VB'), ('why', 'WRB'),
('so', 'RB'), ('long',
('anything', 'NN'),
'RB'), ('to', 'TO'),
('ordered', 'VBN'),
('arrive', 'VB')]
('through', 'IN'),
('Amazon', 'NNP'),
('takes', 'VBZ'), ('so',
'RB'), ('long', 'RB'), ('to',
'TO'), ('arrive', 'VB'), ('.',
'.')]
Verbo
(arrive)
precedido
de
preposição (to) e
advérbio
tempo (long).
de
73
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
RESULTADO COM
AS PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZADAS
Verbo
[('Not', 'RB'), ('arrive',
23
(arrive)
Not arrive on
'JJ'), ('on', 'IN'),
[('Not', 'RB'),
precedido
de
schedule.
('schedule', 'NN'), ('.', '.')]
('arrive', 'JJ')]
advérbio
de
negação
[('The', 'DT'),
24
The
('tempurpedic', 'JJ'),
tempurpedic
('products', 'NNS'),
products take
('take', 'VBP'), ('forever',
[('take', 'VBP'),
precedido
forever to
'NN'), ('to', 'TO'),
('forever', 'NN'),
substantivo
arrive and
('arrive', 'VB'), ('and',
('to', 'TO'), ('arrive',
(forever)
customer
'CC'), ('customer', 'NN'),
'VB')]
relacionado
service is
('service', 'NN'), ('is',
horrible.
'VBZ'), ('horrible', 'JJ'),
Verbo
(arrive)
de
ao
tempo.
('.', '.')]
[('It', 'PRP'), ('took',
It took at
least a week
25
or two longer
than what it
was supposed
to have.
Adjetivo
'VBD'), ('at', 'IN'), ('least',
Relativo
'JJS'), ('a', 'DT'), ('week',
'NN'), ('or', 'CC'), ('two',
[('week', 'NN'), ('or',
'CD'), ('longer', 'JJR'),
'CC'), ('two', 'CD'),
('than', 'IN'), ('what',
('longer', 'JJR')]
'WP'), ('it', 'PRP'), ('was',
'VBD'), ('supposed',
'VBN'), ('to', 'TO'),
('have', 'VB'), ('.', '.')]
(longer)
precedido
de
número cardinal
precedido
substantivo
(week).
de
74
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('However', 'RB'), ('it',
Verbo
'PRP'), ('took', 'VBD'),
26
(Arrive)
However it
('over', 'RP'), ('two', 'CD'),
[('two', 'CD'),
precedido
took over two
('weeks', 'NNS'), ('to', 'TO'),
('weeks', 'NNS'),
(to)
weeks
('arrive', 'VB')]
('to', 'TO'),
substantivo
('arrive', 'VB')]
(weeks) relativo
to arrive.
de
e
ao tempo
[('I', 'PRP'), ('ordered',
'VBD'), ('this', 'DT'), ('shirt',
27
I ordered this
'NN'), ('and', 'CC'), ('IT',
shirt and IT
'PRP'), ('TOOK', 'NNP'),
TOOK OVER
('OVER', 'NNP'), ('A', 'DT'),
A MONTH
('MONTH', 'NNP'), ('TO',
TO ARRIVE b
'NNP'), ('ARRIVE', 'NNP'),
ut other than
('but', 'CC'), ('other', 'JJ'),
that this shirts
('than', 'IN'), ('that', 'DT'),
quality is just
('this', 'DT'), ('shirts', 'NNS'),
as expected
('quality', 'NN'), ('is', 'VBZ'),
clear, sharp
('just', 'RB'), ('as', 'IN'),
and easy to
('expected', 'VBN'),
read.
('clear,sharp', 'JJ'), ('and',
'CC'), ('easy', 'JJ'), ('to',
'TO'), ('read', 'VB'), ('.', '.')]
Verbo
(Arrive)
[ ('MONTH',
precedido
de
'NNP'), ('TO',
(to)
'NNP'),
substantivo
('ARRIVE',
(month) relativo
'NNP')]
ao
e
tempo
espera
de
75
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('Was', 'NNP'), ("n't",
'RB'), ('an', 'DT'), ('urgent',
Wasn't an
urgent buy so I
didn't pay
28
overnight
shipping but
the order took
WAY too long
to arrive.
'NN'), ('buy', 'NN'), ('so',
'IN'), ('I', 'PRP'), ('did',
'VBD'), ("n't", 'RB'), ('pay',
'VB'), ('overnight', 'JJ'),
('shipping', 'NN'), ('but',
'CC'), ('the', 'DT'), […]
[…] ('order', 'NN'), ('took',
[('too', 'RB'),
Verbo
(arrive)
('long', 'RB'),
precedido
('to', 'TO'),
(to) e advérbio
('arrive', 'VB')]
de tempo
de
'VBD'), ('WAY', 'NNP'),
('too', 'RB'), ('long', 'RB'),
('to', 'TO'), ('arrive', 'VB'),
('.', '.')]
[('week', 'NN'),
But it took a
29
week and a
half to arrive.
[('But', 'CC'), ('it', 'PRP'),
('and', 'CC'),
('took', 'VBD'), ('a', 'DT'),
('a', 'DT'),
('week', 'NN'), ('and', 'CC'),
('half', 'NN'),
('a', 'DT'), ('half', 'NN'), ('to',
('to', 'TO'),
'TO'), ('arrive', 'JJ'), ('.', '.')
('arrive', 'JJ')]
[('The', 'DT'), ('downside',
30
Verbo
(arrive)
precedido
de
(to)
e
substantivo
(half)
relacionado
ao
tempo.
Verbo
(arrive)
The downside
'NN'), ('is', 'VBZ'), ('that',
[ ('slow', 'JJ'),
precedido de (to)
is that it is
'IN'), ('it', 'PRP'), ('is',
('to', 'TO'),
e
slow to arrive.
'VBZ'), ('slow', 'JJ'), ('to',
('arrive', 'JJ')]
relacionados
'TO'), ('arrive', 'JJ'), ('.', '.')]
substantivo
ao
tempo de espera.
76
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
I paid for
expedited
shipping and
the product
took 9 days
to arrive, e31
mailed the […]
[…] vendor
through
Amazon and
got no
response back
from them.
[('I', 'PRP'), ('paid', 'VBD'),
('for', 'IN'), ('expedited',
'VBN'), ('shipping', 'VBG'),
('and', 'CC'), ('the', 'DT'),
Verbo
('product', 'NN'), ('took',
'VBD'), ('9', 'CD'), ('days',
'NNS'), ('to', 'TO'), ('arrive',
'VB'), (',', ','), ('e-mailed',
'JJ'), ('the', 'DT'), ('vendor',
'NN'), ('through', 'IN'),
(arrive)
precedido
de
('9', 'CD'),
(to)
e
('days', 'NNS'),
substantivo
('to', 'TO'),
(day) relativo ao
('arrive', 'VB')
tempo de espera
no plural.
('Amazon', 'NNP'), ('and',
'CC'), ('got', 'VBD'), ('no',
'DT'), ('response', 'NN'),
('back', 'RB'), ('from', 'IN'),
('them', 'PRP')]
[('The', 'DT'), ('product',
'NN'), ('also', 'RB'), ('took',
32
The product
'VBD'), ('a', 'DT'), ('long',
('long', 'JJ'),
also took a
'JJ'), ('time', 'NN'), ('to',
('time', 'NN'),
long time to
'TO'), ('arrive', 'VB'), ('.',
('to', 'TO'),
arrive.
'.')]
('arrive', 'VB')]
Verbo
(arrive)
precedido
(to)
substantivo
(time)
de
e
77
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('My', 'PRP$'), ('only',
'RB'), ('issue', 'NN'), ('is',
My only issue
is that it
literally took
about 3 weeks
33
to arrive, the
longest I have
ever waited for
a book to be
delivered.
'VBZ'), ('that', 'IN'), ('it',
'PRP'), ('literally', 'RB'),
('took', 'VBD'), ('about',
'IN'), ('3', 'CD'), ('weeks',
'NNS'), ('to', 'TO'), ('arrive',
'VB'), (',', ','), ('the', 'DT'),
('longest', 'JJS'), […]
[…] ('I', 'PRP'), ('have',
[('3', 'CD'),
('weeks', 'NNS'),
('to', 'TO'),
('arrive', 'VB')]
Verbo
(arrive)
precedido
de
(to)
substantivo
e
no
plural (weeks)
'VBP'), ('ever', 'RB'),
('waited', 'VBN'), ('for', 'IN'),
('a', 'DT'), ('book', 'NN'),
('to', 'TO'), ('be', 'VB'),
('delivered', 'VBN'), ('.', '.')]
Shipping went
a week and a
half past the
expected
34
arrival date for
very weak
excuses by the
shipping comp
anies.
[('Shipping', 'VBG'), ('went',
[('Shipping',
'VBD'), ('a', 'DT'), ('week',
'VBG'), ('went',
'NN'), ('and', 'CC'), ('a',
'VBD'), ('a',
'DT'), ('half', 'NN'), ('past',
'DT'), ('week',
Substantivo
'NN'), ('the', 'DT'),
'NN'), ('and',
(arrival)
('expected', 'VBN'),
'CC'), ('a', 'DT'),
precedido
('arrival', 'NN'), ('date',
('half', 'NN'),
verbo (expeted)
'NN'), ('for', 'IN'), ('very',
('past', 'NN'),
'RB'), ('weak', 'JJ'),
('the', 'DT'),
('excuses', 'NNS'), ('by', 'IN'), ('expected',
('the', 'DT'), ('shipping',
'VBN'),
'NN'), ('companies', 'NNS')]
('arrival', 'NN')]
de
78
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('When', 'WRB'), ('it',
When it didnt
arrive I
contacted
Amazon for a
refund
35
[…][…]of
the shipping ch
arges […]
[…] (which is
what they
guarantee).
'PRP'), ('didnt', 'VBP'),
('arrive', 'JJ'), ('I', 'PRP'),
[…]
[…] ('contacted', 'VBD'),
('Amazon', 'NNP'), ('for',
'IN'), ('a', 'DT'), ('refund',
'NN'), ('of', 'IN'), ('the',
'DT'), ('shipping', 'NN'),
[ ('didnt',
'VBP'), ('arrive',
'JJ')]
Verbo
(arrive)
precedido
de
advérbio
de
negação
('charges', 'VBZ'), ('(', ':'),
('which', 'WDT'), ('is',
'VBZ'), ('what', 'WP'),
('they', 'PRP'), ('guarantee',
'VBP'), (')', ':'), ('.', '.')]
[('But', 'CC'), ('shipping',
But shipping c
osts was too
36
expensive for
such a slow (910 days)
delivery.
'VBG'), ('costs', 'NNS'),
[('slow', 'JJ'),
('was', 'VBD'), ('too', 'RB'),
('(', 'NN'), ('9-
('expensive', 'JJ'), ('for',
10', 'CD'),
'IN'), ('such', 'JJ'), ('a', 'DT'), ('days', 'NNS'),
('slow', 'JJ'), ('(', 'NN'), ('9-
(')', ':'),
10', 'CD'), ('days', 'NNS'),
('delivery',
(')', ':'), ('delivery', 'NN'), ('.',
'NN')]
'.')]
Substantivo
(delivery)
precedido
por
substanttivo
(days) precedido
de
numero
cardinal
adjetivo (slow)
e
79
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('I', 'PRP'), ('have', 'VBP'),
('bought', 'VBN'),
37
I have bought
('hundreds', 'NNS'), ('of',
hundreds of
'IN'), ('items', 'NNS'),
items from
('from', 'IN'), ('Amazon',
Amazon for
'NNP'), ('for', 'IN'), ('years',
years, […]
'NNS'), (',', ','), ('and', 'CC'),
[…] and this is
('this', 'DT'), ('is', 'VBZ'),
positively the
('positively', 'RB'), ('the',
worst shipping
'DT'), ('worst', 'JJS'),
time I have
('shipping', 'VBG'), ('time',
ever
'NN'), ('I', 'PRP'), ('have',
encountered.
'VBP'), ('ever', 'RB'),
Verbo
[ ('worst', 'JJS'),
('shipping',
'VBG'), ('time',
'NN')]
no
gerúndio
(shipping)
precedido
de
adjetivo
de
qualidade
negativa (worst)
('encountered', 'VBN'), ('.',
'.')]
[('It', 'PRP'), ('\x92', 'VBP'),
Substantivo
('s', 'NNS'), ('the', 'DT'),
38
It‟s
('shipping', 'NN'), ('delays',
the shipping d
'VBZ'), ('that', 'IN'), ('I',
elays that I
'PRP'), ('can', 'MD'), ('\x92',
can‟t tolerate.
'VB'), ('t', 'NN'), ('tolerate',
'NN'), ('.', '.')]
[ ('shipping',
'NN'), ('delays',
'VBZ')]
(shipping)
seguido
verbo
de
(delays)
no presente na
terceira pessoa
80
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('Sure', 'RB'), ('it', 'PRP'),
Sure it was
free but even
though it was
in stock,
because I used
39
[…]
[…]the super
saver shipping
they did not
ship it […]
[…] for 5 days.
('was', 'VBD'), ('free', 'JJ'),
('but', 'CC'), ('even', 'RB'),
('though', 'IN'), ('it', 'PRP'),
('was', 'VBD'), ('in', 'IN'),
('stock', 'NN'), (',', ','),
('because', 'IN'), ('I', 'PRP'),
('used', 'VBD'), ('the', 'DT'),
('super', 'NN'), ('saver',
[('did', 'VBD'),
('not', 'RB'),
('ship', 'VB')]
Verbo
(ship)
precedido
de
advérbio
de
negação
'NN'), ('shipping', 'NN'),
('they', 'PRP'), ('did', 'VBD'),
('not', 'RB'), ('ship', 'VB'),
('it', 'PRP'), ('for', 'IN'), ('5',
'CD'), ('days', 'NNS'), ('.', '.')]
Substantivo
[('WATCH', 'NN'), ('OUT',
'IN'), ('FOR', 'NNP'),
('SLOW', 'NNP'),
40
Watch out for
('AMAZON', 'NNP'),
slow amazon
('SHIPPING', 'NNP'), ('.',
shipping.
'.')]
[('SLOW',
'NNP'),
('AMAZON',
'NNP'),
('SHIPPING',
'NNP')]
(shipping)
precedido
de
substantivo
(Amazon)
precedido
de
substantive
relacionado
tempo (slow)
a
81
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('One', 'CD'), ('reason',
41
One reason I
'NN'), ('I', 'PRP'), ('do',
don't like
'VBP'), ("n't", 'RB'), ('like',
AMAZON is
'VB'), ('AMAZON', 'NNP'),
their super
('is', 'VBZ'), ('their', 'PRP$'),
Substantivo
slow
('super', 'NN'), ('slow', 'NN'),
(shipping)
free shipping c ('free', 'JJ'), ('shipping',
[ ('slow', 'NN'),
precedido
de
ompared to
'NN'), ('compared', 'VBN'),
('free', 'JJ'),
adjetivo
[…]
('to', 'TO'), ('other', 'JJ'),
('shipping',
precedido
[…]other sites
('sites', 'NNS'), ('where',
'NN')]
substantive
where there
'WRB'), ('there', 'EX'),
relacionado
free
('free', 'JJ'), ('shipping',
tempo (slow)
shipping takes
'NN'), ('takes', 'VBZ'),
only a few
('only', 'RB'), ('a', 'DT'),
days.
('few', 'JJ'), ('days', 'NNS'),
(free)
por
ao
('.', '.')]
Verbo
[('The', 'DT'), ('shipping',
The shipping t
42
ook over 10
days to arrive
at my house.
'NN'), ('took', 'VBD'), ('over',
'RP'), ('10', 'CD'), ('days',
'NNS'), ('to', 'TO'), ('arrive',
'VB'), ('at', 'IN'), ('my',
'PRP$'), ('house', 'NN'), ('.',
'.')]
[ ('10', 'CD'),
('days', 'NNS'),
('to', 'TO'),
('arrive', 'VB')]
(arrive)
precedido
de
preposição (to)
precedido
de
substantivo
relacionado
tempo (days)
ao
82
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
Unfortunately,
43
the product
didn't arrive.
[('Unfortunately', 'RB'), (',',
','), ('the', 'DT'), ('product',
'NN'), ('did', 'VBD'), ("n't",
'RB'), ('arrive', 'VB'), ('.', '.')]
('did', 'VBD'),
("n't", 'RB'),
('arrive', 'VB')
Verbo
(arrive)
precedido
de
adverbio
de
negação
[('I', 'PRP'), ('find', 'VBP'),
I find out that
this movie isn't
[…]
44
[…] shipping t
il Jan 2 and
will not be
delivered until
Jan 9th!!!
('out', 'RP'), ('that', 'IN'),
('this', 'DT'), ('movie', 'NN'),
('is', 'VBZ'), ("n't", 'RB'),
('shipping', 'VBG'), ('til',
'NN'), ('Jan', 'NNP'), ('2',
'CD'), ('and', 'CC'), ('will',
'MD'), ('not', 'RB'), ('be',
'VB'), ('delivered', 'VBN'),
('until', 'IN'), ('Jan', 'NNP'),
("n't", 'RB'),
('shipping',
Verbo (ship) no
'VBG'),
gerúndio
('will', 'MD'),
precedido
de
('not', 'RB'),
advérbio
de
('be', 'VB'),
negação
('delivered',
'VBN')
('9th', 'CD'), ('!', '.'), ('!', '.')
[('I', 'PRP'), ('ordered', 'VBD'),
('my', 'PRP$'), ('absolutely',
I ordered my
45
'RB'), ('perfect', 'JJ'), ('gazebo',
absolutely
'NN'), (',', ','), ('and', 'CC'), ('it',
perfect gazebo,
'PRP'), ('was', 'VBD'),
and it was
('supposed', 'VBN'), ('to', 'TO'),
('14', 'CD'),
precedido
supposed to
('take', 'VB'), ('5', 'CD'), ('days',
('days', 'NNS'),
substantivo
take 5 days
'NNS'), ('for', 'IN'), ('shipping',
('later', 'JJ')
relacionado
for shipping,
'NN'), (',', ','), ('14', 'CD'),
14 days later, i
('days', 'NNS'), ('later', 'JJ'),
received.
(',', ','), ('i', 'PRP'), ('received',
'VBD')]
Adjetivo (later)
tempo (days)
de
ao
83
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
('shipping',
However, the
shipping took
46
[…]
[…]soooo
long. Too long
to arrive.
[('However', 'RB'), (',', ','),
('the', 'DT'), ('shipping',
'NN'), ('took', 'VBD'),
('soooo', 'NN'), ('long.',
'NNP'), ('Too', 'NNP'),
('long', 'RB'), ('to', 'TO'),
('arrive', 'VB'), ('.', '.')]
'NN'), ('took',
'VBD'), ('soooo',
Verbo
(arrive)
'NN'), ('long.',
precedido
'NNP')
preposição (to)
de
precedido
de
('long', 'RB'),
advérbio
de
('to', 'TO'),
tempo
('arrive', 'VB')
[('Not', 'RB'), ('sure', 'JJ'),
47
Not sure why it
('why', 'WRB'), ('it', 'PRP'),
took such a
('took', 'VBD'), ('such', 'JJ'),
long time for
('a', 'DT'), ('long', 'JJ'),
the book
('time', 'NN'), ('for', 'IN'),
to arrive when
('the', 'DT'), ('book', 'NN'),
shipping
('to', 'TO'), ('arrive', 'VB'),
within the US.
('when', 'WRB'), ('shipping',
'VBG'), ('within', 'IN'), ('the',
('long', 'JJ'),
Verbo (arrive)
('time', 'NN'),
precedido
('for', 'IN'),
alguns
('the', 'DT'),
substantivos
('book', 'NN'),
ainda precedido
('to', 'TO'),
de
('arrive', 'VB')
(long)
('week', 'NN'),
Verbo
de
e
adjetivo
'DT'), ('US', 'NNP'), ('.', '.')]
[('It', 'PRP'), ('took', 'VBD'),
It took a week
48
and a half to
arrive.
('a', 'DT'), ('week', 'NN'),
('and', 'CC'), ('a', 'DT'),
('half', 'NN'), ('to', 'TO'),
('arrive', 'JJ'), ('.', '.')]
('and', 'CC'),
('a', 'DT'),
('half', 'NN'),
('to', 'TO'),
('arrive', 'JJ')
(arrive)
precedido
de
preposição
(to)
precedido
de
substantivo
relacionado
ao
tempo (week and
a half)
84
RESULTADO
RESULTADO DO
POST
CATEGORIZADOR
PADRÃO
COM AS
PRINCIPAIS
RESULTADO
PALAVRAS
DA ANÁLISE
CATEGORIZA
DAS
[('Well', 'NNP'), (',', ','),
('the', 'DT'), ('day', 'NN'),
49
Verbo
Well, the day it
('it', 'PRP'), ('was', 'VBD'),
was supposed
('supposed', 'VBN'), ('to',
to arrive, my
'TO'), ('arrive', 'VB'), (',', ','), ('been', 'VBN'),
order still had
('my', 'PRP$'), ('order',
('delivered',
not been
'NN'), ('still', 'RB'), ('had',
'VBN')]
delivered.
'VBD'), ('not', 'RB'), ('been',
[ ('not', 'RB'),
(delivered)
no
passado
precedido
de
auxiliar verbal e
advérbio
de
negação
'VBN'), ('delivered', 'VBN'),
('.', '.')]
[('i','PRP'),('am','VBP'),('ver
y','RB'),
('unhappy','JJ'),('that','IN'),(
I am very
unhappy that i
had to contact
the company a
50
couple times
after the order
did not arrive
even close to
the estimated
delivery date.
'i',
'PRP'),('had','VBD'),('to','T
O'),('contact','VB'),('the','DT
'),('company','NN'),
('a','DT'),('couple','NN'),('ti
[ ('did', 'VBD'),
mes',
('not', 'RB'),
'VBZ'),('after','IN'),('the','D
('arrive', 'VB')]
T'),
('order','NN'),('did','VBD'),('
not',
'RB'),('arrive','VB'),('even','
RB'),
('close','JJ'),('to','TO'),('the','
DT'), ('estimated','VBN')]
Verbo
(arrive)
precedido
de
advérbio
de
negação