我有1000多个关键字,希望通过相似性将它们组合在一起。
例如:
“露台家具”
“客厅家具”
“二手椅子”
“新椅子”
我希望将“家具”和“椅子”这两个术语聚在一起。
我知道我可以做到这一点的一种方法是指定一些预选的“质心”术语,然后计算到每个Levenshtein的距离,并使用kmeans对其进行聚类。
但是我有兴趣了解的是,如何在没有预先指定质心词(例如“椅子”和“家具”)的情况下做到这一点。
谢谢。
最佳答案
您可以使用stringdist
包来计算距离矩阵:
str <- c("patio furniture",
"living room furniture",
"used chairs",
"new chairs")
library(stringdist)
d <- stringdistmatrix(str, str)
stringdist
支持许多距离功能。默认值为“限制的Damerau-Levenshtein距离”。然后,您可以在hclust
中使用此距离矩阵执行分层聚类:cl <- hclust(as.dist(d))
plot(cl)
hclust
有许多不同的方法。参见?hclust
。要创建固定数量的组(此处为2):cutree(cl, 2)
但是,这可能是许多可能的解决方案之一。
关于r - 字符串的无监督聚类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23337041/