2010-12-14 162 views
1


我正在研究一个项目,我正在使用遗传算法生成最能描述文本的单词列表。
我目前使用余弦相似性来做它,但它有两个缺陷:它的目的太慢了,如果两个被比较的向量是零,它最终会出现人为高相似度和一个单词向量,非常好。 对于其他措施的任何建议可能会更快/不注意那些不在那里的单词吗? 谢谢。快速矢量差异/相似性度量

+0

这是不是很清楚你要求什么,但你可能是[Levenshtein距离]后(http://en.wikipedia.org/wiki/Levenshtein_distance)或[海明距离](http:// en。 wikipedia.org/wiki/Hamming_distance)? – 2010-12-14 02:10:06

回答

3

余弦相似度是量级乘积的点积,所以最小化维数是至关重要的。

剔除牛群一点,你可能想申请stemming崩溃类似意思的词到一个单一的维度,并从维度池折腾了hapax legomena(也就是说,只有在所考虑的语料库出现一次),因为一个算法不可能从它们中派生出很多有用的信息。

虽然我不确定会产生零矢量。你能给个例子吗?

编辑:那么你以后是创建一个单词列表是为特定文件或群集选择性?在这种情况下,你需要一些方法来消除低选择性的单词。

您可能希望将最常见的词语视为stop words以进一步挑选维度集并获得更多的性能。此外,在遗传算法方面,您的适应度函数需要惩罚匹配目标群集之外的文档的单词列表,而不仅仅奖励那些匹配群集内的文档的单词列表,因此您的单词列表不会被杂乱无章频繁而非选择性。

如果您在调整适应度函数后仍需要更好的语义选择性,您可能需要考虑使用orthogonal sparse bigrams而不是单个单词。但我不知道它在尺寸数量方面会做什么,因为虽然将会有不同的术语而不是 n,但它们中的很多将是hapaxes。这可能会导致一个问题,如果你需要单词而不是你的术语列表中的OSB。

+0

我有些误会,基本上是我的集合的稀少(很多hapaxes和几千个单词使用了少数几次)意味着尽管它们不代表语料库的良好集群,但相似性经常非常高。 – Reu 2010-12-14 21:56:16