Ceci est le résumé et mes principales conclusions de la
Énoncé du problème :
À partir d'une requête d'un utilisateur, récupérez l'article d'aide le plus pertinent dans la base de données.
Itération 1 : Solution initiale
- Indexé tous les articles d'aide (documents) dans la base de données à l'aide de Lucene Index . En bref, il génère un dictionnaire inversé qui associe les termes à tous les documents dans lesquels ils sont apparus.
2. La requête donnée est utilisée pour récupérer tous les documents pertinents (hits) à l'aide de l'indexation Lucene.
3. Chaque correspondance est notée à l'aide de l'algorithme BM25F , qui tient compte de la structure du document, en attribuant les poids les plus élevés aux correspondances dans le titre , puis aux correspondances dans les mots clés puis dans le corps , et renvoie un score pondéré.
4. Renvoyez les articles les mieux notés.
Pourquoi ça a échoué
Étant donné que le système de recherche de documents est basé sur Term ( syntaxe ), sans tenir compte de la sémantique , voici deux exemples de cas d'échec :
Itération 2 : Solution finale
Étape 1 : Normalisation du texte
" comment annuler mes comptes premium immédiatement" normalisé à " annuler le compte premium"
Étape 2 : Mappage des requêtes
Il peut arriver que la requête normalisée n'ait aucun mot en commun avec les mots des articles. Par conséquent, chaque requête est mappée à une requête plus représentative pour combler l'écart entre la terminologie d'un utilisateur et la terminologie de l'article.
Réalisé en deux étapes :
- Regroupement des requêtes : les requêtes sont regroupées en fonction des métriques de similarité
2. Topic Mining et Rep Scoring : Pour chacune des requêtes du groupe Query, un repScore est calculé et les K requêtes les plus importantes sont sélectionnées comme requêtes Rep.
sim(RQ, Q2) est la similarité entre la requête brute et une autre requête du groupe
sim(Q2, title) est la similarité maximale entre Q2 et l'un des sujets du titre (de même pour le corps)
Étape 3 : Classification de l'intention
Les requêtes à longue queue peuvent ne pas avoir de requête Rep, auquel cas un CNN est utilisé pour classer l' intention de la requête.
Par exemple : "Annuler votre abonnement Premium" et "Annuler ou mettre à jour un abonnement Premium acheté sur votre appareil Apple" sont considérés comme ayant la même intention d'"annuler la prime".
Flux global
Également publié ici