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://www.pswp.cn/diannao/91236.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象与面向过程、函数式编程

面向对象与面向过程、函数式编程 1. 面向过程编程&#xff08;Procedure-Oriented Programming&#xff09; 面向过程编程将程序视为一系列函数的集合&#xff0c;数据和操作数据的函数是分离的。在 Vue 3 中&#xff0c;这种风格通常表现为使用组合式 API&#xff08;Composit…

基于大数据的淘宝用户行为数据分析系统的设计与实现

开发环境开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…

视频人脸处理——人脸面部动作提取

文章目录基于openface实现的技术方案windows环境下使用1. 安装依赖软件2. 下载OpenFace代码3. 编译OpenFace4. 提取面部动作单元5.选择提取目标方案liunx环境下使用安装与配置使用 OpenFace 提取面部动作单元应用场景基于py-feat实现的方案1. 从HuggingFace下载模型并设置Detec…

【Docker基础】Dockerfile构建与运行流程完全指南:从原理到实践优化

目录 引言 1 docker build命令参数详解 1.1 命令概述 1.2 常用参数详解 1.2.1 -t, --tag 1.2.2 -f, --file 1.2.3 --build-arg 1.2.4 --no-cache 1.2.5 --pull 1.3 构建流程图解 2 构建上下文&#xff08;Context&#xff09;优化技巧 2.1 构建上下文定义 2.2 优化…

StarRocks Community Monthly Newsletter (Jun)

版本动态 v3.5.0 存算分离&#xff1a;支持生成列、主键表重建索引&#xff1b;大规模导入逻辑优化&#xff0c;降低小文件数量。 数据湖分析&#xff1a;Beta 支持 Iceberg 视图创建与修改&#xff1b;支持 Iceberg REST Catalog 嵌套命名空间&#xff1b; 性能提升与查询优…

HDMI接口 vs. DisplayPort接口:电竞玩家该如何选择更优?

在搭建游戏主机或电竞PC时&#xff0c;显示器接口的选择&#xff08;HDMI vs. DP&#xff09;会直接影响画质、刷新率和延迟表现。本文将从分辨率、刷新率、可变刷新率&#xff08;VRR&#xff09;、带宽、兼容性等角度对比&#xff0c;帮你选出最适合游戏的接口。1. 基础对比&…

论文笔记:Learning Cache Replacement with CACHEUS

2021 USENIX GitHub - sylab/cacheus: The design and algorithms used in Cacheus are described in this USENIX FAST21 paper and talk video: https://www.usenix.org/conference/fast21/presentation/rodriguez Learning Cache Replacement with CACHEUS 1 intro 基于…

极致cms多语言建站|设置主站默认语言与设置后台固定语言为中文

小记 很长时间没有建站了,最近有需求所以又回炉了&#xff0c;使用的极致cms 极致cms帮助文档 | 极致CMS帮助文档 由于很长时间没做&#xff0c;又遇到了之前碰到的两个问题&#xff0c;凭借经验和记忆还是处理掉了 1.当网站前台使用?len或?lzh来切换语言时&#xff0c;管…

Linux Vim 编辑器详解:从入门到进阶(含图示+插件推荐)

前言在 Linux 的世界中&#xff0c;Vim 是一款被无数开发者喜爱和追捧的强大文本编辑器。如果你厌倦了鼠标点来点去&#xff0c;不妨试试 Vim —— 一款专注于高效键盘操作的“终极利器”。本文将带你全面了解 Vim 的基本概念、模式切换、常用命令、窗口管理&#xff0c;并附上…

web前端渡一大师课 01 事件循环

一. 浏览器的进程模型 1.何为进程?程序运行需要有它自己专属的内存空间,可以把这块内存空间简单理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意 2.何为线程?有了进程后,就可以运行程序的代码了,运行代码的"人",称之为"线程&…

linux网络存储——freeNAS的安装配置

一、前言 freeNAS 是一款基于 FreeBSD 的开源网络存储操作系统&#xff0c;支持文件共享&#xff08;如 SMB/CIFS、NFS、AFP&#xff09;、数据备份、虚拟化存储等功能。同时FreeNAS开源优势明显&#xff0c;代码开放可自主定制&#xff0c;能满足多样需求。支持多种协议…

深度学习图像分类数据集—七种树叶识别分类

该数据集为图像分类数据集&#xff0c;适用于ResNet、VGG等卷积神经网络&#xff0c;SENet、CBAM等注意力机制相关算法&#xff0c;Vision Transformer等Transformer相关算法。 数据集信息介绍&#xff1a;七种树叶识别分类&#xff1a;[冬青叶, 杨树叶, 柳叶, 梧桐叶, 石楠叶,…

c++图形题练习程序

一.练习题背景 这题是作者再一家公司实习的时候&#xff0c;实习期间的一个考核题目&#xff0c;感觉还是比较有价值的。希望能给还在努力的学弟学妹们一些启发。 题目大致就是要求用继承和多态来实现圆、三角形和长方形的面积和周长求解。这步的大致思路是这样的&#xff0c;你…

【论文阅读 | PR 2024 |ITFuse:一种用于红外与可见光图像融合的交互式 Transformer】

论文阅读 | PR 2024 |ITFuse&#xff1a;一种用于红外与可见光图像融合的交互式 Transformer1.摘要&&引言2.方法2.1 问题表述2.2 框架概述2.3 特征交互模块2.3.1 共同特征提取分支&#xff08;IcI_{c}Ic​ 分支&#xff09;2.3.2 独特特征提取分支&#xff08;I1I_{1}I…

【Qt】 设计模式

在Qt应用程序开发中&#xff0c;结合数据库操作、通信、界面逻辑和显示等功能&#xff0c;以下是常用的设计模式及其典型应用场景&#xff1a; 一、MVC/MVVM&#xff08;模型-视图-控制器/视图模型&#xff09; 作用&#xff1a;分离数据&#xff08;模型&#xff09;、界面&am…

【HarmonyOS】ArkUI-X 跨平台框架入门详解(一)

【HarmonyOS】ArkUI-X 跨平台框架入门详解&#xff08;一&#xff09; 一、前言 1、ArkUI-X框架是什么&#xff1f; ArkUI-X是在ArkUI开发框架的基础上&#xff0c;进行扩展。支持多个OS平台&#xff0c;目前支持OpenHarmony、HarmonyOS、Android、 iOS。2、ArkUI-X目前的能力现…

开发者进化论:驾驭AI,开启软件工程新纪元

导语&#xff1a;人工智能&#xff08;AI&#xff09;的浪潮&#xff0c;特别是以大型语言模型&#xff08;LLM&#xff09;为代表的生成式AI&#xff0c;正以前所未有的力量&#xff0c;深刻地重塑着软件开发的传统疆域。我们正处在一个关键的转折点——产业的重心正从模型的“…

智慧水务平台,智慧水务,惠及民生,提升水务管理效率与服务质量

平升电子智慧水务平台支持海量物联网数据接入实现供水全流程信息化&#xff0c;深度逻辑运算自动控制实现供水调度智慧化&#xff0c;融入管网地理信息系统实现测点数据时空化&#xff0c;数字孪生实现水厂各工艺环节运行情况可视化&#xff0c;多角度统计分析实现水务运营管理…

【Unity基础】Unity中元素的层级排序

在Unity中&#xff0c;控制元素的层级排序&#xff08;渲染顺序&#xff09;是确保场景正确显示的关键。以下是常见的层级排序方式及其适用场景&#xff1a;1. 通过GameObject的层级顺序&#xff08;Sorting Layer/Order in Layer&#xff09; 适用对象&#xff1a;2D精灵&…

梁的振动特征函数分析2

问题7&#xff1a;左端固定、右端自由梁的振动分析 考虑梁的振动方程&#xff1a; uttKuxxxx0,0<x<l,K>0 u_{tt} K u_{xxxx} 0, \quad 0 < x < l, \quad K > 0 utt​Kuxxxx​0,0<x<l,K>0 边界条件&#xff1a; 左端固定&#xff08;位移和斜率为零…