音乐语料句级聚类

数据挖掘 聚类 nlp 文本挖掘
2022-02-13 00:14:55

我为我的用户提供了一个离线音乐库。我的目标是了解我的用户正在寻找什么,这意味着将原始用户搜索翻译为:音乐艺术家、歌曲、专辑,然后将音乐添加到公司库中。

将常见的短句分组为单个实体的建议聚类算法是什么。例子:

  • 泰勒斯威夫特 摇一摇
  • 泰勒·斯威夫特
  • 摆脱它
  • Twylor Swift 摇一摇

我尝试了这个示例,并且对于特定数量的集群 (K) 工作正常,其中 K < N | K <= N。但是由于搜索是不可预测的,因此需要找到一种方法来自动化集群的数量:我的目标是集群 2 个或更多相似的项目,更不用说在独立集群中进行单个搜索了,例如:

集群 1:

  • 泰勒斯威夫特 摇一摇
  • 泰勒·斯威夫特
  • 摆脱它
  • Twylor Swift 摇一摇

集群 2

  • 阿维奇
  • 艾维奇伊维萨岛
  • 阿维奇电子之家

集群 3

  • 胡安·加布里埃尔

集群 4

  • 阿黛尔

集群 5

  • 布兰妮·斯皮尔斯
  • 布兰妮斯皮尔斯 VMA 2016
1个回答

我建议分层聚类。它是无监督的,您不需要预定义集群的数量。它是如何工作的(对于自下而上的版本)是将每个句子(或对象)初始化为自己的集群。在算法的每次迭代中,最小的簇内距离的两个簇被连接起来,一直到有一个“根”,所有的东西都是一个簇。这样做的结果是一个大的树状图,您可以在想要定义集群的任何点切割树状图。或者你可以检查它。这是一个很好的 alg数值示例。

它应该检测到您已经找到的相同类型的集群,并且您不需要重新定义距离度量。而且,我预计您将获得与您似乎已经获得的相同数量的班级分离;事实上,来自层次聚类的树状图的好处在于它很好地说明了类分离。它是 R 中的“hclust”,对于 Python 不确定。