Obecnie buduję małą wewnętrzną wyszukiwarkę opartą na Apache Lucene. Jego cel jest prosty - na podstawie niektórych słów kluczowych sugeruje artykuły napisane wewnętrznie w naszej firmie. Używam dość standardowej punktacji TF-IDF jako podstawowej miary i zbudowałem na niej własny mechanizm oceniania. Wszystkie te wydają się działać doskonale, z wyjątkiem niektórych przypadków narożnych, w których ranking wydaje się zawalony.
Planuję więc dodać mały link Istotny / Nieistotny do strony wyników wyszukiwania, aby użytkownicy mogli kliknąć jedną z nich w zależności od tego, czy postrzegają, czy wynik ten powinien był zostać uwzględniony.
Mój pomysł
- Potraktuj te Istotne / Nieistotne jako etykiety i utwórz dane szkoleniowe.
- Użyj tych danych do szkolenia klasyfikatora (takiego jak SVM)
- Włącz ten model do wyszukiwarki, tzn. Każdy nowy wynik przejdzie przez klasyfikator i zostanie mu przypisana etykieta, czy jest on odpowiedni, czy nie.
To podejście wydaje mi się intuicyjne, ale nie jestem pewien, czy zadziała w praktyce. Mam dwa konkretne pytania:
- Jakie wszystkie funkcje powinienem wyodrębnić?
- Czy istnieje lepszy sposób na zintegrowanie komponentu uczenia maszynowego z wyszukiwarką? Moim ostatnim celem jest „poznanie” funkcji rankingowej opartej zarówno na logice biznesowej, jak i opiniach użytkowników.