2012-06-22 34 views
2

我需要一个用于文本流聚类的轻量级工具。轻量级,因为它没有内存,因此它可以记住以前的文本条目。这里的文本流意味着连续输入字母数字和半结构化句子/短语,例如:任何应用程序的日志。基于相似性的聚类意味着该算法应该将具有模式相似性的组中的文本聚类。例如:text1 ='aaababac'和text2 ='aaaaabac'应该组合在一起,因为它们之间只有一个字符不同。情景是:首先text1出现算法应该给它一个索引。那么text2现在出现了,该算法使用相同的方法给它一个索引。但条件是两个索引应该彼此靠近,并且在处理text2时,该算法不知道早期文本中出现了什么。 这是一种基于模式相似度的哈希。基于相似度的文本流聚类算法是否有新的突破?

现在我找不到任何有用的东西。我发现的最佳解决方案是simhash。 http://matpalm.com/resemblance/simhash/

回答

1

这个问题有点低估。如果你不记得以前的条目,你将如何记住你所看到的集群? 尤其是,一旦您看到大量“类似”项目,通常情况下只会将事物视为群集。没有至少一些“记忆”什么是频繁的,什么不是,你不能做到这一点。因此,没有合理的聚类算法,它确实没有任何内存。它可能不会记住文字对象,但记忆摘要并非如此。散列意味着至少记忆以前看到的数据的一部分。但是记住一个统计上显而易见的随机部分数据,这对记住它的好处很多吗?

发生的事情大部分是假装不记忆的事情,但事实上,他们只是记住不同的数据。但只要它被发布,它就被认为是成功的。即使它在实践中不起作用。

+0

感谢.....实际上关于'聚类'我们可以这样说,它可以是一种散列算法,它根据它们遵循的模式获取输入文本聚类。关于为什么要记住一个散列而不是输入文本本身的问题,我们可以使用:如果我们可以将文本(不是定量的)散列成一种索引(定量),我们可以有一个动态分析我们可以从中提取文本簇,也就是说,相似度较高的较小簇或簇成员之间相似度较低的较大簇。 –

+0

哈希值的计算距离通常不能很好地工作。哈希被设计为保持身份,而不是相似性;而附近的值被“加扰”到非常不同的位置,以均匀分布在输出范围上。 (LSH先接近距离,使物体相同;然后甚至通过一个小的散列值范围碰撞它们,它不计算散列键的距离,但认为相同的键候选物!) –

+0

这些词可以作为候选键吗?但是,由于我们只有一个可用的通行证,并且我们在这里处理智能代理(代理指的是算法)而不是专家代理,因此对于我们的情况,所有的单词都可以是候选。请注意,专家意味着学习和优化类型的代理,而我们的例子,即智能代理不能有学习阶段。这可以帮助吗? –

0

我想你所描述的叫做incremental clusteringdata stream clustering

+0

其实我误导你提到聚类。它实际上只应该是散列/索引算法。我需要更多的连续缩放索引/散列,这也代表了文本之间的模式相似性。如果问题只属于聚类,那么您提供的参考资料将是一个解决方案。但是,它不是可以将输入视为可变长度文本,而是输出是连续缩放索引的维度降低。 –