Attualmente sto costruendo un piccolo motore di ricerca interno basato su Apache Lucene. Il suo scopo è semplice: basandosi su alcune parole chiave, suggerirà alcuni articoli scritti internamente all'interno della nostra azienda. Sto usando un punteggio TF-IDF abbastanza standard come una metrica di base e ho costruito il mio meccanismo di punteggio in cima. Tutti sembrano funzionare in modo eccellente, ad eccezione di alcuni casi in cui la classifica sembra incasinata.
Quindi quello che sto pensando di fare è aggiungere un piccolo collegamento Rilevante / Non pertinente alla pagina dei risultati di ricerca in modo che gli utenti possano cliccare su uno di questi a seconda della loro percezione se quel risultato avrebbe dovuto essere incluso in primo luogo .
La mia idea
- Trattare questi rilevanti e non rilevanti come etichette e creare dati di addestramento.
- Utilizza questi dati per addestrare un classificatore (come SVM)
- Incorporare questo modello nel motore di ricerca, ad esempio, ogni nuovo risultato passerà attraverso il classificatore e gli verrà assegnata un'etichetta se pertinente o meno.
Questo approccio mi sembra intuitivo, ma non sono sicuro che funzionerà nella pratica. Ho due domande specifiche:
- Quali sono le funzioni che dovrei estrarre?
- Esiste un modo migliore per integrare il componente di apprendimento automatico nel motore di ricerca? Il mio obiettivo finale è "apprendere" la funzione di classifica in base sia alla logica di business sia al feedback degli utenti.