2010-08-10 19 views
2

Afin d'effectuer un algorithme de classification simple sur les résultats que je reçois de Lucene, je dois calculer la similarité des Cosinus entre 2 documents dans Lucene, je dois aussi être capable de faire un document centroïde représenter le centroïde de chaque groupe. Tout ce que je peux penser à faire est de construire mon propre modèle d'espace vectoriel avec une pondération tf-idf, en utilisant les fréquences TermFreqVectors et Overall Term pour le peupler.Calculer la similarité entre et centroïde des documents de Lucene

Ma question est: Ce n'est pas une approche efficace, existe-t-il une meilleure façon de le faire?

Cela me semble un peu confus donc toutes les suggestions sur la façon dont je peux améliorer ma question sont également appréciées.

Répondre

0

La réponse courte est: Non

J'ai passé beaucoup de temps (beaucoup trop moyen) regarder dans cela, et pour autant que je peux voir, vous pouvez faire votre propre modèle vectoriel et le travail à partir de cela, ou utilisez Mahout pour générer un vecteur Mahout, que vous pouvez faire des comparaisons entre les documents. Je vais aller de l'avant et faire la mienne, alors je suis en train de marquer cette question.

+0

Désolé de vous cogner comme ceci, mais comment avez-vous résolu le problème? Avez-vous dû mettre en œuvre tout seul, ou avez-vous été en mesure de réutiliser des composants existants cachés de Lucene? Merci – Marko

0

Afin d'obtenir la similarité d'un document à l'autre, pourquoi ne pas faire une requête avec le contenu d'un document et exécuter une requête par rapport à l'index? de cette façon, vous obtiendrez score (valeurs de similarité cosinus)