我必须实现一个模块,在这个模块中,我需要将具有相似含义的句子(字符串)分组到不同的集群中。我读到了k-means,EM聚类等,但我面临的问题是,这些算法是用图上的矢量点来解释的。我不明白如何为具有相似含义的句子(字符串)实现这些算法。请建议一些适当的方法。
例如,让我们考虑一个课堂场景。1)教师知识丰富。2)学生理解老师所教的内容。3)老师有时上课很守时。4)老师在课堂上是听得见的。
假设我们有这4个句子。然后看着它们,我们可以说句子1和2的意思是相似的。但第三句和第四句既不相关,也不与前两句相关。通过这种方式,我需要对句子进行分类。那么,如何才能做到呢?
发布于 2016-03-24 05:55:43
首先,您应该熟悉bag of words的概念。基本思想是将句子中的每个单词映射到出现的次数上,例如,对于句子hello world,hello tanay将映射到
Hello World Tanay
1 1 0
1 0 1这允许您使用其中一种标准方法。
同样值得一看的是TF/DF它是为了在bag of words表示中重新加权单词,以及它们对区分文档(或您的案例中的句子)的重要性。
其次,您应该看看LDA,它是专门为将单词聚类到概念而设计的。然而,它是由一种视图概念构成的。
对我来说,最有希望的是这些方法的组合。生成、bags of words、使用TF/DF重新调整bag of words权重、运行LDA并使用LDA概念增强重新调整权重的bag of words,然后使用标准聚类算法。
发布于 2016-03-24 14:57:26
群集无法执行此操作。
因为它在数据中寻找结构,但你想通过抽象的人类概念进行聚类,这是很难用统计方法捕捉到的…
因此,你首先需要解决让计算机可靠地理解语言的这一真正困难的任务。而不是在“最佳匹配”的基础上,但足够好地量化相似性。
实际上,在这个方向上有一些尝试,通常涉及大量数据和深度学习。他们可以在一些玩具示例中做到这一点,例如“巴黎-法国+美国= ?”-有时。Google for IBM Watson和Google word2vec。
祝好运。您将需要高性能的GPU和艾字节的训练数据。
https://stackoverflow.com/questions/36189322
复制相似问题