Atualmente, estou construindo um pequeno mecanismo de pesquisa interno baseado no Apache Lucene. Seu objetivo é simples - com base em algumas palavras-chave, ele sugerirá alguns artigos escritos internamente em nossa empresa. Estou usando uma pontuação TF-IDF bastante padrão como métrica básica e construí meu próprio mecanismo de pontuação sobre ela. Tudo isso parece estar funcionando bem, exceto em alguns casos em que o ranking parece confuso.
Então, o que pretendo fazer é adicionar um pequeno link Relevante / Não Relevante à página de resultados da pesquisa, para que os usuários possam clicar em um deles, dependendo da percepção de se esse resultado deveria ter sido incluído.
Minha ideia
- Trate esses Relevantes / Não Relevantes como rótulos e crie dados de treinamento.
- Use esses dados para treinar um classificador (como SVM)
- Incorpore esse modelo ao mecanismo de pesquisa, ou seja, todos os novos resultados passarão pelo classificador e receberão um rótulo para saber se é relevante ou não.
Essa abordagem parece intuitiva para mim, mas não tenho certeza se funcionará na prática. Eu tenho duas perguntas específicas:
- Quais recursos devo extrair?
- Existe uma maneira melhor de integrar o componente de aprendizado de máquina ao mecanismo de pesquisa? Meu objetivo final é "aprender" a função de classificação com base na lógica de negócios e no feedback do usuário.