南昌建网站那家好,如何免费搭建网站源码,wap手机,如何让谷歌收录网站本文利用20Newsgroup这个数据集作为Corpus(语料库)#xff0c;用户可以通过搜索关键字来进行查询关联度最高的News#xff0c;实现对文本的搜索引擎#xff1a;
1. 导入数据集
from sklearn.datasets import fetch_20newsgroupsnewsgroups fetch_20newsgroups()print(fNu…本文利用20Newsgroup这个数据集作为Corpus(语料库)用户可以通过搜索关键字来进行查询关联度最高的News实现对文本的搜索引擎
1. 导入数据集
from sklearn.datasets import fetch_20newsgroupsnewsgroups fetch_20newsgroups()print(fNumber of documents: {len(newsgroups.data)})
print(fSample document:\n{newsgroups.data[0]})
2. 向量化单词
from sklearn.feature_extraction.text import CountVectorizer
count CountVectorizer()
count.fit(newsgroups.data)
show_vocabulary(count)print(fSize of vocabulary: {len(count.get_feature_names_out())})def show_vocabulary(vectorizer):words vectorizer.get_feature_names_out()print(fVocabulary size: {len(words)} words)# we can print ~10 words per linefor l in np.array_split(words, math.ceil(len(words) / 10)):print(.join([f{x:15} for x in l]))
3. 搜索引擎
#将语料库进行转化
corpus_bow count.transform(newsgroups.data)#提供用户输入对输入内容进行转化为BoW - Bag of word
query input(Type your query: )
query_bow count.transform([query])from sklearn.metrics.pairwise import cosine_similarity#比较输入内容与语料库中的相似度
similarity_matrix cosine_similarity(corpus_bow, query_bow)
print(fSimilarity Matrix Shape: {similarity_matrix.shape}) 得到Similarity_matrix一共有N行表示语料库中的文档数。还有一列代表相似度系数。
第K行的相似度系数代表用户输入的文本与语料库中第K个文档的相似程度。
我们对相似度矩阵进行排序
similarities pd.Series(similarity_matrix[:, 0])
similarities.head(10)
那么和用户输入最相关的文档就是第一个了
print(Best document:)
print(newsgroups.data[top_10.index[0]])
结论本文利用Cosine_similarity比较文档的相似度从语料库找出最佳匹配的文档。
如果对单词的向量化BoW概念有问题可以看下我的另一篇文章。
CSDN
下面一篇文章我会具体分析Cosine_similarity的原理敬请关注