2008-10-07 4 views
19

Lors du développement d'une base de données d'articles dans une base de connaissances (par exemple), quels sont les meilleurs moyens de trier et d'afficher les réponses les plus pertinentes à la question d'un utilisateur? Souhaitez-vous utiliser des données supplémentaires telles que la pondération des mots clés selon que les utilisateurs précédents ont trouvé l'article d'aide, ou trouvez-vous qu'un simple algorithme de correspondance des mots clés est suffisant?Recherche d'algorithmes de classement/pertinence

Répondre

2

C'est une question difficile, et des entreprises comme Google font beaucoup d'efforts pour répondre à cette question. Jetez un oeil à Google Enterprise Search Appliance ou Exalead Enterprise Search. Ensuite, en tant qu'opinion personnelle, je ne pense pas qu'une approche "naïve" puisse améliorer beaucoup le résultat par rapport à la recherche de mots naïfs et au classement par nombre de vues sur les documents.

Si vous avez la possibilité d'exposer votre base de connaissances sur le Web, alors, faites-le, et laissez votre moteur de recherche favori s'occuper de la recherche pour vous.

0

mot-clé correspondant ne suffit pas lorsque le traitement des questions, vous devez comprendre l'intention, comme Joannes dire un sujet très chaud à la recherche

2

Un peu plus la spécificité de votre problème exact serait bon. Il y a beaucoup de techniques différentes que vous pouvez utiliser. Beaucoup d'entre eux sont pilotés par d'autres éléments de données. Vous pouvez bien sûr utiliser Lucene et créer vos propres index. Il existe des liaisons pour de nombreuses langues à Lucene. Il y a aussi le projet Solr qui est Lucene avec beaucoup d'outils et de fonctionnalités supplémentaires. C'est peut-être plus conforme à ce que vous cherchez.

L'intention est délicate et les moteurs de recherche les plus modernes reposent sur une intention statistique pour faciliter la commande des résultats. Vous pouvez toujours avoir un bouton cet article utile et stocker le texte de la requête qui mène à des documents utiles. Vous pouvez ensuite ajouter une couche d'informations à l'index pour amplifier des mots ou des phrases spécifiques et les aider à pointer vers certains documents.

Quelques éléments à considérer ... Combien de documents? Quelle est la longueur moyenne? Sont-ils mis à jour fréquemment? Que font les utilisateurs avec les documents? À quoi ressemble la diffusion de mots uniques dans des documents? (Plus simplement, il est facile de faire correspondre une requête avec un ou plusieurs documents spécifiques basés sur des caractéristiques uniques communes.)

Si vous êtes sur le Web, vous pouvez toujours créer un moteur de recherche personnalisé Google qui ne fait que rechercher votre site. peut trouver cela sous-optimal pour une variété de raisons.

Vous pouvez toujours commencer par un index simple et le rendre progressivement plus sophistiqué en parlant avec les utilisateurs et en capturant des données.

10

Peut-être l'approche la plus simple et la plus naïve qui donnera immédiatement des résultats utiles serait de mettre en œuvre *tf-idf:

Variations du schéma de pondération tf-idf sont souvent utilisés par les moteurs de recherche comme un outil central dans la notation et classer la pertinence d'un document en fonction d'une requête de l'utilisateur. tf-idf peut être utilisé avec succès pour le filtrage des mots d'arrêt dans divers domaines, y compris la synthèse et la classification des textes.

Dans une question connexe récente de mes ici j'ai appris d'un excellent livre gratuit sur ce sujet que vous pouvez télécharger ou lire en ligne:

An Introduction to Information Retrieval

1

Je pense que l'angle ici Ce n'est pas la récupération elle-même ... c'est de marquer la pertinence de l'information récupérée (une approche plus réactive et passive) qui peut être utilisée plus tard pour améliorer le moteur de recherche.

Je suppose que vous pouvez essayer -

  1. KNN sur TFIDF pour récupérer des informations

  2. marquage à la main ces informations récupérées une pertinence pour le score de

  3. Puis régressent ce score pour prédire le score pour un unknwon résultat de la recherche et le trier.

Juste une pensée ...

Le troisième point est en fait basé sur l'algorithme Rocchio. Vous pouvez le voir here