Python 如何使用tf idf和成对相似性搜索文档?
我正在尝试建立一个基于Tf Idf和pandas和sklearn的成对相似性的文本文件搜索工具 以下代码是我目前掌握的代码: 我有一个文本文件或网页,我可以刮,我将使用它来建立我的初始语料库。然后,我构建一个数据框架,并对文档执行一些预处理 之后,我构建训练我的TFIDFvectorier并为我的语料库构建矩阵 然后,我用正在搜索的文本创建第二个数据帧,对其进行预处理,并基于先前训练的矢量器构建第二个矩阵 最后我计算了我的余弦相似矩阵Python 如何使用tf idf和成对相似性搜索文档?,python,python-3.x,pandas,scikit-learn,nltk,Python,Python 3.x,Pandas,Scikit Learn,Nltk,我正在尝试建立一个基于Tf Idf和pandas和sklearn的成对相似性的文本文件搜索工具 以下代码是我目前掌握的代码: 我有一个文本文件或网页,我可以刮,我将使用它来建立我的初始语料库。然后,我构建一个数据框架,并对文档执行一些预处理 之后,我构建训练我的TFIDFvectorier并为我的语料库构建矩阵 然后,我用正在搜索的文本创建第二个数据帧,对其进行预处理,并基于先前训练的矢量器构建第二个矩阵 最后我计算了我的余弦相似矩阵 texts = scrapper.getTexts([opt
texts = scrapper.getTexts([opts.url]) # module that scrapes a webpage
columns = ['section', 'title', 'paragraph']
df = pd.DataFrame(texts, columns=columns)
model = preprocess(df) #Remove stopwords, lemmatize etc.
corpus = df['lemmatized_sents'].tolist()
tfidf_vectorizer = TfidfVectorizer(max_df=1, use_idf=True)
tfidf_matrix = tfidf_vectorizer.fit_transform(raw_documents=corpus)
to_search = pd.DataFrame({'paragraph':
["Text i am search for in the orig. document"]})
to_search = preprocess(to_search)
to_search_matrix = vectorizer.transform(to_search['lemmatized_sents'].tolist())
cosine_similiarities = metrics.pairwise.cosine_similarity(
to_search_matrix, matrix).flatten()
现在,我不清楚的是,我如何基于余弦相似性回到我的原始语料库。如何在原始数据框中找到与搜索文本最相似的条目
cosine_similarities.argmax()
将返回具有最大余弦相似性的文档索引。或者,您可以使用
nlargest
fromheapq
之类的工具来获得k个最大值。谢谢,这正是我想要的。你有如何使用heapq的例子吗?我没有,但我可以给你一个提示:使用heapq.nlargest
。