2010-02-08 4 views
3

Tout d'abord, merci de lire ma question.En Java - Regrouper des valeurs similaires

J'ai utilisé TF/IDF puis sur ces valeurs, j'ai calculé la similitude cosinus pour voir combien de documents sont plus similaires. Vous pouvez voir la matrice suivante. Les noms de colonne sont comme doc1, doc2, doc3 et les noms de lignes sont identiques à doc1, doc2, doc3 etc. Avec l'aide de la matrice suivante, je peux voir que doc1 et doc4 ont une similitude de 72% (0.722711142). C'est correct même si je vois les deux documents, ils sont similaires. J'ai 1000 documents et je peux voir chaque document freq. dans la matrice pour voir combien d'entre eux sont similaires. J'ai utilisé différents clusters comme k-means et agnes (hierarchy) pour les combiner. Il a fait des grappes. Par exemple Cluster1 a (doc4, doc5, doc3) car ils ont des valeurs plus proches respectivement (0.722711142, 0.602301766, 0.69912109). Mais quand je vois manuellement si ces 3 documents sont vraiment identiques, ils ne le sont PAS. :(Qu'est-ce que je fais ou devrais-je utiliser autre chose que le regroupement ??????

1    0.067305859 -0.027552299 0.602301766 0.722711142  
    0.067305859 1    0.048492904 0.029151952 -0.034714695 
    -0.027552299 0.748492904 1    0.610617214 0.010912109  
    0.602301766 0.029151952 -0.061617214 1    0.034410392  
    0.722711142 -0.034714695 0.69912109 0.034410392 1    

PS: Les valeurs peuvent se tromper, il est juste pour vous donner une idée Si vous en avez. question s'il vous plaît ne pas demander Merci

+0

un conseil? de l'aide?????????????????????? – user238384

+0

question mineure: les solutions existantes à ce problème ne peuvent pas être appliquées ou pourquoi le développez-vous à partir de zéro? Mon sentiment dit que Lucene (ou Solr) aurait dû mettre en œuvre cela aussi ... – Karussell

+0

Eh bien, ce que Lucene ou Solr faire. Je l'ai déjà fait. Maintenant, j'ai un fichier CSV mais ma question est différente. Si vous pouvez expliquer votre question. Je peux y répondre d'une meilleure manière – user238384

Répondre

1

Je ne suis pas familier avec TF/IDF, mais le processus peut se tromper en plusieurs étapes généralement:.?

1, Avez-vous enlevé

mots vides

2, est-ce vous appliquez stemming? Porter stemmer par exemple. Avez-vous normalisé les fréquences pour la longueur du document? (Peut-être que la chose TFIDF a une solution pour cela, je ne sais pas)

4, Le clustering est une méthode de découverte mais pas un Saint-Graal. Les documents qu'il récupère en tant que groupe peuvent être liés plus ou moins, mais cela dépend des données, de l'accord, de l'algorithme de clustering, etc.

Que voulez-vous réaliser? Quelle est votre configuration? Bonne chance!

+0

Salut Ron, Merci pour votre réponse. Oui, j'ai utilisé toutes les choses que vous avez mentionnées ci-dessus. J'ai une grande matrice de similarité et je veux regrouper tous les documents similaires maintenant. Par exemple, si 10 documents sont similaires au document 15, il devrait y avoir un cluster contenant 11 docs (1 à 10 et 15 doc) mais le travail en cluster sur la distance et le groupe le document. qui a freq. plus de fermeteurs permettent de dire 70% alors que tous les documents de ce groupe sont différents :( – user238384

+0

La bonne méthode de classification dépend beaucoup de la distribution de votre espace de document. , ou DENCLUE.Ou il y a des regroupements qui fonctionnent sur la représentation graphique des données de connectivité, comme Markov Clustering (http://www.micans.org/mcl/) – ron

1

Mon approche serait de ne pas utiliser du tout les valeurs de similarité pré-calculées, parce que la similarité entre docs devrait être trouvée par l'algorithme de clustering lui-même. Je voudrais simplement mettre en place un espace de caractéristiques avec une colonne par terme dans le corpus, de sorte que le nombre de colonnes soit égal à la taille du vocabulaire (moins mot d'arrêt, si vous voulez). Chaque valeur de caractéristique contient la fréquence relative du terme respectif dans ce document. Je suppose que vous pourriez également utiliser les valeurs de tf * idf, bien que je ne m'attendrais pas à ce que cela aide trop. Selon l'algorithme de clustering que vous utilisez, le pouvoir discriminant d'un terme particulier devrait être trouvé automatiquement, c'est-à-dire si un terme apparaît dans tous les documents avec une fréquence relative similaire, alors ce terme ne discrimine pas bien les classes. .

+0

Je suis désolé mais je ne pouvais pas comprendre. , Je calcule la base de similarité sur LSI et VSM.Le clustering ne peut pas aider dans la similarité.Si cela fait s'il vous plaît expliquer lequel et comment? – user238384

+0

En clustering, un doc est un point dans un espace de caractéristiques et un algorithme respectif groupe les points de données Si les caractéristiques sont des fréquences de mots, alors les docs qui contiennent les mêmes mots, c'est-à-dire * docs * similaires, seront dans le (s) même (s) groupe (s). points de données milaires (ici: documents), où la similarité dépend des caractéristiques utilisées. Je pense que les chapitres 16 à 18 de ce livre: http://nlp.stanford.edu/IR-book/information-retrieval-book.html vous guideront bien (il est disponible gratuitement en ligne). – ferdystschenko

Questions connexes