【大语言模型】应用:10分钟实现搜索引擎

本文利用20Newsgroup这个数据集作为Corpus(语料库),用户可以通过搜索关键字来进行查询关联度最高的News,实现对文本的搜索引擎:

1. 导入数据集

python 复制代码
from sklearn.datasets import fetch_20newsgroups

newsgroups = fetch_20newsgroups()

print(f'Number of documents: {len(newsgroups.data)}')
print(f'Sample document:\n{newsgroups.data[0]}')

2. 向量化单词

python 复制代码
from sklearn.feature_extraction.text import CountVectorizer
count = CountVectorizer()
count.fit(newsgroups.data)
show_vocabulary(count)

print(f'Size of vocabulary: {len(count.get_feature_names_out())}')

def show_vocabulary(vectorizer):
    words = vectorizer.get_feature_names_out()

    print(f'Vocabulary size: {len(words)} words')

    # we can print ~10 words per line
    for l in np.array_split(words, math.ceil(len(words) / 10)):
        print(''.join([f'{x:<15}' for x in l]))

3. 搜索引擎

python 复制代码
#将语料库进行转化
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(f'Similarity Matrix Shape: {similarity_matrix.shape}')

得到Similarity_matrix一共有N行,表示语料库中的文档数。还有一列,代表相似度系数。

第K行的相似度系数,代表用户输入的文本与语料库中第K个文档的相似程度。

我们对相似度矩阵进行排序:

python 复制代码
similarities = pd.Series(similarity_matrix[:, 0])
similarities.head(10)

那么和用户输入最相关的文档就是第一个了!

python 复制代码
print('Best document:')
print(newsgroups.data[top_10.index[0]])

结论:本文利用Cosine_similarity比较文档的相似度,从语料库找出最佳匹配的文档。

如果对单词的向量化,BoW概念有问题可以看下我的另一篇文章。

CSDN

下面一篇文章我会具体分析Cosine_similarity的原理,敬请关注!

相关推荐
阳明山水6 分钟前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
阿雄不会写代码8 分钟前
【AI Agent】自学笔记
人工智能
克里斯蒂亚诺更新8 分钟前
Transformer(注意力机制)不按顺序-全盘扫描
人工智能·深度学习·transformer
呆呆槑_Xiong18 分钟前
国内GEO生成式引擎优化公司对比 2026
人工智能
Dawson Zhu19 分钟前
大语言模型的本质:从条件概率预测到能力涌现的技术剖析
人工智能·语言模型·架构·aigc·agi
gzkuijing20 分钟前
MDI1PRD23B7‑EQ|Novanta IMS一体化RS-485/422步进电机参数、选型要点与典型应用
人工智能·机器学习·编辑器
能源科技集24 分钟前
不止于“大”:远景动力(AESC)790Ah电芯以系统级思维重塑储能技术路线
人工智能
骥龙33 分钟前
模块五:n8n自动化工作流 + Ollama + Health-MCP
人工智能·ai编程
jonyleek37 分钟前
工业物联网边缘计算架构设计:从数据采集到本地决策
人工智能·物联网·边缘计算·工业物联网·边缘网关·jvs物联网平台·iot架构
桐盛科技38 分钟前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算