GSI024: Organização e Recuperação de Informação 2o semestre, 2015 Prática 12 — Algoritmo de Rocchio Prof. Marcelo Keese Albertini Universidade Federal de Uberlândia O algoritmo de “Rocchio” de expansão de consultas pode ser implementado usando as operações de um ı́ndice direto. Objetivo: • Implementar o algoritmo de Rocchio na classe de interface com o usuário Guglio.java. Esse algoritmo é utilizado para modificar uma consulta segundo a opinião de usuário sobre quais documentos são releventes e não relevantes. Entradas esperadas: • Valores de parâmetros α, β e γ utilizados no algoritmo de Rocchio • Arquivos do ı́ndice direto: indiceDiretoDocs.dat e indiceDiretoTermIds.dat. • Arquivos do ı́ndice invertido: index.dat, postings.dat, dic.txt, TF.dat Saı́das produzidas: • Classe Guglio.java que permite o usuário modificar consulta de acordo com quais documentos ele considera relevante ou não relevante para a consulta atual e mostra ranking de documentos encontrados para a consulta modificada. Sugestões: • Modificar Guglio.java para permitir usuário indicar quais documentos são relevantes e quais não são relevantes. – Consulta inicial q0 , conjunto R = {d1 , . . . , di , . . . , dN } de docId de documentos considerados com relevantes e conjunto N R = {dn1 , . . . , dnj , . . . , dnM } de docId de documentos não relevantes • Produzir consulta modificada contendo somente os 10 termos com maior pontuação TF-IDF obtida com a equação do algoritmo de Rocchio: q = α × q0 + β N M 1 X~ 1 X~ di − γ dnj N i=1 M j=1 Habilidades praticadas: 1. Usar ı́ndices direto • Usar operação do ı́ndice direto HashMap<Integer, Double> getDocTFIDF(int docId, IndiceInvertido ii) para obter representação de cada documento.