Kal*_*pit 1 nlp python-3.x gensim spacy
我有一个约有1.2万个文档的利基语料库,并且我想测试具有相似含义的几乎重复的文档-考虑有关不同新闻机构报道的同一事件的文章。
我尝试过gensim的Word2Vec,即使测试文档在语料库中,它也给我带来极好的相似度得分(<0.3),并且我尝试了SpaCy,它给我> 5k相似度> 0.9的文档。我测试了SpaCy最相似的文档,但是它几乎没有用。
这是相关的代码。
tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]
lsi = models.LsiModel(corpus, id2word=dictionary, num_topics=40)
doc = preprocess(query)
vec_bow = dictionary.doc2bow(doc)
vec_lsi_tfidf = lsi[tfidf[vec_bow]] # convert the query to LSI space
index = similarities.Similarity(corpus = corpus, num_features = len(dictionary), output_prefix = "pqr")
sims = index[vec_lsi_tfidf] # perform a similarity query against the corpus
most_similar = sorted(list(enumerate(sims)), key = lambda x:x[1])
for mid in most_similar[-100:]:
print(mid, file_list[mid[0]])
Run Code Online (Sandbox Code Playgroud)
使用gensim,我发现了一种不错的方法,并进行了一些预处理,但是相似性评分仍然很低。有没有人遇到过这样的问题,是否有一些有用的资源或建议?
我会发表评论,但是我没有足够的声誉!在NLP中,很容易陷入方法中而忘记了预处理。
1)删除停用词/最常用词
2)合并单词对-查看SpaCy的文档
即“纽约市”成为其自己的唯一标记,而不是“新”,“约克”,“城市”
https://spacy.io/usage/linguistic-features
3)使用Doc2Vec而不是Word2Vec(由于您已经在使用gensim,因此应该很难理解这一点,它们有自己的实现)
然后,完成所有这些操作后,您将拥有文档向量,这可能会给您带来更好的分数。另外,请记住,您拥有的12k文档只是事物总体方案中的少量示例。
| 归档时间: |
|
| 查看次数: |
3201 次 |
| 最近记录: |