2015-04-24 105 views
0

我目前正在NLP/IR中执行一个java项目,并且对此很新。 该项目由一个包含大约1000个文档的集合组成,其中每个文档包含大约100个单词,其结构为包含具有术语频率的单词。我想根据文档(来自集合)找到类似的文档。比较文档 - 文档相似性

使用TF-IDF,为查询(给定文档)和集合中的每个其他文档计算tf-idf,然后将这些值作为具有余弦相似度的矢量进行比较。这可以让他们的相似性有所洞察吗?或者因为大的查询(文档)而不合理? 还有其他相似性措施可以更好吗?

感谢您的帮助

回答

1

基于TF-IDF相似,通常使用余弦来比较矢量代表的查询条件,一组表示文档的TF-IDF值向量,是一种常见的方法来计算“相似性”。

请注意,“相似性”是一个非常通用的术语。在IR领域,您通常会说“相关性”。文本可以在很多层面上相似:使用相同的语言,使用相同的字符,使用相同的词语,谈论同一个人,使用类似复杂的语法结构等等 - 因此,有很多措施。在网络上搜索文本相似性可以找到许多出版物,但也可以找到实施不同措施的开源框架和库。

今天,“语义相似性”比传统的基于关键词的红外模型吸引更多的兴趣。如果这是您感兴趣的领域,您可以查看2012年至2015年的SemEval共享任务的结果。

+0

感谢您的回答!我了解你提到的不同“类型”的相似性。如果我愿意与TF-IDF一起使用余弦相似方法。我只是将其中一个文档用作其余集合的查询(除了同一个文档)?或者它有其他方法吗? – user3930642

+0

查询通常较短,而文档通常较长。在比较文件时,您可能想要比较它们的TF-IDF载体。但是,当您将完整文档作为查询提交给IR系统时,它可能会将其视为一包字(TF = 1,IDF = 1,用于包中的所有单词) - 所以您可能不应该那样做。 – rec

1

如果你想要使用TF-IDF比较两个文件,你可以这样做。由于您提到每个文档包含100个单词,因此最差的情况下可能会有1000 * 100个独特单词。所以,即时假设你的向量建立在所有独特的单词上(因为所有文档都应该用相同的维度表示)。如果没有。的独特单词太高,你可以尝试使用一些降维技术来减小尺寸(如PCA)。但是你想要做的是正确的,你总是可以比较这样的文档来找到文档之间的相似性。

如果您希望在语义上更加相似,您应该使用LDA(主题建模)类型技术来查看。