Análise de Query Log
Thuener Silva Diego Cedrim
Julho, 2008
Sumário
1 Introdução
1
2 Trabalhos Relacionados
2
3 Query Log
2
4 Detecção de Perfil de Usuário
3
5 Análise de Palavras
5.1 Grafo de Palavras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
6
7
6 Trabalhos Futuros
8
7 Conclusão
8
1
Introdução
Um fator chave para a popularidade das máquinas de busca atuais é a interface amigável que elas apresentam.
As máquinas de busca permitem que os usuários especifiquem consultas simplesmente como listas de palavraschave, seguindo a abordagem de sistemas tradicionais de recuperação de informação [Baeza-Yates & RibeiroNeto (1999)].
Nem sempre uma lista de palavras-chave descreve bem a informação necessitada pelo usuário. Pode não
ser tão fácil formular consultas que resultem em uma coleção de documentos relevantes para o usuário. Uma
das razões dessa dificuldade é ambiguidade encontrada em muitos termos da linguagem natural [Baeza-Yates
et al. (2004)]. Em nosso estudo, pudemos detectar que a maioria das consultas submetidas têm poucos
termos (seção 3), aumentando a probabilidade da consulta ser ambı́gua.
O objetivo do nosso trabalho é analisar um log de consultas e analisar o comportamento e o relacionamento
de palavras ambı́guas e não ambı́guas para tentar reconhecer padrões que as identifiquem exclusivamente.
Se pudermos encontrar com precisão palavras ambı́guas e seus sentidos, poderemos identificar o contexto em
que a consulta está está inserida baseado no perfil de consultas do usuário.
Antes de analisar as palavras das consultas, o foco do nosso trabalho era tentar identificar o perfil de
consultas dos usuários. As tentativas feitas estão detalhadas na seção 4.
Este trabalho é apresentado da seguinte maneira: na seção 2 mostramos alguns trabalhos já realizados na
análise de query logs, na seção 3 falamos detalhadamente sobre o log de consultas que utilizamos, mostrando
algumas estatı́sticas extraı́das, na seção 5 mostramos como foram feitas as análises das palavras ambı́guas
e dos grafos gerados por elas, na seção 6 listamos alguns trabalhos que podem ser feitos futuramente e na
seção 7 podemos ver as considerações finais.
1
2
Trabalhos Relacionados
Baeza-Yates [Baeza-Yates et al. (2004)] propõe um método que, dada uma consulta submetida a uma máquina
de busca, sugere uma lista de consultas relacionadas. As queries relacionadas são baseadas em consultas
anteriormente submetidas. O método proposto é baseado num processo de categorização em que grupos de
consultas semanticamente similares são identificados. Além de descobrir as consultas relacionadas, o método
ordena as recomendações por um critério de relevância.
Zhang [Zhang & Nasraoui (2006)] apresenta um método simples e intuitivo de mineração de log de
consultas para prover recomendações de queries em máquinas de buscas de larga escala. Para obter uma
solução mais compreensiva, foram combinados dois métodos diferentes. O primeiro visa estudar e modelar o
comportamento de buscas sequenciais de usuários e interpretar este comportamento de buscas consecutivas
como um refinamento da consulta, ao passo que o segundo usa técnicas de similaridade baseada em conteúdo.
Broder [Broder et al. (2007)] propõe uma metodologia para construir um sistema robusto de classificação
de queries, que pode identificar milhares de classes de consultas com uma precisão razoável em tempo real,
enquanto negocia processamento com o volume de queries de uma máquina de busca comercial. Dada uma
consulta, seu tópico é identificado classificando os resultados da busca encontrados pela querie. Motivados
pela necessidade de encontrar propagandas relacionadas, os autores focam em consultas raras.
Bianco [Bianco et al. (2005)] foca na identificação e definição de “sessões de usuário”, uma agregação
de várias conexões TCP geradas pelo mesmo host. A identificação das sessões não é trivial. Abordagens
tradicionais se baseiam em mecanismos de limiares de tempo, que são muito sensı́veis ao valor assumido do
limiar e pode ser difı́cil de se estipular o valor do mesmo. Utilizando técnicas de categorização, os autores
definem uma nova metodologia para identificar as sessões sem requerer um valor estipulado a priori para o
limiar de tempo.
Murray [Murray et al. (2006)] introduz uma nova abordagem para identificação de sessões de usuários
baseada na atividade dos mesmos. O método proposto é centralizado no usuário, não na população de
usuários ou no sistema e pode ser aplicado em situações em que o usuário prefere não divulgar informações
pessoais. Os autores adotam técnicas de categorização aglomerativa hierárquica [Jain et al. (1999)] com um
critério de parada que é motivado pelas atividades dos usuários. Uma avaliação feita usando o LOG de
consultas da América Online revela que o algoritmo proposto atinge 98% de precisão em identificar sessões
comparado com julgamentos humanos.
3
Query Log
Utilizamos em nossos experimentos o LOG de consultas do site português SAPO (www.sapo.pt). O LOG
foi armazenado em um arquivo texto de 1.8 GB, formado de consultas coletadas entre 30 de setembro e 31
de outubro de 2007, contabilizando um total de 2.958.444 linhas (consultas).
Em média, as consultas têm 2,5 termos. Dentre as consultas mais submetidas, podemos encontrar “Sexo”
e “Youtube”, além de “Google” e “Gmail”. Na Tabela 1(a) podemos ver as dez consultas mais submetidas
à máquina de busca do SAPO. Na primeira coluna podemos ver a posição da palavra na lista ordenada, na
do meio vemos o número de vezes que a consulta foi enviada e a terceira mostra o texto submetido. Para
chegarmos a esses valores, tratamos cada consulta como uma palavra e contamos quantas vezes ela se repete
em todo o LOG.
Além de encontrar as consultas mais pesquisadas, fizemos uma varredura no LOG para saber quais
palavras mais aparecem nas consultas. Dentre as mais populares estão “Portugal” e “Lisboa”. Na tabela
1(b) podemos ver as dez primeiras palavras buscadas. Na primeira coluna encontramos a posição da palavra
na lista ordenada, na segunda vemos o número de vezes que a palavra aparece e na terceira podemos ver a
palavra procurada.
A maioria das consultas possui apenas um termo de busca (cerca de 43%), mas existe um número
considerável de consultas com dois e três termos (26% e 15% respectivamente). Na figura 1 podemos ver um
gráfico que relaciona o número de termos das consultas com o número de consultas realizadas. É notório
que o número de consultas diminui quando se aumenta o número de termos.
Para trabalharmos com dados mais amigáveis, foi necessário fazer a construção de um dicionário de
palavras. Tivemos que retirar do arquivo contendo as consultas todos os acentos das palavras e transformar
alguns caracteres em formato UTF-8 para ASCII. Foram retiradas também 321 stopwords. Somente foram
Posição
1
2
3
4
5
6
7
8
9
10
Número de Buscas
36969
30228
15455
11628
10051
9301
6315
5773
5649
5344
Consulta
hi5
google
sexo
youtube
gmail
hotmail
rfm
tmn
tempo
google pt
Posição
1
2
3
4
5
6
7
8
9
10
((a)) Consultas mais Submetidas
Número de Figurações
91048
48243
47415
30648
25625
22693
19377
15312
14693
14099
Palavra
pt
hi5
google
sexo
jogos
portugal
sapo
youtube
hotmail
lisboa
((b)) Palavras mais Submetidas
Tabela 1: Dados sobre as consultas
Figura 1: Número de Consultas por Termos
aceitas palavras que aparecem no mı́nimo duas vezes. Todas as palavras que não estavam contidas no
dicionário foram desconsideradas nos experimentos.
4
Detecção de Perfil de Usuário
A nossa meta inicial era identificar o perfil de consultas dos usuários cujos dados estavam no nosso log.
Podemos entender “perfil” como sendo uma indicação do contexto em que o usuário está inserido. Analisando nossos logs pessoais de consultas no Google (www.google.com/history/), podemos ver que fazemos
muitas consultas relacionadas à informática, mostrando que estamos inseridos no mundo da computação. Se
pudermos identificar automaticamente o que fizemos manualmente em nossos logs, podemos trazer alguns
benefı́cios para as máquinas de busca:
• PageRank personalizado;
• Recomendação de produtos;
• Links Patrocinados mais precisos;
• Recomendação de consultas para desambiguação.
Para identificar os perfis, primeiramente tentamos encontrar os tipos de consultas existentes. Representamos cada consulta como um vetor e categorizamos com k-means para encontrar os tipos. Para construir
os vetores a partir das consultas, primeiramente geramos um dicionário de tamanho d de todas as palavras
submetidas à máquina de busca e atribuı́mos um número para cada palavra. Assim, cada vetor tem dimensão
d e possui o valor zero em todas as componentes cujo ı́ndice represente uma palavra que não está na consulta.
Como exemplo, suponha o dicionário da tabela 2(a) e as consultas da tabela 2(b).
Índice
1
2
3
4
5
6
Palavra
Bola
Casa
Cachorro
Mão
de
Carro
Número
1
2
3
4
5
6
Consulta
Bola
Casa de Cachorro
Carro
Carro de mão
Cachorro
Mão
((b)) Consultas
((a)) Dicionário
Tabela 2: Dicionário e Consultas
Representadas como vetores, as consultas da tabela 2(a) aparecem na tabela 3
Número da Consulta
1
2
3
4
5
6
Vetor
(1, 0, 0, 0, 0, 0)
(0, 1, 1, 0, 1, 0)
(0, 0, 0, 0, 0, 1)
(0, 0, 0, 1, 1, 1)
(0, 0, 1, 0, 0, 0)
(0, 0, 0, 1, 0, 0)
Tabela 3: Vetores das Consultas
Antes de mostrar o algoritmo que implementamos (k-means) iremos definir algumas notações. O número
de clusters k é fixo no k-means. Inicialize os k centroides (w1 , w2 , · · · , wk ) com um dos n vetores de entrada
(i1 , i2 , · · · , in ). Cj é o j-ésimo cluster e a qualidade de cada cluster é calculada pela seguinte função de erro:
E=
k X
X
|il − wj |
2
j=1 il ∈Cj
Por questões de otimização, utilizamos uma estrutura que nos permitiu não armazenar em memória os
milhares de zeros nos vetores. Implementamos o algoritmo 1 retirado do artigo de Khaled Alsabti [Alik
(2008)].
1. O tempo necessário para a execução do primeiro Loop é O(nkd);
2. O tempo requerido para calcular os centroids é O(nd);
3. O tempo requerido para calcular a função de erro é O(nd);
Devido ao volume de dados (quase três milhões de consultas e um dicionário com milhares de palavras),
a tentativa de categorizar as consultas não foi bem sucedida e não obtivemos bons resultados.
Algorithm 1 Algoritmo K-means
Inicialize k vetores (w1 , · · · , wk ) tal que wj = il , j ∈ {1, · · · , k}, l ∈ {1, · · · , n}
Cada cluster Cj é associado ao vetor wj
repeat
for all vetor de entrada il , onde l ∈ {1, · · · , n} do
atribua il ao cluster Cj com o mais próximo wj
end for
for all cluster Cj il , onde j ∈ {1, · · · , k}Pdo
atualize o centroide wj tal que wj = il ∈Cj il / |Cj |
end for
compute a função de erro E
until E não mude significativamente ou os membros dos clusters não mudem
5
Análise de Palavras
Usamos o log do site Sapo para analisar o comportamento de palavras ambı́guas e não ambı́guas, com o
intuito de reconhecer padrões para posteriormente identificar se uma palavra é dúbia ou não. Iniciamos
nosso estudo com um conjunto de palavras ambı́guas e outro com não ambı́guas para gerarmos um grafo a
partir das consultas que utilizam as palavras do dicionário. Nas seguintes subseções apresentaremos como
gerar tal grafo (subseção 5.1) e mostraremos alguns resultados (subseção 5.2).
Figura 2: Grafo da Palavra Jaguar
A intuição é que um palavra ambı́gua vai estar ligada a palavras que estão considerando-a com significados
diferentes e essa por serem de assuntos diferentes provavelmente não vão estar ligadas entre si. Nesse trabalho
denominamos esse comportamento de ponto de separação. Um exemplo é a palavra jaguar que poderia ser
utilizada com dois diferentes sentidos de felino e marca de carro. Para formar o grafo obtemos o conjunto
de palavras que estão ligadas diretamente com um palavra ambı́gua, ou seja procura Querys com ambas as
palavras, para cada Query encontrada é adiciona-se aresta ou uma unidade ao peso da aresta se a mesma
já existir. Para essas palavras encontradas, colocar-se um aresta entre pares de palavras que estão contidas
em uma mesma Query. Exemplo : jaguar está ligado diretamente com felino, leopardo, animal, jaguatirica,
onca, porsche, carro, ferrari e motor. Nesse caso nenhuma das palavras encontrada estão juntas em uma
Query, por isso não tem nenhuma arestas entre elas. A figura 2 ilustra como seria o grafo.
A proposta é formar um grafo parecido com a figura 2 e depois rodar um algorı́timo sobre ele para
determinar se a palavra procurada é ambı́gua.
5.1
Grafo de Palavras
Para melhor ilustrar o processo de geração do grafo de palavras, considere o conjunto de consultas apresentado
na tabela 4. Esta tabela lista seis consultas que giram em torno da palavra “tempo”, que é uma palavra que
pode ter mais de um sentido. Observe que no conjunto de consultas apresentado, a palavra tempo aparece
no contexto meteorológico e no cronológico.
Número
1
2
3
4
5
6
Consulta
previsão meteorologia tempo
previsão tempo amanhã barcelona
tempo meteorologia Itália
tempo livre
tempo de andar
tempo de informação
Tabela 4: Consultas Exemplo
A geração do grafo se inicia representando cada palavra do conjunto de consultas como vértices (figura
3 ). Observe que a palavra “de” não aparece no grafo, eliminamos ela junto com todas as outras chamadas
stopwords.
Figura 3: Palavras Representadas por Vértices
Depois de representar cada palavra como um vértice do grafo, inserimos arestas entre as palavras que
aparecem na mesma consulta (figura 4). Uma aresta entre dois vértices quer dizer que em algum momento
as duas palavras aparecem em uma mesma consulta.
Figura 4: Palavras Representadas por Vértices com Arestas
Depois disso, colocamos pesos nas arestas, indicando quantas vezes as palavras apareceram juntas em
uma mesma consulta (figura 5). Essa figura apresenta pesos em apenas alguns vértices para não poluir ainda
mais o grafo.
Figura 5: Palavras Representadas por Vértices com Arestas e Pesos
Depois desta fase, alguns cortes são efetuados para reduzir o número de arestas no grafo. No nosso caso,
eliminamos arestas com pesos menores que cinco. A tı́tulo de ilustração, excluiremos todos os vértices de
peso 1 do nosso grafo (figura 6).
Figura 6: Grafo com Cortes
Depois dos cortes o grafo está completo. Foram grafos dessa natureza que analisamos em nosso trabalho.
Na subseção seguinte mostraremos mais detalhes sobre a análise.
5.2
Experimentos
Foi realizado um experimento com a palavra tempo para determinar quais os seus vizinhos, ou seja quais
palavras aparecem na mesma Query que a palavra tempo. Inicialmente foi feito sem levar em consideração
os pesos das arestas. Foi gerado um grafo com 166 nós e 1674 arestas. Como o grafo ficou muito extenso
e com palavras como madeira, que não fazem muito sentido conectadas com tempo. Por esse motivo foi
utilizado os pesos das arestas como forma de seleção. Pegando somente as arestas com peso acima de 5
foi gerado um grafo com 16 nós e 154 arestas. Tanto no primeiro grafo com 166 nós e no segundo com
16 nós nenhum era induzia a utilização da palavra tempo no sentido de perı́odo. Foram tentados outros
experimentos com as palavras ambı́guas: forte, casa e Porto. A palavra casa pode ser usada porque foram
retirados todos os acentos das palavras contidas no LOG. A intuição da utilização da palavra porto foi dada
por causa da origem do LOG. Mesmo assim não foram obtidos bons resultados no três casos. Foi tentado
ainda um experimento com a palavra mapa, para tentar identificar o comportamento de uma palavra não
ambı́gua e como o esperado a palavra não tinha um comportamento similar com um ponto de separação.
6
Trabalhos Futuros
Como continuação do trabalho, devemos utilizar os resultados dos experimentos para gerar um algoritmo
de detecção de palavras ambı́guas. Este algoritmo seria bastante útil se conseguı́ssemos detectar o perfil
do usuário, já que analisando o perfil poderı́amos saber qual o sentido da palavra que o usuário busca,
melhorando e tornando ainda mais amigável a interface das máquinas.
Em uma fase posterior, seria interessante validarmos os algoritmos em um query log mais completo que
o do Sapo, já que este só conta com informações básicas da busca, impossibilitando várias aplicações de
algoritmos já desenvolvidos. Como o proposto por Baeza-Yates [Baeza-Yates et al. (2004)].
7
Conclusão
Não tivemos exito para detecção do perfil do usuário. Isso foi causado por uma série de fatores com: falta
de informações no LOG, dificuldade de padronização das palavras e pouca capacidade de processamento.
Mas a extração de perfil do usuário através do LOG é possı́vel e há muitos trabalhos nesse assunto. A
análise de palavras ambı́guas somente seria possı́vel com um LOG mais extenso. Principalmente pelo tipo
de informação que se é encontrada nesse tipo de LOG. Por exemplo no experimento com a palavra tempo
não foi possı́vel achar nenhuma com sentido de perı́odo. O que é fácil de entender levando em consideração
ao tipo de informação que normalmente o usuário deseja.
Referências
Alik, K. R. (2008), ‘An efficient k’-means clustering algorithm’, Pattern Recogn. Lett. 29(9), 1385–1391.
Baeza-Yates, R. A. & Ribeiro-Neto, B. (1999), Modern Information Retrieval, Addison-Wesley Longman
Publishing Co., Inc., Boston, MA, USA.
Baeza-Yates, R. A., Hurtado, C. A. & Mendoza, M. (2004), Query recommendation using query logs in
search engines., in W. Lindner, M. Mesiti, C. Türker, Y. Tzitzikas & A. Vakali, eds, ‘EDBT Workshops’,
Vol. 3268 of Lecture Notes in Computer Science, Springer, pp. 588–596. URL
http://dblp.uni-trier.de/db/conf/edbtw/edbtw2004.html#Baeza-YatesHM04.
Bianco, A., Mardente, G., Mellia, M., Munafo, M. & Muscariello, L. (2005), ‘Web user session
characterization via clustering techniques’, Global Telecommunications Conference, 2005. GLOBECOM
’05. IEEE 2, 6 pp.–.
Broder, A. Z., Fontoura, M., Gabrilovich, E., Joshi, A., Josifovski, V. & Zhang, T. (2007), Robust
classification of rare queries using web knowledge, in ‘SIGIR ’07: Proceedings of the 30th annual
international ACM SIGIR conference on Research and development in information retrieval’, ACM, New
York, NY, USA, pp. 231–238.
Jain, A. K., Murty, M. N. & Flynn, P. J. (1999), ‘Data clustering: a review’, ACM Comput. Surv.
31(3), 264–323.
Murray, G. C., Lin, J. & Chowdhury, A. (2006), ‘Identification of user sessions with hierarchical
agglomerative clustering’, ASIST’06 1, 3–8.
Zhang, W., Liu, S., Yu, C. T., Sun, C., Liu, F. & Meng, W. (2007), Recognition and classification of noun
phrases in queries for effective retrieval., in M. J. Silva, A. H. F. Laender, R. A. Baeza-Yates, D. L.
McGuinness, B. Olstad, Øystein Haug Olsen & A. O. Falcão, eds, ‘CIKM’, ACM, pp. 711–720. URL
http://dblp.uni-trier.de/db/conf/cikm/cikm2007.html#ZhangLYSLM07.
Zhang, Z. & Nasraoui, O. (2006), ‘Mining search engine query logs for query recommendation’, Proceedings
of the 15th international conference on World Wide Web pp. 1039–1040.
Download

Análise de Query Log