NLP如何获得2个文件之间的差异

时间:2016-06-08 07:53:53

标签: nlp scikit-learn stanford-nlp gensim spacy

我有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

1 个答案:

答案 0 :(得分:0)

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)得分,因此角距离与语义空间中的距离有关。