我正在尝试聚类一些词(以汽车品牌为例)。为了做到这一点,我不能使用k-means或k-medoids,因此我尝试使用Sklearn中的Affinity Propagation。我将它与距离lib的levenshtein
或距damerau_levenshtein_distance
lib的pyxdameraulevenshtein
一起使用。
此处的示例:https://stats.stackexchange.com/questions/123060/clustering-a-long-list-of-strings-words-into-similarity-groups
但是,这些指标并不是我所需要的。例如,MERCEDES-BENZ和MERCEDES的距离为5,与VOLVO和FIAT相同。你们知道一些度量标准,它们在MERCEDES-BENZ和MERCEDES之间的相似度得分要比VOLVO和FIAT高。
谢谢,
德约克斯
最佳答案
您可以使用构成这些单词的三元组中的Jaccard相似度。也就是说,您将每个单词分解成三个字符的组成部分(对于volvo:vol,olv,lvo),并使它们的Jaccard彼此相似。 N-gram。
雅卡德相似度定义为普通n元数与总n元数之比:Jaccard index。
关于python - 单词聚类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44775387/