9

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

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

  2. Bag-of-Words:tf-idf 或其变体,例如 BM25。

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

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

4

3 回答 3

8
  1. doc2vec 还是 word2vec ?

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

  1. 短篇文档...?

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

  1. 如何构建?

例如,您可以使用 tf-idf 构建具有加权平均向量的文档向量。

  1. 相似度测量

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

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

https://github.com/taki0112/Vector_Similarity

谢谢你

于 2017-05-12T09:54:37.097 回答
4

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

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

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

于 2017-03-07T19:16:18.410 回答
1

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

于 2017-03-09T18:59:31.760 回答