当前位置: 首页 > news >正文

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

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

1. 导入数据集

from sklearn.datasets import fetch_20newsgroupsnewsgroups = fetch_20newsgroups()print(f'Number of documents: {len(newsgroups.data)}')
print(f'Sample document:\n{newsgroups.data[0]}')

2. 向量化单词

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 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(f'Similarity 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的原理,敬请关注!

http://www.lryc.cn/news/340353.html

相关文章:

  • UT单元测试
  • leetcode-合并两个有序链表
  • 006Node.js cnpm的安装
  • web server apache tomcat11-01-官方文档入门介绍
  • java的总结
  • 解决npm run dev跑项目,发现node版本不匹配,怎么跑起来?【已解决】
  • flood_fill 算法|图形渲染
  • Promise简单概述
  • 【Java集合进阶】数据结构(平衡二又树旋转机制)数据结构(红黑树、红黑规则、添加节点处理方案详解)
  • 富文本在线编辑器 - tinymce
  • 从汇编代码理解数组越界访问漏洞
  • skynet 使用protobuf
  • Vue Router 4 与 Router 3 路由配置与区别
  • python借助elasticsearch实现标签匹配计数
  • Yolo-world+Python-OpenCV之摄像头视频实时目标检测
  • vue-treeselect 的基本使用
  • Vue(二)
  • Python基于深度学习的车辆特征分析系统
  • 推理还原的干货
  • 【Redis 神秘大陆】006 灾备方案
  • 【Java基础】17.异常处理
  • 【python】flask结合SQLAlchemy,在视图函数中实现对数据库的增删改查
  • APIGateway的认证
  • MacOS Github Push项目 精简版步骤
  • Eclipse的基本使用讲解(建项目,建包,建类,写代码(基本语法))新手入门必备
  • 3D模型处理的并行化
  • 盲人安全导航技巧:科技赋能让出行更自如
  • 问,由于java存在性能上,以及部分功能上的缺点,请问如何正确使用C,C++,Go,这三个语言,提升Java Web项目的性能?
  • 【信号与系统 - 9】傅里叶变换的性质习题
  • C#探索之路基础夯实篇(5):语法糖概念解析