Leandro Amancio
RANQUEAMENTO DE RESPOSTAS EM COMUNIDADES DE PERGUNTA E RESPOSTA BASEADO EM ATUALIDADE E
QUALIDADE: UM ESTUDO DE CASO COM STACK OVERFLOW
Dissertação submetida ao Programa de Pós-Graduação em Ciência da Computação da Universidade Federal de Santa Catarina para a obtenção do Grau de Mestre em Ciência da Computação.
Orientadora: Prof.ª Dr.ª Carina Friedrich Dorneles
Florianópolis 2017
AGRADECIMENTOS
Antes de tudo, quero agradecer a Deus, por ter me abençoado todos os dias da minha vida, por iluminar meu caminho e me dar forças para seguir sempre em frente.
Também agradeço a todos que direta ou indiretamente ajudaram a realizar este trabalho:
À minha família pelo apoio.
A todos os especialistas colaboradores que ajudaram na construção do ground truth.
Aos analistas da SETIC, em especial à sala desenvolvimento 8 pelo apoio e compreensão.
À Daniel Hasan Dalip pelo suporte na utilização de seu trabalho de doutorado.
À minha orientadora Carina Friedrich Dorneles, pela orientação, apoio e dedicação.
“Todos somos ignorantes, só que em assuntos diferentes”.
RESUMO
Em comunidades de pergunta e resposta (CQAs), ranking de atualidade refere-se a colocar respostas recentes e com alta qualidade nas primeiras posições de um ranking. Ser recente não está relacionado com o quão nova é a data de criação ou edição da resposta, mas o quão atual é o conteúdo da resposta. Porém, o ranking também deve levar em consideração a qualidade das respostas, pois de pouco adianta uma resposta que seja atual, mas que não responda apropriadamente a pergunta. Assim como, por outro lado, é pouco interessante uma resposta que possua qualidade, apresentando um texto adequado e com referências, mas que contenha informações obsoletas.
A combinação desses dois quesitos (atualidade e qualidade) é extremamente importante, pois os usuários necessitam obter acesso facilitado às melhores respostas para resolver rapidamente seus problemas e, geralmente, esperam por soluções atuais.
As CQAs costumam disponibilizar mecanismos de votação para que os próprios usuários possam indicar as respostas de melhor qualidade, porém, esse método não se preocupa com a atualidade das respostas. Além disso, trata-se de um processo lento e subjetivo que não acompanha a taxa de surgimento de novos conteúdos. Logo, faz-se necessário o uso de um mecanismo automático que considere também a atualidade para realizar o ranking.
Para realizar esse tipo de ranqueamento é necessário utilizar características textuais e não textuais que indiquem a qualidade e/ou a atualidade das respostas. Essas características podem ser extraídas da própria resposta, dos usuários envolvidos ou do ambiente de CQA como um todo.
O presente trabalho indica quais características podem ser utilizadas para esse fim e propõe uma abordagem, focada nesse tipo de ambiente, para fornecer ranking das respostas baseando-se na atualidade e qualidade que elas possuem, sem necessitar da avaliação dos usuários por meio de votação. De forma resumida, essa abordagem combina características textuais e não textuais com algoritmos de
learning to rank para predizer a atualidade e a qualidade das respostas.
A qualidade é utilizada para classificar as respostas entre boas e ruins, através da aplicação de um ponto de corte, formando dois conjuntos de respostas: de alta qualidade e de baixa qualidade. Em seguida, é feita a ordenação de cada conjunto por ordem de atualidade. Por fim, esses conjuntos são concatenados dando origem ao ranking final, de modo que as melhores respostas e mais atuais fiquem nas primeiras posições.
comunidade do Stack Overflow e um conjunto de experimentos, utilizando diferentes combinações de características e diferentes algoritmos de learning to rank, são descritos.
Palavras-chave: Ranking de atualidade; Comunidade de pergunta e resposta.
ABSTRACT
In Community Question Answering (CQA), recency ranking refers to put the freshness answers with high quality in top positions of ranking. Freshness is not related to how recent is the answer creation date, but to how up-to-date is the answer content. However, the ranking should also take into account the quality of the answers, since it is unhelpful when an answer is fresh but it does not answer the question properly. On the other hand, it is not interesting when the answer has good quality, presenting adequate text and references, but containing obsolete information.
Combining these two issues (freshness and quality) is extremely important because the users need to get best answers quickly to solve their questions and, usually, they expect up-to-date solutions.
The CQAs usually provide voting mechanisms that the users themselves can indicate the best quality answers. However, this method is not concerned with the freshness of the answers. Moreover, it is a slow and subjective process that does not keep up the rate of arising new content. Therefore, it is necessary to use an automatic mechanism that also considers the freshness to perform the ranking.
In order to carry out this type of classification, it is necessary to use textual and non-textual features to indicate the quality or freshness of the responses. These features can be extracted from the response itself, from the users involved or from the CQA environment as a whole.
In this work, we indicate which features can be used for this purpose and we propose a new approach, whose the focus is on CQA environments, to provide a ranking of the answers based on the freshness and quality they have, without needing users evaluation through voting.
In short, the approach combines textual and non-textual features with learning to rank algorithms to predict the freshness and quality of responses. Quality is used to classify the answers between good and bad, by applying a cut-off point, forming two sets of answers: high quality and low quality. Then, each set is sorted by freshness. Finally, the sets are concatenated to result the final ranking, so that the best and most freshness answers stay in the first positions in the ranking.
To prove the effectiveness of our proposal, a study case with Stack Overflow community and a set of experiments, using different
described.
LISTA DE FIGURAS
Figura 1 – Exemplo de cenário onde seria importante ter as respostas ordenadas por qualidade e atualidade. ... 25 Figura 2 – Exemplo do ambiente do Stack Overflow com destaque para alguns serviços que facilitam seu uso. ... 32 Figura 3 – Funcionamento de learning to rank aplicado a respostas em ambiente de CQA ... 40 Figura 4 – Número de artigos de pesquisa relacionados com sistemas de CQA ao longo dos anos. ... 48 Figura 5 – Classificação de abordagens de CQA proposta por Srba e Bielikova em (SRBA e BIELIKOVA, 2016) ... 49 Figura 6 – Arquitetura do framework Multiview proposto por DALIP em (DALIP et al., 2016) ... 57 Figura 7 – Abordagem Proposta ... 66 Figura 8 – Ferramenta Web para montagem do ground truth – exemplo da tela de escolha das perguntas. ... 77 Figura 9 – Ferramenta Web para montagem do ground truth – exemplo da tela para análise da atualidade das respostas. ... 79 Figura 10 – Visão geral dos rankings em comparação com o baseline. 85 Figura 11 – Rankings gerados utilizando algoritmos de learning to rank e
rankings gerados sem o uso desses algoritmos. ... 85
Figura 12 – Melhores rankings por abordagem. ... 86 Figura 13 – Melhores rankings por algoritmo. ... 87 Figura 14 – Rankings baseados nas características de usuários e rankings baseados nas características de idade da resposta. ... 88 Figura 15 – Ranking baseado nas características de usuários e o ranking baseado nas características de idade são equivalentes... 89 Figura 16 – Rankings das características individuais. ... 90 Figura 17 – Comparação entre ranking baseado em todas as respostas e
ranking baseado nas respostas relevantes... 93
Figura 18 – Exemplo de comparação entre os rankings de InfoGain e
FSelect gerados utilizando o algoritmo Coordinate Ascent (CA). ... 94
Figura 19 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo AdaRank (AR). ... 109 Figura 20 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo LambdaMart (LM). ... 110 Figura 21 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo Coordinate Ascent (CA).110
USER_FEATURES gerados pelo algoritmo SVM. ... 111 Figura 23 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo MART. ... 111 Figura 24 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo RankNet (RN)... 112 Figura 25 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo RankBoost (RB). ... 112 Figura 26 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo ListNet (LN). ... 113 Figura 27 – Comparação entre os conjuntos AGE_FEATURES e USER_FEATURES gerados pelo algoritmo Random Forest (RF). .... 113 Figura 28 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo Coordinate Ascent (CA). ... 114 Figura 29 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo LambdaMart (LM). ... 115 Figura 30 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo RandomForest (RF)... 115 Figura 31 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo SVM. ... 116 Figura 32 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo AdaRank (AR). ... 116 Figura 33 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo MART. ... 117 Figura 34 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo RankNet (RN). ... 117 Figura 35 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo RankBoost (RB). ... 118 Figura 36 – Comparação entre os rankings de InfoGain e FSelect gerados pelo algoritmo ListNet (LN). ... 118
LISTA DE TABELAS
Tabela 1 – Datas de lançamento das versões do Eclipse. ... 26
Tabela 2 – Características indicadoras da qualidade da resposta. ... 35
Tabela 3 – Comparação de características usadas em trabalhos mais recentes relacionados com CQAs. ... 59
Tabela 4 – Características de atualidade. ... 70
Tabela 5 – Rankings gerados nos experimentos. ... 81
Tabela 6 – As 4 características que mais influenciam na formação do ranking, indicados pelo InfoGain e FSelect. ... 91
Tabela 7 – Medidas de Precisão, Revocação e F-measure das novas características propostas. ... 91
Tabela 8 – Algoritmos implementados no RankLib. ... 103
Tabela 9 – Bibliotecas e Ferramentas de utilizadas nos coletores ... 106
Tabela 10 – Ferramentas utilizadas na aplicação web ... 107
LISTA DE ABREVIATURAS E SIGLAS
AR – AdaRank
CA – Coordinate Ascent
CQA – Community Question Answering GBRT – Gradient Boosting Regression Trees HTML – HyperText Markup Language IDE – Integrated Development Environment RI – Recuperação da Informação
L2R – Learning to Rank LM – LambdaMART LN – ListNet
LLR – Log Likelihood Ratio MAP – Mean Average Precision
MART – Multiple Additive Regression Trees ML – Machine Learning
NDCG – Normalized Discounted Cumulative Gain NLP – Natural Language Processing
QA – Question Answering RB – RankBoost
RF – Random Forests RN – RankNet
SGBD – Sistema de Gerenciamento de Banco de Dados SQL – Structured Query Language
SVM – Support Vector Machine URL – Uniform Resource Locator XML – Extensible Markup Language
SUMÁRIO 1 INTRODUÇÃO ... 21 1.1APRESENTAÇÃO ... 21 1.2MOTIVAÇÃO ... 23 1.3HIPÓTESE DE PESQUISA ... 26 1.4OBJETIVO GERAL ... 27 1.5OBJETIVOS ESPECÍFICOS ... 27 1.6CONTRIBUIÇÕES ... 28 1.7ORGANIZAÇÃO DO DOCUMENTO ... 28 2 FUNDAMENTAÇÃO TEÓRICA ... 29
2.1COMMUNITY QUESTION ANSWERING (CQA) ... 29
2.1.1 Domínio de uma CQA ... 31
2.1.2 Stack Overflow - uma CQA de domínio específico ... 31
2.2QUALIDADE DA RESPOSTA ... 34
2.3RANKING ... 36
2.3.1 Ranking no contexto de CQA ... 36
2.3.2 Processo de ranking com atualidade ... 37
2.4APRENDIZADO DE MÁQUINA SUPERVISIONADO ... 38
2.4.1 Learning to Rank aplicado a CQAs ... 38
2.4.2 Algoritmos de Learning to Rank ... 41
2.5NDCG@K ... 43
2.6GANHO DE INFORMAÇÃO (INFOGAIN) ... 44
2.7FSELECT ... 45
3 ESTADO DA ARTE... 47
3.1CLASSIFICAÇÃO DE ABORDAGENS DE CQA ... 47
3.1.1 Exploratory Studies ... 50
3.1.2 Adaptative Support... 50
3.1.3 Content and User Modeling ... 51
3.2TRABALHOS RELACIONADOS ... 54
3.2.1 Análise Comparativa ... 58
3.3RANKING BASEADO EM ATUALIDADE (RECENCY RANKING) ... 60
3.3.1 Análise dos Trabalhos... 62
4 ABORDAGEM PROPOSTA ... 65
4.1VISÃO GERAL ... 65
4.3.1 Descrição das Características de Atualidade ... 71
4.3.2 Extração e Representação das Características de Atualidade ... 72
5 EXPERIMENTOS ... 75
5.1BASE DE DADOS ... 75
5.2CONSTRUÇÃO DO GROUND TRUTH DE ATUALIDADE ... 76
5.3CONFIGURAÇÃO DOS EXPERIMENTOS ... 80
5.4MÉTRICAS DE AVALIAÇÃO ... 82
5.5RESULTADOS ... 84
5.5.1 Análise dos Rankings ... 84
5.5.2 Análise das Características ... 90
5.5.3 Discussões dos resultados ... 92
5.5.3.1 Respostas sem avaliação ... 92
5.5.3.2 Ponto de corte e relevância da resposta ... 93
5.5.3.3 Ranking usando somente as melhores características ... 94
5.5.3.4 Problemas com as características de usuários ... 95
5.5.3.5 Links das respostas... 95
6 CONCLUSÕES E TRABALHOS FUTUROS ... 97
APÊNDICES ... 99
A TECNOLOGIAS UTILIZADAS... 101
A.1 Linguagem Java ... 101
A.2 Eclipse ... 101
A.3 Stack Exchange ... 102
A.4 MySql ... 102
A.5 RankLib ... 103
A.6 SVMRank... 104
A.7 Weka (InfoGain) ... 104
A.8 LibSVM (FSelect) ... 105
A.9 Apache Commons Mathematics Library (Wilcoxon) ... 105
A.10 Outras bibliotecas e ferramentas de Suporte ... 105
A.11 Aplicação web para formação do ground truth ... 107
B DADOS ADICIONAIS ... 109
B.1 Age_Features e User_Features por algoritmo ... 109
B.2 Rankings de InfoGain e FSelect por algoritmo ... 114
B.3 Cálculo do Teste Estatístico de Wilcoxon ... 119
Capítulo 1
1
Introdução
1.1 Apresentação
Comunidades on-line focadas em pergunta e resposta (Community Question Answering - CQA) apresentam um ambiente onde os usuários podem fazer perguntas e publicar respostas sobre uma grande variedade de assuntos (WEI et al., 2015; ZHANG et al., 2014). Dessa forma, CQAs como Yahoo Answer!1, Stack Overflow2 e Quora3, têm atraído grande quantidade de pessoas e se tornado um valioso repositório de conhecimento (MA et al., 2015; YANG et al., 2013). Por exemplo, o Stack Overflow, fórum destinado a programadores profissionais e entusiastas na área, possui mais de 7 milhões de usuários registrados e ultrapassou os 13 milhões de questões computadas até abril de 2017.
Tendo em vista a grande quantidade de acessos e o grande volume de informações armazenadas, torna-se crítico para uma CQA apresentar os melhores valores de seu repositório de modo a satisfazer rapidamente as buscas dos usuários e encorajar o engajamento dentro da comunidade (YANG et al., 2013). Para tal, esse tipo de plataforma deve fornecer serviços de recomendação e ordenação (ranking), de modo a colocar as melhores respostas nas primeiras posições, facilitando o seu acesso. 1 https://www.answers.yahoo.com 2 https://stackoverflow.com 3 https://www.quora.com
Contudo, devido à natureza colaborativa desse tipo de comunidade, a intensa participação dos usuários pode fazer o volume de informação aumentar rapidamente e ocasionar a perda de controle sobre a edição (DALIP et al., 2013). Como consequência, pode existir grande variação das informações postadas, apresentando principalmente respostas de baixa qualidade, pouca relevância e com conteúdo ultrapassado (YANG et al., 2013; ZHANG et al., 2014). Tais características impactam de forma negativa impedindo o fornecimento eficiente dos serviços prestados pelas CQAS e dificultando o uso desses ambientes de modo geral.
Para tentar evitar a variação da qualidade das informações, é comum que essas comunidades forneçam orientações aos usuários sobre como formular boas perguntas e fornecer boas respostas. Também na tentativa de tratar os problemas relativos ao conteúdo, muitas CQAs costumam disponibilizar mecanismos de votação. Dessa forma, os próprios usuários, baseados em seus julgamentos, podem selecionar as melhores perguntas e respostas, filtrar spams e indicar a reputação dos editores.
Entretanto, como o processo de votação é manual e individual, torna-se difícil acompanhar a taxa de surgimento de novos conteúdos. O processo também é subjetivo, podendo ser influenciado por predileção, tendenciosidade humana ou mesmo pela variação de conhecimento e experiência do usuário votante (DALIP et al., 2013). Além disso, perguntas com baixa popularidade e respostas muito recentes possuem poucos votos ou nunca são avaliadas. Isso impossibilita determinar, de forma confiável, quais respostas são de melhor qualidade (WEI et al., 2015). Logo, faz-se necessário o uso de mecanismos automáticos que realizem esse tipo de qualificação sem precisar da avaliação prévia dos usuários.
Existem estudos, como em (DALIP et al., 2013; DALIP et al., 2016; MA et al., 2015; WEI et al., 2015), que se relacionam com algum tipo de controle automático, focado em CQAs, para lidar com as respostas e efetuar sua ordenação. No geral, esses trabalhos realizam o
ranking das respostas prevendo a qualidade que elas possuem,
baseando-se em características contidas na resposta, na pergunta e no ambiente que os cercam. Assim, é possível apresentar primeiro as respostas com maior qualidade para os usuários, mesmo quando não possuem votos ou qualquer outro tipo de avaliação.
Contudo, esses estudos não tratam o aspecto da atualidade do conteúdo das respostas durante o processo de ranking. No entanto, esse
aspecto é desejável e recomendado pelas CQAs. O Stack Overflow, por exemplo, orienta que uma boa resposta deve: estar correta, ser clara, fornecer exemplos, citar materiais relevantes e estar atualizada (DALIP et al., 2016). Além disso, uma resposta pode ter qualidade textual, ou seja, estar bem escrita e referenciada, mas conter informações obsoletas, o que a torna de pouco interesse para os usuários. Isto porque, na maioria dos casos, as pessoas procuram por soluções recentes para os problemas e dúvidas que possuem.
Neste contexto, a atualidade do conteúdo pode ser definida pela identificação do quão recente é, ou atualizado está, o tema ou os termos abordados na resposta. Por exemplo, durante a formação do ranking, ao se confrontar duas respostas referentes a um determinado framework para uso em um software, a resposta que faz referência a uma versão mais recente poderia ser ordenada à frente de outra resposta relacionada a uma versão mais antiga, se ambas as respostas fossem consideradas de boa qualidade.
Dessa forma, neste trabalho é proposta uma abordagem que dispensa a necessidade de avaliação do usuário, através da votação, e permite a realização do ranking das respostas levando em conta não somente a qualidade do texto como também o aspecto da atualidade de seu conteúdo. Aspecto esse que, de acordo com a revisão da literatura realizada, ainda não havia sido abordado no contexto de CQAs.
1.2 Motivação
Em CQAs, é comum o desejo e a recomendação para que as pessoas evitem a repetição de perguntas já existentes dentro do próprio ambiente. Este propósito serve para concentrar o conhecimento e facilitar a navegabilidade e utilização do fórum pelos usuários. Logo, em muitos casos, uma mesma pergunta não deveria ser refeita devido à única diferença ser a versão do objeto de dúvida. Nesse sentido, existem diversas situações em que os usuários realizam perguntas de forma atemporal. Assim, considerando o Stack Overflow como exemplo, as perguntas relacionadas à recomendação de algum framework computacional ou dúvidas referentes a algum software, podem ser genéricas e não referenciar uma versão específica do produto em questão.
Quando este tipo de pergunta surge, naturalmente as respostas que começam a surgir são referentes à versão atualmente em uso ou versões mais antigas. Então, o autor da pergunta possivelmente marca a
resposta que mais lhe foi útil e os outros usuários votam nas respostas que julgam ser mais adequada.
O fato de não haver uma versão especificada na pergunta do usuário, de certa forma, a torna mais genérica. Portanto, com o passar do tempo, as respostas podem se tornar obsoletas, enquanto a pergunta ainda pode continuar pertinente e de interesse por parte dos usuários. Além disso, como geralmente as CQAs orientam evitar a realização de perguntas repetidas, há uma tendência em inibir o surgimento de novas perguntas semelhantes referentes a versões mais recentes.
Nesse caso, o ideal é que novas respostas, mais atuais, fossem surgindo para a mesma pergunta já realizada, contendo a identificação de qual versão a resposta se refere. Entretanto, ao mesmo tempo, também podem surgir respostas com conteúdo ultrapassado. Isto implica no fato de que uma simples ordenação por data, não necessariamente garante as primeiras respostas com conteúdo mais atual e muito menos reflete o grau de qualidade que elas possuem.
A Figura 1 exemplifica este tipo de cenário, onde é comum surgirem várias respostas, cada uma identificando a versão de software a qual se refere, como destacado em vermelho. No caso desse exemplo, foi realizada uma pergunta sobre a IDE do Eclipse4 e existem diversas respostas, cada uma relacionada a uma versão diferente do Eclipse. A Tabela 1 serve como referência para ressaltar que cada versão do Eclipse foi lançada em anos diferentes.
Figura 1 – Exemplo de cenário onde seria importante ter as respostas ordenadas por qualidade e atualidade.
Tabela 1 – Datas de lançamento das versões do Eclipse.
Nome da Versão Data de Lançamento Número da versão
Oxygen 28 de Junho de 2017 4.7 Neon 22 de Junho de 2016 4.6 Mars 24 de Junho de 2015 4.5 Luna 25 de Junho de 2014 4.4 Kepler 26 de Junho de 2013 4.3 Juno 27 de Junho de 2012 4.2 Indigo 22 de Junho de 2011 3.7 Helios 23 de Junho de 2010 3.6 Galileo 24 de Junho de 2009 3.5 Ganymede 25 de Junho de 2008 3.4 Europa 29 de Junho de 2007 3.3 Callisto 30 de Junho de 2006 3.2
Diante deste cenário, seria importante para os usuários ter as respostas mais relevantes e atuais nas primeiras posições, ou seja, ordenadas conforme a qualidade e atualidade de seus conteúdos. Isto porque, muitas vezes, é pouco interessante para os usuários que uma resposta seja atual, mas não responda apropriadamente à pergunta ou, por outro lado, apresente um texto adequado e com referências, mas não contenha informações atuais. Dessa forma, um ranking baseado em qualidade e atualidade ajudaria aos usuários terem acesso facilitado às melhores respostas, visto que, no geral, as pessoas tendem a se interessar pela versão mais recente.
1.3 Hipótese de Pesquisa
Muitos estudos referentes às CQAs tratam da qualidade e relevância da resposta através do uso de indicadores presentes nos textos e no ambiente como um todo. Porém, não foram encontrados trabalhos relacionados que levassem em conta a atualidade do conteúdo da resposta.
Sabe-se que atualmente novas técnicas, conceitos e tecnologias surgem a todo instante, por isso, o acesso a respostas mais atualizadas tendem a ser de maior interesse do ponto de vista dos usuários. Isto porque, na maioria dos casos, as pessoas procuram por soluções recentes para os problemas e dúvidas que possuem. Além disso, assim como é
discutido de forma mais aprofundada no Capítulo 2, a atualidade colabora para uma noção mais ampla de qualidade da resposta. Portanto, o ranking de respostas baseado em atualidade tende a permitir que o usuário acesse as melhores respostas de forma facilitada e consiga sanar suas dúvidas rapidamente.
A intuição é que indicadores de atualidade podem ser utilizados para realizar o ranking das respostas de uma pergunta de modo que este
ranking, além de considerar a qualidade do texto e a relevância da
resposta, também considere a atualidade do conteúdo. Em vista disso, a hipótese deste trabalho é que o ranking de atualidade baseado nesses indicadores ofereça resultados melhores do que a simples ordenação pela data de criação/edição das respostas.
1.4 Objetivo Geral
Este trabalho tem como principal objetivo realizar o ranking do conjunto de respostas de uma determinada pergunta, em ambientes focados em CQAs, levando em conta a qualidade e atualidade do conteúdo das respostas de forma que não exija que as respostas tenham sido avaliadas previamente pelos usuários, através da votação.
1.5 Objetivos Específicos
O objetivo principal pode ser subdividido nos seguintes objetivos específicos:
Identificar e utilizar trabalhos já propostos na literatura para determinar a relevância da resposta e a qualidade do texto;
Identificar indicadores já propostos na literatura que possam ser adaptados para determinar a atualidade do conteúdo das respostas;
Especificar novos indicadores que podem ajudar a determinar a atualidade do conteúdo das respostas em ambientes específicos de CQAs;
Propor uma forma de combinar trabalhos existentes e os indicadores de atualidade para gerar o ranking de respostas;
Verificar a contribuição que cada indicador de atualidade fornece no processo de ranking de atualidade.
1.6 Contribuições
A principal contribuição deste trabalho diz respeito à realização do ranking de respostas levando em conta o aspecto da atualidade do seu conteúdo. De acordo com o levantamento literário realizado, este aspecto ainda não havia sido abordado no contexto de CQAs.
Também podem ser citadas como outras contribuições importantes: (i) especificação de características indicadoras de atualidade e formas de extraí-las e coletá-las; (ii) utilização desses indicadores no processo de ranking e; (iii) experimentos que mostram o impacto que essas características apresentam na tarefa de identificar a atualidade do conteúdo das respostas e promover seu ranking em CQAs.
1.7 Organização do Documento
Esta dissertação está dividida em seis capítulos. Neste primeiro capítulo, foi descrito o contexto onde este trabalho está inserido, incluindo sua motivação, objetivos e contribuições.
O segundo capítulo apresenta uma fundamentação teórica sobre conceitos necessários para a compreensão deste trabalho.
O terceiro capítulo dedica-se a fazer uma revisão bibliográfica sobre temas relacionados à avaliação do conteúdo em CQAs. Também é apresentada uma revisão do estado da arte acerca do processo de
ranking de respostas e do processo de ranking de documentos com base
na atualidade de seus conteúdos. Este estudo traz embasamento para que se possa construir o modelo proposto.
O quarto capítulo apresenta a abordagem proposta. As características de atualidade são detalhadas e a arquitetura é descrita em termos de módulos e seus relacionamentos.
O quinto capítulo detalha os experimentos realizados, a descrição dos dados utilizados, da metodologia de avaliação adotada e dedica-se a fazer análise dos resultados obtidos.
No sexto capítulo são apresentadas as conclusões deste trabalho e as perspectivas para futuros melhoramentos.
Capítulo 2
2
Fundamentação Teórica
Esta seção fornece uma fundamentação teórica relativa aos principais termos e conceitos abordados que são importantes para o entendimento deste trabalho.
2.1 Community Question Answering (CQA)
Sistemas de pergunta e resposta (question answering - QA) têm como objetivo fornecer respostas para perguntas. De modo geral o processo de QA é dividido em dois passos principais. No primeiro passo, ao receber uma pergunta como entrada, uma search engine pesquisa em páginas web por trechos que possivelmente respondam essa pergunta. Para realizar essa busca são utilizadas técnicas de recuperação de informação (RI) e as páginas web encontradas são chamadas de respostas candidatas. No passo seguinte é feita a validação e seleção das respostas candidatas de acordo com uma pontuação que é calculada para medir o grau de confiança que cada resposta apresenta em conseguir responder a pergunta. Esta pontuação determina a ordenação do conteúdo que é retornado para o usuário (WEIS, 2015). Exemplos desse tipo de sistema são Eagli5 e LogAnswer6.
5 http://bitem.hesge.ch/resource/eagli-eagle-eye 6 http://www.loganswer.de/
Apesar do desenvolvimento contínuo de novas técnicas de RI, muitas perguntas ficam sem uma resposta satisfatória, isto se deve principalmente à dificuldade em capturar a intenção por trás da pergunta e à ausência de conteúdo relevante (BOUADJENEK et al., 2016). Além disso, os usuários estão cada vez mais exigentes quanto à capacidade das
search engines em satisfazer as necessidades de informações mais
complexas (MOLINO e AIELLO, 2014).
Para resolver esse tipo de questão, surgiram sistemas chamados de Comunidades de Pergunta e Resposta (Community Question
Answering - CQA). As CQAs disponibilizam uma plataforma onde os
usuários podem realizar perguntas e fornecer respostas em vários domínios distintos, por meio de linguagem natural, formando uma comunidade entorno dessa troca de informações(SHAH et al., 2009).
Diferente das QA’s, que utilizam dados armazenados para encontrar respostas automaticamente, as CQAs conectam seus usuários de modo a obter ajuda mútua para responder perguntas muito contextualizadas e compartilhar conhecimento entre si (ARORA et al., 2015; BOUADJENEK et al., 2016; LI et al., 2012). Exemplos de tais sistemas incluem: Yahoo Answer!7, WikiAnswers8, Stack Overflow9,
Quora10, MedHelp11 entre outros.
Contudo, para o bom funcionamento de uma CQA é importante evitar questões repetidas e manter um nível satisfatório de qualidade das perguntas, das respostas e dos comentários (RAVI et al., 2014). Por isso, apesar de uma CQA caracterizar-se basicamente por fornecer um meio de submeter perguntas e respostas, é comum que muitas CQAs também forneçam outros tipos de serviços (YANG et al., 2013), tais como:
Serviços de ordenação (ranking) das melhores respostas de uma pergunta;
Serviços de sugestão de perguntas semelhantes existentes e;
Serviços que ajudam a identificar a reputação dos editores de conteúdo dentro da comunidade.
7 https://www.answers.yahoo.com 8 https://www.wikianswers.com 9 https://stackoverflow.com 10 https://www.quora.com 11 http://www.medhelp.org
Esses serviços promovem a criação de conteúdo de qualidade, podendo influenciar no surgimento de mais conteúdo do mesmo tipo. Consequentemente, podem melhorar a comunidade e a experiência do usuário, fomentando ainda mais a sua participação (RAVI et al., 2014). 2.1.1 Domínio de uma CQA
Em CQAs de domínio geral, os usuários podem fazer perguntas para qualquer tema e de qualquer natureza, como: pedido de recomendação, busca de opinião, solução de problema ou conhecimento pontual (BOUADJENEK et al., 2016). Nesse tipo de comunidade as perguntas podem ser muito abrangentes e podem exigir respostas subjetivas ou respostas que exigem pouco conhecimento técnico, por exemplo: “Qual a cor de esmalte que mais combina com um vestido lilás?” ou “Em sua opinião, qual o melhor time de futebol do país?”.
Por outro lado, em CQAs de domínio específico, como os fóruns Stack Overflow e MedHelp, é necessário conhecimento técnico para fornecer respostas e até mesmo para realizar determinadas perguntas. Além disso, pessoas com conhecimento profissional são mais propensas a participar desse tipo de comunidade porque esses ambientes proporcionam uma subdivisão refinada do domínio, facilitando a interação entre os usuários (MA et al., 2015).
2.1.2 Stack Overflow - uma CQA de domínio específico
O Stack Overflow é uma CQA de domínio específico destinada a programadores de software profissionais e entusiastas na área, possui mais de 7 milhões de usuários registrados, ultrapassa os 13 milhões de questões computadas até abril de 2017 e possui uma média de 8 mil perguntas novas sendo realizadas todos os dias. Tendo em vista esses números, é importante fornecer serviços para ordenar as melhores respostas, mostrar a reputação e atributos dos usuários envolvidos e detectar e recomendar perguntas semelhantes que possam existir. Essas ferramentas facilitam o uso do ambiente e fomentam a participação dos usuários na comunidade. A Figura 2 apresenta um exemplo do ambiente do Stack Overflow destacando esses serviços.
O Stack Overflow também fornece um esquema de tags, que são rótulos adicionados às perguntas e servem para identificar e dividir os diversos temas, tornando o ambiente melhor organizado. Além disso, é fornecido um esquema de pontuação para o usuário, que lhe é concedida por sua participação na formulação de perguntas e respostas, de acordo
com a avaliação de outros usuários. Essa pontuação serve para identificar a sua reputação e incentivar a participação e o engajamento na comunidade.
Figura 2 – Exemplo do ambiente do Stack Overflow com destaque para alguns serviços que facilitam seu uso.
Notas: 1: Ordenação das melhores respostas
2: Informações sobre o usuário 3: Sugestão de perguntas relacionadas
Outra forma de incentivo dos usuários é através do fornecimento de medalhas de méritos (badges) para que haja um aprimoramento contínuo das informações contidas no fórum. Pode-se citar como exemplo desse tipo de premiação as badges com nome
excavator e archeologist: a primeira é oferecida aos usuários que
editaram alguma publicação que estava inativa a mais de 6 meses e a segunda, aos usuários que editaram mais de 100 publicações que estavam inativas a pelo menos de 6 meses. Além disso, o Stack
Overflow fornece um mecanismo de votação que permite aos usuários
identificar, manualmente, os melhores conteúdos e filtrar spams, propiciando o controle da qualidade das informações que são geradas dentro da comunidade (WEI et al., 2015).
Através da votação os usuários podem fornecer suas visões de qualidade em relação às perguntas e às respostas, votando positivamente ou negativamente. Votar positivamente indica que o conteúdo fornecido foi gerado de forma apropriada e será útil para a comunidade. O voto negativo pode indicar: baixa qualidade do conteúdo, que é inadequado, fora de tópico, subjetivo, repetido ou pouco útil para outros usuários (ARORA et al., 2015). Além disso, o autor da pergunta pode marcar a resposta que mais lhe foi útil.
A diferença entre a quantidade de votos positivos e negativos resulta em uma pontuação. Dessa forma, a resposta escolhida pelo autor da pergunta é apresentada em primeiro, seguida pelas demais respostas ordenadas de acordo com sua pontuação. Com isso, espera-se que as primeiras respostas estejam corretas, sejam de melhor qualidade e facilmente acessadas, de modo a satisfazer rapidamente as buscas dos usuários e encorajar o engajamento dentro da comunidade (WEI et al., 2015; YANG et al., 2013). Também com base nessa votação, moderadores podem fechar ou remover conteúdos que apresentam pontuação negativa. Além disso, busca-se identificar a reputação das pessoas dentro da comunidade, de acordo com os votos recebidos por suas perguntas realizadas ou respostas fornecidas, com o intuito de facilitar aos outros usuários reconhecer quando uma resposta é confiável através da pessoa que a editou (YANG et al., 2013; ZHANG et al., 2007).
Existem também as opções de ordenação das respostas por data ou por atividade. A ordenação por data apresenta as respostas na ordem em que elas foram criadas. Enquanto a opção por atividade organiza as respostas de acordo com a data modificação mais recente que foi registrada. Contudo, a resposta aceita pelo autor da pergunta aparece
sempre na primeira posição independente do tipo de ordenação selecionada pelo usuário.
2.2 Qualidade da Resposta
A qualidade da resposta é uma característica subjetiva, podendo variar de acordo com a opinião da pessoa que está avaliando. Por essa razão muitas CQAs fornecem orientações que deveriam ser seguidas pelos usuários sobre como deve ser realizada uma boa pergunta e o que é considerada uma boa resposta.
Segundo as diretrizes definidas no Stack Overflow, uma boa pergunta deve ser apresentada de forma clara e deve descrever um problema de programação específico, ou seja, estar associada com uma necessidade de informação precisa (ARORA et al., 2015). Já uma boa resposta deve estar correta, ser clara, fornecer exemplos, citar materiais relevantes, estar atualizada e referenciar leitura e informação adicional (DALIP et al., 2016).
Usualmente, uma resposta com texto bem escrito e claro pode ser considerada de boa qualidade textual e ao mesmo tempo não ser relevante, por não responder à pergunta, e também não ser atual, por conter informações obsoletas. Logo, no contexto de CQAs, a qualidade geral de uma resposta pode ser vista como a soma de três aspectos:
Qualidade do texto da resposta: é possível observar características textuais da resposta para averiguar se ela é clara, fornece exemplos, possui citações e referencia outros materiais;
Relevância da resposta: para uma resposta estar correta, não basta conter uma informação verdadeira, esta informação também deve responder efetivamente a pergunta, ou seja, deve ser relevante para a pergunta.
Atualidade da resposta: uma resposta não é atual devido à data em que ela foi escrita, mas sim de acordo com a atualidade do conteúdo que possui.
A verificação da existência desses aspectos de qualidade envolve a análise de características que podem ser divididas em dois grupos distintos: características textuais e características não textuais (FU et al., 2015). Na Tabela 2 são apresentadas as principais subdivisões de cada grupo de acordo com alguns trabalhos relacionados.
Tabela 2 – Características indicadoras da qualidade da resposta.
Características textuais Características não textuais
Estrutura: como o texto está organizado em seções e subseções ou se apresenta imagens,
fragmentos de código, etc. (DALIP et al., 2013);
Tamanho do texto: um texto muito curto pode indicar uma resposta incompleta, enquanto que uma resposta muito longa pode ser considerada prolixa (DALIP et al., 2013);
Estilo e legibilidade: quantidade de substantivos e verbos, utilização de palavras e letras em maiúsculo e minúsculo, uso de sentenças curtas, etc. Essas características indicam um texto bem escrito, com maior legibilidade e consequentemente de mais fácil compreensão (DALIP et al., 2013);
Similaridade com a pergunta: analisar a similaridade (léxica e semântica) entre a pergunta e a resposta. Quanto maior o grau de similaridade mais relevante será a resposta para a pergunta (DALIP et al., 2013).
Usuários: encontrar especialistas no tema da pergunta através da análise das tags, e considerar a reputação do usuário de acordo com o tema da pergunta, através análise da pontuação recebida pela sua participação no fórum; Especialistas e pessoas com boa reputação tendem a fornecer respostas mais relevantes (DALIP et al., 2013);
Revisões: quanto maior o número de revisões, maior a tendência em a resposta ter sido melhorada. Além disso, indica que existem mais pessoas interessadas nessa resposta em específico (DALIP et al., 2013);
Rede de conectividade: refere-se à ligação (links) entre os conteúdos ou relacionamento entre usuários dentro da comunidade. Pode indicar a importância de um determinado conteúdo ou o nível de especialidade dos usuários (FU et al., 2015).
Ambiente (thread features): o fato de reunir, de forma
organizada, um conjunto de respostas para uma pergunta, permite coletar dados estatísticos e outras informações do ambiente que podem ser usadas para estimar a importância relativa de uma resposta em relação às demais (BUREL et al., 2012).
Dessa forma, avaliando essas características, muitos trabalhos focados em CQA conseguem realizar o ranking das respostas, mesmo quando não possuem votos ou qualquer outro tipo de avaliação feita pelos usuários. Porém, vale destacar que não foram encontrados trabalhos em que os atributos relativos à atualidade do conteúdo são levados em conta pelos autores.
2.3 Ranking
Ranking refere-se ao processo de ordenar itens de acordo com
algum critério pré-estabelecido (MOHRI et al., 2012). É considerada uma tarefa fundamental comum em quase todos os sistemas de busca onde é necessário retornar pedaços de informações (por exemplo, trechos de documentos, páginas web, respostas, etc.) para usuários, em uma determinada ordem de classificação que apresente nas primeiras posições as informações que são mais úteis e relevantes para os usuários (LIU e NYBERG, 2013).
Um exemplo clássico desse tipo de tarefa pode ser observado em sites de busca como o Google. Neste caso, são retornadas páginas
web ordenadas de acordo com sua relevância em relação à consulta
realizada pelos usuários.
Muitos desafios podem surgir relacionados ao processo de
ranking, como extração de características da informação ou
processamento de linguagem natural. Um problema geral está ligado ao aprendizado de máquina (machine learning - ML) supervisionado que é comumente adotado para realizar a tarefa de ranking. O problema consiste na utilização de informações para definir uma função de
ranking que seja precisa na predição da relevância dos diversos tipos de
textos que podem surgir (MOHRI et al., 2012). 2.3.1 Ranking no contexto de CQA
Dentro do contexto de um ambiente de CQA, o ranking é uma tarefa que pode estar ligada às perguntas realizadas pelos usuários ou pode ser referente ao conjunto de respostas de uma determinada pergunta.
Quando está ligado às perguntas, o ranking refere-se a apresentar para os usuários, de forma ordenada, as perguntas mais similares que foram previamente publicadas na comunidade. Este processo permite aos usuários tomarem conhecimento de perguntas que
já foram realizadas e estão relacionadas com a sua dúvida. Isto tende, principalmente, a ajudar a evitar a criação de perguntas repetidas.
Por sua vez, quando o foco está nas respostas, a tarefa de
ranking envolve apresentar aos usuários as respostas de uma
determinada pergunta, ordenadas de acordo com seu grau de relevância e qualidade, de modo a tornar mais ágil o acesso às melhores respostas. Por consequência, tende a facilitar o uso do fórum, melhorar sua reputação e o torna mais atrativo aos usuários.
Vale destacar que o objeto de estudo do presente trabalho está relacionado ao ranking do conjunto de respostas de uma determinada pergunta.
2.3.2 Processo de ranking com atualidade
O processo de ranking com atualidade (recency ranking) está relacionado à ordenação de documentos (no caso de CQAs os documento são as respostas das perguntas) levando em conta a atualidade do seu conteúdo (DONG et al., 2010).
A atualidade do conteúdo pode ser definida pela identificação do quão recente é, ou atualizado está, o tema ou os termos abordados na resposta. Dessa forma, durante a formação do ranking, ao confrontarmos duas respostas referentes a um determinado framework para uso em um
software, a resposta referente a uma versão mais recente desse framework poderia ser ordenada à frente de outra resposta relacionada a
uma versão mais antiga, se ambas as respostas fossem consideradas relevantes e de qualidade.
De modo a evitar confusão entre termos, é importante diferenciar o ranking de atualidade (recency ranking) do ranking dependente de tempo (time-dependent ranking). Enquanto o primeiro se preocupa em ordenar os documentos com informações mais recentes, o segundo leva em conta alguma informação temporal encontrada (de forma explícita ou implícita) na consulta para ordenar os resultados, tornando-o dependente da consulta (query-dependent). Assim, por exemplo, o processo no time-dependent ranking pode assumir que os documentos com datas de criação próximas ao tempo da consulta são mais relevantes e, portanto, devem ser classificados em posições mais altas do ranking, independente do fato de serem mais recentes ou não (KANHABUA et al., 2015).
O presente trabalho está voltado para a realização do ranking de atualidade (recency ranking) do conjunto de respostas das perguntas em ambientes de CQA’s.
2.4 Aprendizado de máquina supervisionado
Técnicas de aprendizado de máquina supervisionado (supervised machine learning) são muito utilizadas na tarefa de ranking de informações em geral. Essas técnicas envolvem a aprendizagem de uma função a partir de um conjunto de treinamento na forma: entrada e saída desejada. O objetivo é que a função aprendida seja capaz de produzir saídas com o menor erro possível para novas entradas não apresentadas anteriormente (LORENA e DE CARVALHO, 2007).
O conjunto de treinamento é dado na seguinte forma: T = {(e1, s1), (e2, s2), ..., en, sn)},
sendo que cada par (ei,si) representa um exemplo, onde ei é uma
entrada na forma de vetor contendo n atributos: ei = [a1, a2, ..., an], e si
diz respeito à saída esperada. No contexto de ranking de respostas em CQAs, um atributo ai pode representar um valor estatístico referente a
alguma característica textual ou não textual da resposta.
Além do conjunto de treinamento, utilizado para o aprendizado da função, geralmente é usado também um conjunto de teste (ground
truth) para medir o grau de efetividade da função. Os dois conjuntos
devem possuir dados diferentes para que o teste seja estatisticamente válido.
Quando a saída desejada da função é um valor de finitas possibilidades, por exemplo, um valor booleano = {verdadeiro, falso}, então é dito se tratar de um problema de classificação. Já se a saída é referente a um valor real infinito, define-se que o problema é uma regressão. Além disso, quando a saída é um valor real infinito utilizado apenas para ordenar as instâncias do conjunto T, costuma-se dizer que se trata de uma abordagem de Learning to Rank (L2R).
2.4.1 Learning to Rank aplicado a CQAs
A ideia geral do funcionamento de learning to rank para a realização de ranking de respostas em ambientes de CQA é apresentado na Figura 3. Este tipo de abordagem pode ser vista em trabalhos como, por exemplo, (BUREL et al., 2012; DALIP et al., 2013; HO e XU, 2015). Na figura, é possível observar que existe um passo off-line e outro on-line. A parte off-line é responsável pelo pré-processamento das informações, ou seja, a fase de treinamento propriamente dita. Nesta fase, primeiramente são coletados valores estatísticos que servem de indícios para determinar a qualidade das respostas. Esses valores são
extraídos da base de dados da CQA em questão, como o Stack Overflow por exemplo (que é o caso de estudo do presente trabalho).
Os dados podem ser agrupados formando dois conjuntos mutuamente exclusivos: um de treinamento e outro de teste. O conjunto de treinamento é utilizado para formular o modelo de predição. Já o conjunto de teste serve para avaliar o modelo criado. Existe também a possibilidade de se formar um conjunto de validação. Esse terceiro conjunto serve para refinar o modelo após o seu treinamento e antes de efetuar o teste.
A divisão dos dados nesses conjuntos ajuda a evitar o problema de overfitting, que é quando o modelo de predição gerado está excessivamente ajustado aos dados de treinamento e, na prática, acaba não funcionando tão bem quanto era esperado, ou seja, apresenta uma taxa de erro muito maior daquela que foi apresentada no treinamento.
Cada conjunto pode apresentar um número de perguntas diferente, sendo comum o conjunto de treinamento conter a maior parte dos dados. Cada pergunta deve possuir suas respostas e a indicação da posição que ela deve estar no ranking. Muitos trabalhos se baseiam no número de votos que a resposta apresenta para estabelecer o ranking ideal (ground truth). Além disso, cada resposta é, na verdade, representada por um vetor de indicadores de qualidade com um valor estatístico associado para cada item do vetor.
Então, todos os conjuntos formados são submetidos a uma máquina de aprendizagem, cujo algoritmo gera um modelo de predição, que é uma função matemática que irá prever a ordem de qualidade das respostas.
Por fim, a parte on-line representa a aplicação do modelo de predição na execução do sistema de ranking em funcionamento na prática, para todos os dados da base. Assim, uma pergunta qualquer com seu conjunto de respostas, cuja ordenação se deseja obter, pode ser submetida ao sistema de ranking. Por sua vez, esse sistema utiliza a função de predição, que está embutida dentro dele, para gerar o ranking das respostas.
Figura 3 – Funcionamento de learning to rank aplicado a respostas em ambiente de CQA
2.4.2 Algoritmos de Learning to Rank
Ao longo dos anos, muitos algoritmos de learning to rank têm surgido e podem ser categorizados em três tipos de abordagens (LIU, 2009): pointwise, pairwise e listwise. De modo geral, as abordagens diferem entre si pela quantidade de documentos (ou quantidade de respostas, quando se tratam de CQAs) que são considerados por vez na função executada durante o treinamento do modelo de predição.
A abordagem pointwise trata o processo de ranking como um problema de regressão, onde cada resposta é associada a um determinado valor de ranking (score) e tratada de forma individual. Dessa maneira, o treinamento refere-se a utilizar uma resposta por vez para treinar um método de regressão que prevê o score da resposta. O
ranking final é obtido através da ordenação dos scores obtidos pelas
respostas através do modelo gerado. Vale ressaltar que o score, que é calculado para cada resposta, não depende das outras respostas.
Já na estratégia de pairwise, o método de aprendizagem corresponde a um problema de classificação, onde um par de respostas é utilizado por vez durante o treinamento. Ao contrário do pointwise, que tenta prever um valor de ranking absoluto para cada resposta, o pairwise procura prever a ordem relativa entre duas respostas. O foco do modelo gerado é minimizar o número de inversões no ranking, ou seja, minimizar os casos em que pares de respostas estão em ordem invertida.
Por sua vez, o método de listwise opera sobre toda a lista de respostas e tenta retornar a ordenação ideal entre elas. Esse tipo de abordagem não se preocupa com o cálculo de uma posição exata para cada resposta, mas sim com a posição relativa entre todas elas. Além disso, tende a ser uma estratégia mais custosa e complexa do que as abordagens anteriores.
A seguir são apresentados, de forma resumida, os algoritmos que foram utilizados durante os experimentos realizados neste trabalho:
MART (FRIEDMAN e MEULMAN, 2003): Multiple
Additive Regression Trees (MART) é um algoritmo que
segue a abordagem pointwise e também é conhecido como
Gradient Boosting Regression Trees (GBRT). Ele gera um
modelo de predição a partir da combinação de modelos mais simples otimizados através da técnica de Descida de Gradiente (Gradient Descent).
Random Forests (BREIMAN, 2001): é um algoritmo
Cada árvore é criada de forma independente e com um subconjunto aleatório de dados da base de treinamento. A predição é realizada com base na combinação dos resultados dessas árvores.
RankBoost (FREUND et al., 2003): é um método com abordagem pairwise que que distribui pesos aos pares de dados de modo a transformar a tarefa de ranking em um problema de classificação binária. O algoritmo é executado iterativamente aplicando a técnica de boosting sobre classificadores base. Dessa forma, a cada iteração os pesos dos classificadores são atualizados de modo a minimizar uma função de perda. Então, o ranking final é gerado através da combinação dos resultados desses classificadores.
RankNet (BURGES et al., 2005): é uma abordagem pairwise que inicialmente foi criada utilizando redes neurais, mas existem implementações utilizando outras técnicas como árvores de decisão. Utiliza uma função de custo, otimizada através da técnica de Descida de Gradiente Estocástica (Stochastic Gradient Descent), que visa minimizar o número de inversões no ranking.
RankSVM (HERBRICH et al., 2000): é um algoritmo que transforma o processo de ranking em um problema de classificação pairwise e aplica a técnica de Support Vector
Machine - SVM (JOACHIMS, 2002) para realizar a
aprendizagem de rankings.
AdaRank (XU e LI, 2007): se assemelha ao algoritmo RankBoost, pois também utiliza a técnica de boosting que combina classificadores mais simples para criar uma função de ranking. Porém, o AdaRank utiliza a abordagem listwise, onde o aprendizado dos classificadores é feito otimizando medidas de desempenho de ranking como NDCG ou MAP.
Coordinate Ascent (METZLER e BRUCE CROFT, 2007): é uma abordagem listwise que utiliza um método linear baseado em características (features) para otimizar diretamente uma medida de desempenho de ranking (como NDCG ou MAP). A otimização é realizada de forma cíclica, onde a cada iteração apenas uma feature é melhorada, enquanto as outras são mantidas fixas.
LambdaMART (WU et al., 2010): é uma abordagem listwise que combina os pontos fortes das técnicas adotadas nos algoritmos LambdaRank e MART. LambdaRank (BURGES
et al., 2006) é um método listwise que utiliza rede neural para
aprender a minimizar uma função de perda adaptada baseada no RankNet. Dessa forma, o LambdaMART utiliza árvores de regressão obtidas pelo reforço em relação ao gradiente de uma função de perda derivada do LambdaRank, para gerar um modelo de predição de ranking.
ListNet (CAO et al., 2007): é um algoritmo de aprendizado supervisionado que utiliza a estratégia listwise. Inicialmente, as pontuações de ranking dos documentos são transformadas em distribuições de probabilidade e utilizadas como função de perda. Então, utiliza uma abordagem de rede neural combinada com a técnica Gradient Descent para otimizar a função de perda e gerar o modelo de predição.
2.5 NDCG@k
O Desconto de Ganho Cumulativo Normalizado nas k primeiras posições (do inglês, Normalized Discounted Cumulative Gain at top k
positions - NDCG@k) é uma métrica comumente usada para verificar a
efetividade de um ranking, pois calcula o quão próximo um ranking está do seu ground truth. Formalmente, é definido pela Equação 1, onde k é o número das primeiras posições, DCG@k refere-se ao ganho do ranking que se deseja avaliar e IDCG@k é o ranking ideal (ground
truth) (BAEZA-YATES e RIBEIRO-NETO, 1999).
NDCG@k =
𝐷𝐶𝐺@𝑘
𝐼𝐷𝐶𝐺@𝑘
(1) 1 Por sua vez, o DCG@k é definido pela Equação 2, onde reli é o
DCG@k = ∑ (
2
𝑟𝑒𝑙𝑖− 1
𝐿𝑜𝑔
2(𝑖 + 1)
)
𝑘 𝑖=1 (2) 2Dessa forma, o NDCG é apropriado para avaliar a qualidade de um ranking em comparação a outros. Por exemplo, é possível comparar um ranking X com um ranking Y, calculando seus respectivos NDCG’s. Aquele que apresentar maior grau de proximidade em relação ao
ranking ideal pode ser considerado de melhor qualidade.
2.6 Ganho de Informação (InfoGain)
O Ganho de Informação (Information Gain - InfoGain) é uma métrica baseada na entropia dos dados que permite identificar a eficácia de uma determinada característica ao tentar classificar os dados. Ou seja, essa métrica permite medir o quanto um atributo sozinho consegue ajudar na formação do ranking das respostas proporcionando um ganho de desempenho nessa classificação (BAEZA-YATES e RIBEIRO-NETO, 1999).
O InfoGain pode ser calculado através da Equação 3, onde S representa o conjunto de dados de treinamento, A representa um atributo em questão, E(S) é a entropia dos dados, Sv é o subconjunto de S em que
o atributo A tem um valor v e vals(A) são todos os possíveis valores que o atributo A pode ter. Dessa forma, o Ganho(S,A) significa a quantidade de redução de entropia, que é obtida quando os dados são ordenados por um determinado atributo.
Ganho(S, A) = E(S) −
∑
|𝑆
𝑣|
|𝑆|
. 𝐸(𝑆
𝑣)
𝑣 ∈ 𝑣𝑎𝑙𝑠(𝐴)(3)
Por sua vez, a entropia mede o nível de desordem dos dados. O valor da entropia da informação varia de 0 a 1 e pode ser calculado através da Equação 4, onde c é o número de classes do conjunto e pi é a
E(S) = − ∑ 𝑝
𝑖
𝑙𝑜𝑔
2
𝑝
𝑖
𝑐
𝑖=1
(4)
Vale destacar que, em casos onde os valores das características analisadas são numéricos, deve ser realizado o procedimento de discretização desses valores antes calcular o InfoGain.
2.7 FSelect
O FSelect12 é um plug-in para a biblioteca LIBSVM13. Este
plug-in implementa um algoritmo de seleção de características (feature select) que combina a métrica F-measure14 e o algoritmo de aprendizado de máquina Support Vector Machine (SVM) e pode ser utilizado para mostrar a importância das características envolvidas no processo de
ranking (CHEN e LIN, 2006).
A otimização do algoritmo se baseia na minimização da métrica
Balanced Error Rate (BER) que pode ser calculada de acordo com a
Equação 5, onde Pw é o número de casos positivos que apresentaram
predições incorretas, P é o número total de casos positivos existentes, Nw é o número de casos negativos que apresentaram predições
incorretas e N é o número total de casos negativos existentes (CHEN e LIN, 2006).
BER =
1
2
(
𝑃
𝑤
𝑃
+
𝑁
𝑤
𝑁
)
(5) 12 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#feature_selection_tool13 Ver mais informações sobre o LibSVM na Seção A.8 do Apêndice 14 A Equação 9 mostra o cálculo da F-measure.
Capítulo 3
3
Estado da Arte
Esta seção apresenta a revisão bibliográfica referente aos estudos relacionados com o tema deste trabalho. Também são expostas algumas considerações a respeito destes estudos e as suas relações com o trabalho.
3.1 Classificação de Abordagens de CQA
Atualmente muitos estudos têm sido desenvolvidos no que se refere ao processo de pergunta e resposta em CQAs. Este é um tema que apresenta trabalhos que podem ser considerados recentes e que, como pode ser observado na Figura 4, tem despertado um interesse cada vez maior por parte dos pesquisadores.
Figura 4 – Número de artigos de pesquisa relacionados com sistemas de CQA ao longo dos anos.
Fonte: Adaptado de SRBA e BIELIKOVA, 2016.
Esses trabalhos podem ser classificados em três níveis, conforme representado na Figura 5 (SRBA e BIELIKOVA, 2016). No nível inicial estão as categorias primárias que são mais amplas: Exploratory Studies,
Content and User Modeling e Adaptative Support. O segundo nível
subdivide o primeiro de acordo com a classificação das abordagens adotadas. Por fim, o terceiro nível categoriza as abordagens do nível anterior de forma mais específica, relacionando com o tipo de problema que se pretende solucionar. Apesar de se valer de alguns estudos em outras abordagens, o presente trabalho tem como foco principal o item destacado em vermelho na Figura 5.
Figura 5 – Classificação de abordagens de CQA proposta por Srba e Bielikova em (SRBA e BIELIKOVA, 2016)
3.1.1 Exploratory Studies
A categoria Exploratory Studies se preocupa com os dados gerados durante todo o processo de pergunta e resposta, podendo ser dividida em três principais subgrupos: System-wide Analyzes,
Content-related Analyzes e User-Content-related Analyzes.
System-wide Analyzes refere-se ao grupo de abordagens que se
preocupa em avaliar a evolução das CQAs (Community
Characteristics), o processo de compartilhamento de conhecimento
(Knowledge Sharing Process), o design utilizado (Design Principles), o uso em ambientes móveis (Mobile Usage), ou a aplicação de conceitos usados em CQAs em outros domínios (Transferability).
Content-related Analyzes engloba trabalhos que tratam
questões como a comparação da qualidade do conteúdo das CQAs em relação a outros tipos de ambientes (Question Quality e Answer
Quality). Também lida com a análise dos posts com relação à sua
personalização, aparência (Content Personalization) e texto amigável (Friendlines) ou quanto à difusão de inovação que proporcionam (Innovation Diffusion).
User-related Analyzes está relacionado às abordagens que
analisam os usuários de CQAs em diferentes aspectos, como o seu comportamento até decidir postar uma pergunta (User Context), o perfil dos especialistas, a evolução da sua reputação e especialidade de conhecimento (Expertise and Reputation), como selecionam as perguntas que serão respondidas (Question Answering Selection), quais são as suas motivações (Motivation) e o uso de comportamento abusivo (Abuse Behavior).
3.1.2 Adaptative Support
A categoria Adaptative Support se preocupa em melhorar o processo dentro das CQAs de modo que a colaboração dos experts se torne mais efetiva e facilitada e que os usuários tenham sucesso em obter as respostas. As abordagens adotadas podem ser agrupadas em 5 conjuntos: Question Retrieval, Question Routing, Question Suggestion,
Answer Summarization e User Motivation.
Question Retrieval abrange trabalhos que utilizam abordagens
para a recuperação de perguntas dentro da própria CQA com o objetivo de encontrar perguntas semanticamente similares à consulta do usuário (Question Search), recomendar perguntas relacionadas (Question