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

特征工程四-1:自定义函数find_similar_docs查找最相似文档案例

find_similar_docs 函数参数详解及实际示例

函数参数说明

def find_similar_docs(query, vectorizer, doc_matrix, top_n=3):
参数类型说明
querystr要查询的文本字符串
vectorizerTfidfVectorizer已经训练好的TF-IDF向量化器
doc_matrixscipy.sparse.csr_matrix文档集的TF-IDF特征矩阵
top_nint返回最相似文档的数量(默认为3)

实际应用示例

1. 准备数据

from sklearn.feature_extraction.text import TfidfVectorizer# 示例文档集
documents = ["机器学习是人工智能的核心领域","深度学习是机器学习的一个分支","自然语言处理是人工智能的重要应用","计算机视觉使用深度学习技术","数据分析需要统计学知识"
]# 初始化并训练TF-IDF向量化器
vectorizer = TfidfVectorizer()
doc_matrix = vectorizer.fit_transform(documents)  # 文档特征矩阵

2. 使用函数查询

# 查询与"人工智能技术"相似的文档
query_text = "人工智能技术"
similar_indices = find_similar_docs(query_text, vectorizer, doc_matrix, top_n=2)print("最相似的文档索引:", similar_indices)

3. 查看结果

print("\n查询内容:", query_text)
print("\n最相似的{}个文档:".format(len(similar_indices)))
for idx in similar_indices:print(f"[文档{idx}] {documents[idx]}")

预期输出结果

最相似的文档索引: [0 2]查询内容: 人工智能技术最相似的2个文档:
[文档0] 机器学习是人工智能的核心领域
[文档2] 自然语言处理是人工智能的重要应用

参数传递示意图

查询流程:
1. query = "人工智能技术" (用户输入)
2. vectorizer (已用documents训练好的)
3. doc_matrix (由vectorizer从documents生成)
4. top_n = 2 (用户指定)处理过程:
query → vectorizer.transform → 查询向量 → cosine_similarity计算 → 排序 → 返回top_n索引

实际应用场景

  1. 搜索引擎:输入搜索词,返回相关文档
  2. 问答系统:找到与问题最相似的已知答案
  3. 推荐系统:根据当前内容推荐相似文章
  4. 论文查重:查找与待查论文相似的已有文献

注意事项

  1. vectorizer必须提前训练:要使用fit_transform()而非仅transform()
  2. 矩阵一致性doc_matrix必须由同一个vectorizer生成
  3. 稀疏矩阵doc_matrix通常是scipy的稀疏矩阵格式
  4. 中文处理:需要先分词,建议在TfidfVectorizer中使用中文分词器

这个函数封装了TF-IDF向量化和余弦相似度计算的完整流程,是构建文本检索系统的核心组件。

http://www.xdnf.cn/news/2394.html

相关文章:

  • ts全局导入接口
  • 8.Excel:数据验证和下拉列表
  • C++入门小馆: STL 之queue和stack
  • 图像预处理-形态学变换
  • ESP32-S3 入门学习笔记(四):LED实验
  • shell脚本部署disu博客
  • java当中的类加载器
  • 大模型评测调研报告
  • docker compose -p的踩坑经验
  • terraform查看资源建的关联关系
  • PyQt Python列表操作全解析:从基础到实战
  • 北峰专业数字集群通信系统:构建消防指挥调度的智能化基石
  • 中国地区土地覆盖综合数据集
  • DigitalOcean推出Valkey托管缓存服务
  • Lua 第11部分 小插曲:出现频率最高的单词
  • 驼峰命名法(Camel Case)与匈牙利命名法(Hungarian Notation)详解
  • Web开发-JavaEE应用依赖项Log4j日志Shiro验证FastJson数据XStream格式
  • 3、Linux操作系统下,linux的技术手册使用(man)
  • flask返回文件的同时返回其他参数
  • 微服务即时通信系统(十二)---入口网关子服务
  • 北京工业大学25计专上岸经验分享
  • Spark-Streaming核心编程的总结
  • 全新升级:BRAV-7601-T003高性能无风扇AI边缘计算系统,助力智能未来!
  • 教育培训平台源码选型避坑指南:如何避免二次开发的高成本?
  • STM32 驱动 INA226 测量电流电压功率
  • 【MCP】从一个天气查询服务带你了解MCP
  • C++ 基础内容入门
  • Centos 7.6安装redis-6.2.6
  • 如何将 Apache Paimon 接入 Ambari?完整部署与验证指南
  • 14【模块学习】74HC595:使用学习