Attualmente sto costruendo un piccolo motore di ricerca interno basato su Apache Lucene. Il suo scopo è semplice: basato su alcune parole chiave, suggerirà alcuni articoli scritti internamente all'interno della nostra azienda. Sto usando un punteggio TF-IDF abbastanza standard come metrica di base e ho costruito il mio meccanismo di punteggio su di esso. Tutti questi sembrano funzionare in modo eccellente ad eccezione di alcuni casi angolari in cui la classifica sembra incasinata.
Quindi quello che sto pensando di fare è aggiungere un piccolo link Rilevante / Non pertinente alla pagina dei risultati della ricerca in modo che gli utenti possano fare clic su uno di quelli a seconda della loro percezione del fatto che quel risultato debba essere incluso in primo luogo.
La mia idea
- Tratta questi Rilevanti / Non Rilevanti come etichette e crea un dato di formazione.
- Usa questi dati per addestrare un classificatore (come SVM)
- Incorporare questo modello nel motore di ricerca, ovvero ogni nuovo risultato passerà attraverso il classificatore e gli verrà assegnata un'etichetta sulla pertinenza o meno.
Questo approccio mi sembra intuitivo, ma non sono sicuro che funzionerà in pratica. Ho due domande specifiche:
- Quali funzioni devo 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 basata sia sulla logica aziendale sia sul feedback degli utenti.