如何衡量两个文本文档之间的相似度?

数据挖掘 机器学习 深度学习 文本挖掘 相似 类似文件
2021-10-03 08:45:12

假设我有 100 个文本文档,我想对这些文档进行聚类。

第一步是100X100为文档构建成对相似度矩阵

我的问题是:

衡量两个文档之间相似性的常用方法是什么?

谢谢,

3个回答

一般来说,有两种方法可以找到文档-文档相似度

TF-IDF 方法

  1. 制作一个包含文档所有单词的文本语料库。您必须使用标记化和停用词删除。NLTK 库提供所有 .
  2. 将文档转换为 tf-idf 向量。
  3. 找到它们或任何新文档之间的余弦相似度以进行相似度度量。

您可以使用 NLTK、Scikit learn、Gensim 等库来实现 Tf-Idf。Gensim 提供了许多附加功能。见: https ://www2.cs.duke.edu/courses/spring14/compsci290/assignments/lab02.html

词嵌入

谷歌的 Doc2Vec,在 Gensim 库中可用,可用于文档相似度。另外,Doc2Vec 模型本身可以计算相似度分数(没有余弦或任何需要她的东西)。您只需要通过标记化(使用 NLTK)对文档进行矢量化,并使用 gensim 和 fins 相似性以及许多使用 Gensim 内置方法(如 model.n_similarity)来制作两个文档之间的相似性的 Doc2vec 模型。

其他

此外,由于您的目标是对文档进行聚类,您可以尝试使用 LDA(潜在 Dirichet 分配)或 LSI(潜在语义索引)进行主题建模。

最常见的方法是衡量两个文本文档之间的相似度是向量空间中的距离。向量空间模型可以通过使用字数、tf-idf、词嵌入或文档嵌入来创建。距离最常通过余弦相似度来衡量。一旦所有文档都在同一个向量空间中,就可以计算出具有余弦相似度的 100x100 矩阵。

信息检索概论》一书更详细。

我可能会通过为每个文档创建一组特征来解决这个问题,例如,您可以使用Bag of words representationTF-IDF term weighting在此之后,您可以通过一些距离度量来计算这些特征的接近度,并将其用作相似度的度量。