我正在尝试聚类一些词(以汽车品牌为例)。为了做到这一点,我不能使用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/

10-12 18:03