在Python

时间:2016-11-03 16:03:39

标签: python algorithm classification cluster-analysis text-classification

来自GROUP的一组文本text[:n](例如1-100)和它们之间的余弦相似性矩阵:

     001   002   003  ...   100
001    1  0.53  0.47  ...  0.79
002 0.53     1  0.55  ...  0.30
003 0.47  0.55     1  ...  0.21
...  ...   ...   ...    1   ...
100 0.79  0.30  0.21  ...     1

创建新成员text[n+1]后,我想知道该text[n+1]是否新的。也就是说,它不属于text[1-100]中基于其表面相似性的任何潜在聚类。

稍微了解一下群集技术的种类,我想知道如何在Python中最好地完成这种分类。我现在正在进行一些研究,有两种相当普遍的方式:

每当新成员text[n+1]被添加到现有GROUP时:text[:n]

  1. 根据余弦相似度运行聚类算法到聚类text[:n],然后计算text[n+1]属于某个现有聚类的概率及其在新聚类中的概率集群本身。 - >然后用概率来决定text[n+1]是否是新的"或者"在"

  2. 之前,我们的数据中已存在类似内容的东西
  3. 或者,如果我不关心text[:n]中有多少个群集,而只关注text[n+1是否是新内容,是否可以简化分类过程{ {1}}到二进制text[n+1]0 (something seen before),计算效率更高?

  4. 此外,中餐厅流程之类的内容是否可能与此处的问题相关?我感谢您指出的任何建议和资源。

1 个答案:

答案 0 :(得分:0)

群集不是分类。

依赖于结果良好或稳定 - 运行两次可能会产生非常不同的结果,而某些群集可能会很好,其他群集可能会很糟糕。因此,研究它们,然后标记您的数据并使用分类而不是聚类。

后来的hack很容易做到(训练分类器,基于你的星团),但我不相信它在现实中是有用的。