无监督字符串聚类

我有一份包含1000多个关键词的列表,希望根据相似性将它们分组。

例如:

  • “露台家具”
  • “客厅家具”
  • “二手椅子”
  • “新椅子”

我希望”家具”和”椅子”这些词能够聚集在一起。

我知道一种方法是预先选择一些”中心”词,然后计算每个词到这些中心词的Levenshtein距离,并使用kmeans进行聚类。

但我想了解的是,在不预先指定像”椅子”和”家具”这样的中心词的情况下,如何进行这种聚类。

谢谢。


回答:

你可以使用stringdist包来计算距离矩阵:

str <- c("露台家具", "客厅家具", "二手椅子", "新椅子")
library(stringdist)
d <- stringdistmatrix(str, str)

stringdist支持多种距离函数。默认使用的是’受限的Damerau-Levenshtein距离’。然后你可以将这个距离矩阵用于hclust来进行层次聚类:

cl <- hclust(as.dist(d))
plot(cl)

hclust有多种不同的方法。请参阅?hclust。要创建固定数量的组(这里是2个):

cutree(cl, 2)

但是,这可能只是众多可能的解决方案之一。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注