【问题标题】:Document similarity: Vector embedding versus Tf-Idf performance?文档相似性:向量嵌入与 Tf-Idf 性能?
【发布时间】:2017-07-27 08:28:05
【问题描述】:

我有一个文档集合,其中每个文档都随着时间的推移而快速增长。任务是在任何固定时间找到相似的文档。我有两种可能的方法:

  1. 向量嵌入(word2vec、GloVe 或 fasttext),对文档中的词向量进行平均,并使用余弦相似度。

  2. 词袋:tf-idf 或其变体,例如 BM25。

其中之一会产生明显更好的结果吗?有人对 tf-idf 与平均 word2vec 的文档相似度进行了定量比较吗?

是否有另一种方法可以在添加更多文本时动态优化文档的向量?

【问题讨论】:

    标签: machine-learning nlp tf-idf word2vec doc2vec


    【解决方案1】:
    1. doc2vec 还是 word2vec ?

    根据文章,doc2vec 或paragraph2vec 的性能对于短文档来说很差。 [学习非常短文本的语义相似性,2015,IEEE]

    1. 短篇文档...?

    如果你想比较短文档之间的相似度,你可能想通过 word2vec 对文档进行矢量化。

    1. 如何构造?

    例如,您可以使用 tf-idf 构造一个带有加权平均向量的文档向量。

    1. 相似度度量

    此外,我建议使用 ts-ss 而不是 cosine 或 euclidean 来获得相似性。

    请参考以下文章或下面github中的总结。 “一种用于测量文档和文档聚类之间相似度的混合几何方法”

    https://github.com/taki0112/Vector_Similarity

    谢谢

    【讨论】:

      【解决方案2】:

      您也可以考虑尝试 Jaccard 相似度,它使用基本集合代数来确定两个文档中的语言重叠(尽管它有点类似于 BOW 方法)。可以在 here 找到一个不错的介绍。

      【讨论】:

      • Jaccard 距离更加强调文档大小的相似性,这在某些情况下可能并不理想
      【解决方案3】:

      您必须尝试一下:答案可能会根据您的语料库和特定应用程序对“相似性”的看法而有所不同。效果可能会因典型文档长度而异,因此如果“随时间快速增长”也意味着“任意增长”,那么随着时间的推移,这可能会极大地影响效果(需要对更长的文档进行调整)。

      另请注意,“Paragraph Vectors”——其中一个向量像词向量一样被共同训练来表示文本范围——作为相似度的输入,它的性能可能优于简单的词向量平均值/分类任务。 (许多对“Doc2Vec”的引用特指“段落向量”,尽管“Doc2Vec”一词有时也用于将文档转换为单个向量的任何其他方式,例如词向量的简单平均。)

      您可能还想查看“Word Mover's Distance”(WMD),这是一种使用词向量的两个文本之间的相似性度量,尽管不是通过任何简单的平均值。 (但是,计算成本可能很高,尤其是对于较长的文档。)对于分类,最近有一个名为“Supervised Word Mover's Distance”的改进,它重新加权/转换词向量,使它们对已知类别更敏感。有了足够的评估/调整数据来确定哪些文档应该比其他文档更接近,类似的技术可能会应用于通用相似性任务。

      【讨论】:

        猜你喜欢
        • 2010-12-31
        • 2018-03-23
        • 2017-01-04
        • 2015-10-06
        • 1970-01-01
        • 2017-02-02
        • 2017-10-05
        • 1970-01-01
        • 2013-02-03
        相关资源
        最近更新 更多