我的主题是(一堆)文本的相似性和聚类。简而言之:我希望将收集的文本聚集在一起,并在最后显示在有意义的群集中。要做到这一点,我的方法到目前为止,我的问题是在群集。目前的软件是用php编写的。相似矩阵的有效聚类
1)相似度: 我把每个文档看作是一个“袋子文字”,并将单词转换为矢量。我用
- 过滤(仅适用于“实”字)
- 标记化(拆分句子进言)
- 制止(减少的话他们的基本形式;波特词干)
- 修剪(词切带太低&低频)
作为降维的方法。 。在那之后,我使用余弦相似性(如建议/在网络上and here各种网站上描述
然后结果是相似矩阵是这样的:
A B C D E
A 0 30 51 75 80
B X 0 21 55 70
C X X 0 25 10
D X X X 0 15
E X X X X 0
A ... E是我的文字和因为sim(A,B)== sim(B,A)只填充了矩阵的一半,所以文本A与文本的相似度D是71%
我想从这个矩阵中产生一个先验未知(!)数量的簇,簇应该表示类似的项目(直到一定的停止p标准)一起。
我试过基本实现自己,这是基本上是这样的(60%作为固定的相似性阈值)
foreach article
get similar entries where sim > 60
foreach similar entry
check if one of the entries already has a cluster number
if no: assign new cluster number to all similar entries
if yes: use that number
它的工作(在某种程度上),但也不好,结果往往怪物群。 所以,我想重做这个,并且已经查看了各种聚类算法,但是我仍然不确定哪个算法最好。我认为它应该是一个凝聚的算法,因为每一对文本在开始时都可以看作是一个集群。但问题仍然在于阻塞标准是什么,以及算法是否应该将现有集群划分和/或合并在一起。
对不起,如果有些东西看起来很基本,但我在这个领域比较新。谢谢您的帮助。
你有没有得到任何好的答案?我甚至不清楚集群应该在多大程度上工作...... – Jim 2013-10-30 19:00:51