NLP 如何获得 2 个文档之间的差异
Posted
技术标签:
【中文标题】NLP 如何获得 2 个文档之间的差异【英文标题】:NLP How to get the difference between 2 documents 【发布时间】:2016-10-08 08:45:49 【问题描述】:我有 2 个文档 A-B(或 2 个系列文档),并希望获得 显示两个文档之间差异的新文档:A-B
按区别,有几种定义,一种是: 单词列表/“概念”包含在 A 中但不包含在 B 中。
我正在考虑对 A 和 B 的每个句子使用 TF IDF, 如:
from sklearn.feature_extraction.text import TfidfVectorizer
d1 = [open(f1) for f1 in text_files]
tfidf = TfidfVectorizer().fit_transform(d1)
pairwise_similarity = tfidf * tfidf.T
我不确定这是否与生成新文档有关 C= "A-B", 特别对文档C中的“语义差异”感兴趣
【问题讨论】:
我不认为这是一个可以在 SO 帖子中快速回答的微不足道的问题。我会在 Reddit/machinelearning 中提问。 好的,当然。也许,一些参考资料对开始调查很有用。 【参考方案1】:gensim 使用Cosine similarity 计算文档之间的相似度(详情here):
index = similarities.MatrixSimilarity(lsi[corpus]) # transform corpus to LSI space and index it
sims = index[vec_lsi] # perform a similarity query against the corpus
在上面的代码中,vec_lsi
是 LSI 空间中的文档 A,sims
是 A 与 corpus
中的文档之间的相似性数组。
根据wikipedia,您可以翻转余弦相似度并计算角距离,这是一个距离度量:
distance = np.arccos(sims)/np.pi
请注意,这些余弦相似度和角距离是基于向量的,它们的解释将取决于您的向量所包含的内容。在我的示例中,向量是潜在语义索引 (LSI) 分数,因此角距离与语义空间中的距离有关。
【讨论】:
但是,它没有提供任何东西来生成文档 C= A-B以上是关于NLP 如何获得 2 个文档之间的差异的主要内容,如果未能解决你的问题,请参考以下文章