2017-06-27 1 views
0

J'essaie de regrouper quelques mots (prenons des marques de voiture). Pour ce faire, je ne peux pas utiliser k-means ou k-medoids donc j'ai essayé d'utiliser Affinity Propagation de Sklearn. Et je l'utilise avec levenshtein de la distance lib ou damerau_levenshtein_distance de la pyxdameraulevenshtein lib.Mots en cluster

Exemple ici: https://stats.stackexchange.com/questions/123060/clustering-a-long-list-of-strings-words-into-similarity-groups

Cependant, ces mesures ne sont pas exactement ceux dont j'ai besoin. Par exemple, MERCEDES-BENZ et MERCEDES ont une distance de 5, la même chose que VOLVO et FIAT. Connaissez-vous des métriques qui donneraient un score de similarité plus élevé entre MERCEDES-BENZ et MERCEDES que VOLVO et FIAT.

Merci, Djokx

Répondre

1

Vous pouvez utiliser similitude Jaccard des tri-grammes qui composent ces mots. C'est-à-dire que vous décomposerez chaque mot en trois composantes (pour volvo: vol, olv, lvo) et obtiendrez leur similarité avec Jaccard. N-gram.

similitude Jaccard est défini comme le rapport entre nombre de n-grammes et nombre de n-grammes totale commun: Jaccard index.