【发布时间】:2019-01-10 03:01:11
【问题描述】:
我正在尝试让用户输入搜索词来查找与他们的搜索匹配的前 5 篇文章。我正在比较各种方法(gensim word2vec、doc2vec、最近邻等)的结果/性能。
我已经成功地创建了代码来利用 Spacy 中的标准相似度函数,但是,由于它会遍历大量文档列表,并将相似度分数附加到 pandas df,因此需要的时间太长。
有没有一种方法可以在没有循环和熊猫附加的情况下返回前 5 个最相似的文档?原因是与其他方法相比,此方法返回最合理的前 5 个文档(词嵌入的乐趣!)
#load relevant libraries
import pandas as pd
import numpy as np
import spacy
#load spacy model
nlp=spacy.load('Z:\\en_core_web_lg-2.0.0')
#
#Get Doc Corpus
dfCorpus = pd.read_csv('z:\DocumentCorpus.csv', delimiter=',')
##get top 5 using spacy similarity function
SearchStringCosine = nlp(input('Enter search term:'))
computed_similarities = []
for i in dfCorpus.CorpusInput_Unqiue:
doc=nlp(i)
computed_similarities.append((i, SearchStringCosine.similarity(doc)))
computed_similarities = sorted(computed_similarities, key=lambda item: -item[1])
computed_similarities = pd.DataFrame(computed_similarities,columns= ['CorpusInput_Unique','Score'])
print(computed_similarities[:5])
【问题讨论】:
标签: python python-3.x machine-learning similarity spacy