【问题标题】:Comparing documents - document similarity比较文档 - 文档相似度
【发布时间】:2015-07-02 17:48:27
【问题描述】:

我目前正在 NLP/IR 中进行一个 java 项目,并且对此相当陌生。 该项目由一个包含大约 1000 个文档的集合组成,其中每个文档有大约 100 个单词,结构为具有词频的单词包。我想根据一个文档(从集合中)找到类似的文档。

使用 TF-IDF,计算查询(给定文档)和集合中所有其他文档的 tf-idf,然后将这些值作为具有余弦相似度的向量进行比较。这可以让我们了解它们的相似性吗?还是因为查询(文档)很大,所以不合理? 是否有任何其他相似性度量可以更好地工作?

感谢您的帮助

【问题讨论】:

    标签: java nlp similarity information-retrieval tf-idf


    【解决方案1】:

    基于 TF-IDF 的相似度,通常使用余弦将表示查询词的向量与表示文档的 TF-IDF 值的一组向量进行比较,是计算“相似度”的常用方法。

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

    如今,“语义相似度”比传统的基于关键字的 IR 模型更受关注。如果这是您感兴趣的领域,您可以查看SemEval 2012-2015 年共享任务的结果。

    【讨论】:

    • 感谢您的回答!我理解你提到的不同“类型”的相似性。如果我会使用 TF-IDF,余弦相似度方法。我是否只使用其中一个文档作为集合其余部分的查询(同一个文档除外)?还是有其他方式?
    • 查询通常很短,而文档通常较长。在比较文档时,您可能希望将它们的 TF-IDF 向量相互比较。但是,当您将完整文档作为查询提供给 IR 系统时,它可能只是将其视为一个词袋(TF = 1,IDF = 1,袋中的所有词) - 所以您可能不应该这样做.
    【解决方案2】:

    如果您只想使用 TF-IDF 比较两个文档,您可以这样做。由于您提到每个文档包含 100 个单词,因此在最坏的情况下可能会有 1000*100 个唯一单词。所以,我假设你的向量是建立在所有唯一的单词上的(因为所有文档都应该用相同的维度表示)。如果没有。唯一词的数量太高,您可以尝试使用一些降维技术来降低维度(如 PCA)。但是您尝试做的是对的,您始终可以像这样比较文档以查找文档之间的相似性。

    如果您想要更多语义上的相似性,您应该考虑使用 LDA(主题建模)类型技术。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 2020-07-30
      • 2017-04-18
      • 1970-01-01
      • 2012-03-17
      • 2019-03-14
      • 2023-03-24
      相关资源
      最近更新 更多