来自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]
:
根据余弦相似度运行聚类算法到聚类text[:n]
,然后计算text[n+1]
属于某个现有聚类的概率及其在新聚类中的概率集群本身。 - >然后用概率来决定text[n+1]
是否是新的"或者"在"
或者,如果我不关心text[:n]
中有多少个群集,而只关注text[n+1
是否是新内容,是否可以简化分类过程{ {1}}到二进制text[n+1]
或0 (something seen before)
,计算效率更高?
此外,中餐厅流程之类的内容是否可能与此处的问题相关?我感谢您指出的任何建议和资源。
答案 0 :(得分:0)
群集不是分类。
不依赖于结果良好或稳定 - 运行两次可能会产生非常不同的结果,而某些群集可能会很好,其他群集可能会很糟糕。因此,研究它们,然后标记您的数据并使用分类而不是聚类。
后来的hack很容易做到(训练分类器,基于你的星团),但我不相信它在现实中是有用的。