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

20250715问答课题-基于BERT与混合检索问答系统

1. 引言

构建一个基于BERT与混合检索策略的智能问答系统,通过深度学习与传统检索技术的融合,解决了心法领域知识检索中的三个关键问题:(1)专业术语的语义理解不足;(2)问答匹配精度低;(3)检索结果多样性差。

2. 方法

2.1. 深度语义理解模块

BERT是预训练语言模型,基于 Transformer 架构,通过双向 Transformer 编码来学习文本的深层语义表示。BERT 的核心创新在于其双向训练方式,能够同时理解上下文的关系,常用于多项自然语言处理任务。

采用BERT最后四层隐藏状态的加权融合策略,将问题转换为向量表示。

  1. 选取了 BERT 模型的最后四层隐藏状态
  2. 定义了各层的权重( [0.15, 0.25, 0.35, 0.25]),并进行了归一化处理
  3. 提取了各层隐藏状态中 CLS 标记的向量表示
  4. 对各层的 CLS 向量进行加权求和

2.2. 混合检索算法

混合检索算法是结合符号检索(如关键词匹配、规则匹配)和语义检索(如向量匹配、深度学习模型)优势的检索技术,旨在平衡检索的准确性、召回率和语义理解能力。它解决了单一检索方式的局限性,如关键词检索无法理解语义,纯语义检索可能遗漏精确匹配结果;应用于信息检索、推荐系统、问答系统等领域。

2.2.1. 语义-关键词协同架构

既保证对 “显性关键词” 的精准匹配,又能理解 “隐性语义”(如同义词、上下文关联),最终提升检索的召回率和准确率,即不漏掉相关结果、返回更相关的结果。

语义检索通道:

  • 原理:基于 “隐性语义理解”,将查询和文档转换为向量,通过向量相似度匹配语义相关内容,不依赖字面关键词。
  • 优势:能理解同义词、上下文语义、跨语言检索。
  • 局限性:可能引入语义相似但无关的 “噪声结果”(如 “猫的饲养方法” 匹配 “狗的训练技巧”)、计算成本高于关键词检索。

关键词检索通道:

  • 原理:基于 “显性符号匹配”,聚焦查询中的核心关键词,通过精确匹配或模糊匹配定位相关内容。
  • 优势:速度快、可解释性强、对专有名词、人名、地名的检索精准。
  • 局限性:无法处理同义词、语义歧义、长句上下文关联(代词的指向)

2.2.2. 权重分配策略

2.3. 智能去重模块

2.3.1. 三重去重机制

内容哈希级去重:

  • 基于SimHash算法检测字面重复
  • 设置5词滑动窗口处理近义表达(如"如何静心"与"怎样静心")

语义级去重:

  • 93%相似度阈值基于实验确定:低于该值可能丢失合理变体,高于则产生冗余
  • 采用余弦相似度+曼哈顿距离的双重度量

动态阈值扩展:

  • 初始相似度阈值设为0.85
  • 当返回结果不足5条时,以0.02为步长逐步放宽至0.75
  • 确保在任何情况下都能返回适度数量的相关结果
2.3.2. 语义相似度判定

采用双阈值判定策略:

  1. 余弦相似度>0.93
  2. 曼哈顿距离<0.15

同时满足上述两点才判定为重复

3. 实验结果

创建虚拟环境并激活

python -m venv venv
venv\Scripts\activate

分步安装依赖

#升级pip工具
python -m pip install --upgrade pip
#安装核心依赖
pip install torch==2.0.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
pip install transformers==4.30.0 jieba==0.42.1 numpy==1.24.2 flask==2.3.2

准备

#确保BERT目录存在
if not exist BERT mkdir BERT
# 首次运行预加载
python -c "from transformers import BertModel; BertModel.from_pretrained('bert-base-chinese').save_pretrained('./BERT')"

运行

python xinfa_QA.py

4. 总结

本周完成了戴雄斌学长的中华心法问答系统的复现,对其中的一些方法实现基本了解,了解了多层BERT向量融合、混合检索算法、三层去重的机制等方法的实现。


文章转载自:
http://alaska.bdypl.cn
http://ambivalence.bdypl.cn
http://anapaest.bdypl.cn
http://being.bdypl.cn
http://aerometeorograph.bdypl.cn
http://athletic.bdypl.cn
http://alright.bdypl.cn
http://canonize.bdypl.cn
http://chink.bdypl.cn
http://canalboat.bdypl.cn
http://choli.bdypl.cn
http://ambages.bdypl.cn
http://australis.bdypl.cn
http://areopagus.bdypl.cn
http://capris.bdypl.cn
http://arms.bdypl.cn
http://awedly.bdypl.cn
http://assonance.bdypl.cn
http://calvados.bdypl.cn
http://barite.bdypl.cn
http://aspirator.bdypl.cn
http://antre.bdypl.cn
http://boondocks.bdypl.cn
http://aerodynamicist.bdypl.cn
http://automata.bdypl.cn
http://blintze.bdypl.cn
http://blanquette.bdypl.cn
http://cardiopulmonary.bdypl.cn
http://barrenwort.bdypl.cn
http://charmless.bdypl.cn
http://www.dtcms.com/a/280648.html

相关文章:

  • 电商缓存强一致方案:数据库锁保障
  • 设计模式开篇:设计模式的七大核心原则
  • kube-proxy 中 IPVS 与 iptables
  • PyTorch笔记7----------计算机视觉基础
  • OpenCV 伽马校正函数gammaCorrection()
  • MODIS_Landsat_Sentinel2星源分幅简述【20250715】
  • 视频编码中熵编码之基于上下文的变长编码(Huffman霍夫曼编码和指数哥伦布)
  • 【YOLOv11-目标检测】06-模型部署(C++)
  • 06_pt-table-sync 工具解决 MySQL 主从数据不一致
  • conda环境保存(后期再来整理)
  • etcd自动压缩清理
  • 2-Nodejs运行JS代码
  • iOS高级开发工程师面试——Swift
  • Fiddler 中文版抓包实战 构建标准化调试流程提升团队协作效率
  • echarts 绘制3D中国地图
  • React强大且灵活hooks库——ahooks入门实践之开发调试类hook(dev)详解
  • PostgreSQL 数据库中 ETL 操作的实战技巧
  • React源码6 三大核心模块之一:commit, finishConcurrentRender函数
  • 前端学习笔记:React.js中state和props的区别和联系
  • haproxy负载均衡
  • AntV G6 基础元素详解(React版)
  • 【PTA数据结构 | C语言版】创建哈夫曼树
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第二十一讲)
  • 【PDF识别改名】使用京东云OCR完成PDF图片识别改名,根据PDF图片内容批量改名详细步骤和解决方案
  • 同样是“跳转”,为何forward地址栏不变,redirect会变?
  • RNN、GRU 与 LSTM 计算成本深入对比
  • 基于光场相机的激光增材制造熔池温度场原位多眼监测​​
  • 【zynq7020】PL的“Hello LED”
  • FPGA高端图像ISP培训课程,提供工程源码+视频教程+FPGA开发板
  • Softhub软件下载站实战开发(十八):软件分类展示