【发布时间】:2017-03-17 07:35:50
【问题描述】:
有一组来自text[:n]的文本GROUP(例如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]:
运行聚类算法,根据余弦相似度对
text[:n]进行聚类,然后计算text[n+1]属于现有聚类之一的概率以及它自己应该在新聚类中的概率. -> 然后使用概率来确定text[n+1]是“新事物”还是“之前我们的数据中已经存在类似事物”或者,如果我不关心
text[:n]中有多少簇,而只是关心text[n+1是否是新事物,是否可以简化将text[n+1]分类为二进制@ 987654337@或1 (something new)计算效率更高?
另外,像 中餐厅流程 这样的内容是否可能与这里的问题相关?我也很感激你能指出我的任何建议和资源。
【问题讨论】:
-
我相信您可以通过在线方式使用 DBSCAN,只需相对较少的更改。这允许您将新点分配给现有集群或创建一个新集群en.wikipedia.org/wiki/DBSCAN
标签: python algorithm classification cluster-analysis text-classification