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

文本匹配任务

狭义上讲

给定一组文本,判断其是否语义相似

比如

今天天气不错 match 今儿个天不错呀 √

今天天气不错 match 你的代码有bug ×

又或者以分值形式给出相似度

今天天气不错 match 今儿个天气不错呀 0.9

今天天气不错 match 这几天天气不错 0.7

今天天气不错 match 你的代码有bug 0.1

广义上讲

给定一组文本,计算某种自定义的关联度

Natural Language inference

两句话判断是否有关联,矛盾,中立

明天要下雨vs 明天大晴天

Text Entailment

给出一段文本,和一个假设,判断文本是否能支持或反驳这个假设

主题判断

文章标题匹配内容等

文本匹配的应用

问答对话:

车载导航,聊天机器人,手机助手,智能音箱,智能客服

信息检索:

在浏览器能搜到与自己输入的文本相关的内容

短文本vs短文本 知识库问答,聊天机器人等

短文本vs长文本 文章检索,广告推荐等

长文本vs长文本 新闻,文章的关联推荐等

以智能问答中的智能客服为例,说一下文本匹配在其中的应用

基础资源:

包括faq库,书籍文档,网页,知识图谱等

问答系统:

对基础资源进行了加工处理,形成问答所需要索引和模型等

用户输入问题

问答系统给出答案

依照基础资源划分:

1. 基于faq知识库的问答

2. 基于文档/网页的书籍的问答

3. 基于图像/视频的问答

4. 基于知识图谱的问答

5. 基于表格的问答

6. 基于特定领域知识的问答

7. 基于人工规则的问答

依照答案产出方式划分

1.检索式的问答

答案原文或答案的多个片段存在于基础资源中

2.生成式的问答

答案文本不存在于基础资源,由问答系统来生成答案

3.二者结合

依照nlp相关技术划分

1. 单轮问答 每次用户提一个问题,都当作一个新的问题

2. 多轮问答 这个就是允许用户进行追问

3. 多语种问答

4. 事实性问答 比如 问姚明身高多少 就是一个定论

5. 开放性问答 比如 问姚明的地位 这个就是各有各的分析

6. 多模态问答 比如在问答场景,用户问你一张照片

7. 选择性问答 多个选一个的问答方式

8. 抽取式问答

9. 生成式问答

智能客服的价值

相比于人工客服的优势:

毫秒级响应

全年24小时在线

精通所有业务知识

只需培养管理员

保存所有业务回答数据

回复内容标准

Faq知识库问答

比如我的货还没到 ,那么我是找售后服务,还是配送查询,还是订单查询,都有道理,那么用户的体验感极差。

列表展示所有常见问题,用户需要自己找到对应的问题,对用户不友好

算法检索就可以避免这样让用户查找,而是根据用户提出query,直接给出答案

那么就让用户以自然语言描述自己的问题,算法进行fap库的检索,给出对应的答案

然后接下来先介绍一下相关名词:

问答对 :

一个(或多个相似的)问题与它对应的答案

faq库/知识库

很多问答对组成的集合

标准问

每组问答对中的问题,有多个时,为其中代表

相似问/扩展问

问答对中,标准问之外的其他问题

用户问

用户输入的问题

知识加工

人工编辑faq库的过程,相似问生成,标准问聚类,意图层级构建等

Faq库示例

运行逻辑:

1. 对用户问进行预处理

2. 使用处理后的问题,与faq库中问题计算相似度

3. 按照相似度分值排序

4. 返回最相似问题对应的答案

算法核心:

语义相似度计算是faq问答的核心

一般简称文本匹配 f(x,y) -> score

相似度分值合理,才可以找到正确的对应问题

计算分值的同时,也要考虑速度

那么有个问题就是,我们可不可以不和Faq库中问题Q匹配,而是直接和答案A匹配呢?

理论上是可以的,但是答案不一定是文本,而是视频,又或者图片,所以一般不会与答案匹配

文本匹配算法-编辑距离

两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符

示例如下

插入 估计两个字 2次操作

把 今替换明,真换更,不换好 3次操作

把错给删了 1此操作

一共6次操作

similarity = 1 - EDab/(max(La,Lb))

在上面中,EDab 就是操作次数 所以是 EDab = 6

max(La,Lb) 则是两个句子最长的那一个 所以 max(La,Lb) = 7

所以经过计算 similarity = 1- 6/max(7,8) = 0.25

两个字符串完全一致,编辑距离 = 0,相似度 = 1

两个字符串完全不一致,编辑距离 = 较长者长度, 相似度 = 0

文本编辑距离的代码怎么实现

文本匹配算法-编辑距离-优缺分析

优点:

1. 可解释性强 公式较为简单,也比较符合直觉,因为对于非专业人士,相似度比较,就是看有多少个字不一样

2. 跨语种(甚至对于非语言序列)有效 比如 DNA相似度

3. 不需要训练模型

缺点:

1. 字符之间没有语义相似度

我没钱 俺没钱 0.66

2. 受无关词/停用词影响大

我要办卡 你好我需要办卡 者两句话就是表明一个意思,但是根据计算才0.5

3. 受语序影响大

今天天气不错 天气不错今天 0.33

4. 文本长度对速度影响很大

文本匹配算法- Jaccard相似度

通用表述: 根据两个集合,不同元素所占的比例,来衡量两个样本之间的相似度

用于文本匹配:根据两个文本中,不同的字或词所占的比例,来衡量两个文本之间的相似度

Jaccard相似度: J(A,B) = |A∩B| / |A∪B| 文本元素交集/文本元素的并集

今天天气真不错 公共字: 天,气

估计明天天气更好 总字数: (7-1)+(8-1)-2 =11

jaccard相似度: 2/11 = 0.18

也可以以词为单位计算

代码展示

如果输入字符串,则得到基于字的jaccard相似度

如果输入词的列表,则得到基于词的jaccard相似度

该用词还是该用字?看场景!

比如 我去 农行 取钱

我去 农业银行 取钱

这个情况就是应该用字了

文本匹配算法 - Jaccard距离 - 优缺分析

优点:

1. 语序不影响分数(词袋模型)

今天天气不错 天气今天不错 1

2. 实现简单,速度很快

3. 可跨语种,无序训练

缺点:

1.语序不影响分数

他打了我 我打了他 1 这个也是1,但是很明显这俩不是一个意思

2.字词之间没有相似度衡量

3.受无关此影响

4. 非一致文本可能出现满分

他是不知道 他不是不知道 这个也是1,但是表达的意思不同

文本匹配算法 -BM25算法(加强版TFIDF)

常用在搜索引擎框架中,用来做文档和搜索问题的匹配,同样也可以用在问答中,作文本匹配

核心思想:

假如一个词在某类文本(假设为A类)中出现次数很多,而在其他类别文本(非A类)出现很少,那么这个词是A类文本的重要词(高权重词)

恒星,黑洞 ---> 天文

反之,如果一个词在出现在很多领域,则其对于任意类别的重要性都很差

BM25是对TFIDF的一种改进,优化其表示效果

BM25公式: Score(Q,d) = 求和WiR(qi,d)

qi 为问题中某词,fi为词频k1,k2 ,b为可调节常数dl为文档长度

avgdl 为所以文档平均长度

这些参数和改动的意义在于控制文本长度对分值的影响

BM25记住思想即可

文本匹配算法-BM25算法-优缺分析

优点:

1.通过使用TF-IDF弱化了无关词的影响,强化了重要词的影响,使得效果大幅提升

2.统计模型计算块,不需要迭代

3.词袋模型,跨语种等

缺点:

1.依然没有考虑词与词之间的相似性

2. 需要一定的训练样本(faq库本身)

3.对于新增类别,需要重新计算统计模型

4.分值未归一化

文本匹配算法 -word2vec

如何用于文本匹配?

将文本中的所有词的词向量相加取平均这里可以用TFIDF结合,可以体现出句子中重要词特征

文本->句向量

句向量维度 = 词向量维度,不论文本长度

文本相似度 = 向量相似度 = 向量夹角余弦值

向量夹角为0,余弦值为1

文本匹配算法 - word2vec - 优缺分析

优点:

1.两个文本包含语义相似的词,会提高相似度

2.训练需要的数据简单(纯文本语料即可)

3.计算速度快,可以对知识库内问题预先计算向量我们可以先把知识库问题转换为向量,然后对于用户提出的问题转化为向量后,计算相似度

4.将文本转化为数字,使后续复杂模型称为可能

缺点:

1.词向量的效果决定句向量效果

2.一词多意的情况难以处理 梨-苹果-华为

3.受停用词和文本长度影响很大 像你好这种词

4.更换语种,甚至更换领域,都需要重新训练

文本匹配-深度学习

文本匹配任务上有两种主要方式:

1.表示型

这里可以理解为同样的Encode对两句话进行向量转化,然后送入匹配层计算相似度

表示型文本的训练方式

对于两个匹配的样本预期输出分值为1

对于两个匹配的样本预期输出分值为0

本质上相当于2分类任务

另外还有其他表示型

第二种训练方式,称为Triplet loss

训练目标:

使具有相同标签的样本在embedding空间尽量接近

使具有不同标签的样本的embedding空间尽量远离

保证在输入的3个样本中,有两个是相似的,一个不相似的

Triplet loss(还用于人脸识别模型的训练)

a: anchor 原点

p: positive 与a同一类别的样本

n: negative 与a不同类别的样本

L = max(d(a,p)-d(a,n)+margin,0)

margin的作用, 假如 d(a,p) =d(a,n) 那么loss=0,那么模型不会训练,那么当d(a,p)较大的时候,Loss等于0,模型不训练那显然不合理,margin会调节的作用

在人脸识别中的应用

2.交互型

这个交互性,就是把S1和S2一起送到模型产生交互,这俩是必须的,而上面表示型则是可以S1,S2,可以单独计算。

对比- 交互性vs表示型

表示型

优点: 训练好的模型可以对知识库内的问题计算向量,在实际查找过程中,只对输入文本做一次向量化

缺点: 在向量化的过程中不知道文本重点

交互性:

优点: 通过对比把握句子重点

缺点: 每次计算需要两个输入

对比学习

找到一种自监督方法训练得到一种好EnCoder

海量向量查找

假如我们有1亿以上的候选向量

(表示型)

对于一个给定向量,希望查找距离最接近的

问答,搜索,推荐等场景均会使用

我们会把海量向量存储到数据库,数据库会为向量设计一套索引,在你输入一个向量后,它会给你找出相似的

KD树与向量索引的原理相似,那么KD树是怎么做到不遍历所有向量能找到一个相似的

空间切割

假设有一点(3,5) 正常来讲它会跟所有的点都计算一遍,然后找到最近的,经过空间切割后,(3,5),,在(7,2)的时候,根据(7,2)的切割线x=7,可以知道在(7,2)的左侧,找到(5,4)同时根据的切割知道在y=4的上面,那么我们只需要算(4,7),(5,4),(2,3) 就行因为到(7,2)以及到x=7切割平面已经超过已知点的距离

那么怎么选中间点和切割平面?

通过计算中位数和方差,为什么先把(7,2)作为顶点,因为计算6个点的中位数,选(5,4)和(7,2)都行,切割平面看方差

http://www.jsqmd.com/news/779637/

相关文章:

  • 【深度解析】自主机器学习工程师 Neo:从 Agent 工作流到聊天内容审核 Pipeline 落地
  • UAE与Prism Hypothesis:统一语义与像素的隐空间方法
  • 从零搭建私有化AI智能体平台:基于Coze-Studio的架构解析与实战部署
  • 马拦过河卒
  • 离网型风力发电机储能系统充放电控制技术
  • 四川盛世钢联国际贸易有限公司型钢频道 -H型钢|工字钢|槽钢|角钢 - 四川盛世钢联营销中心
  • 基于MCP协议为AI智能体构建可插拔技能库:Semgrep与Comby实战
  • 洛谷刷题自动化提效工具:用户脚本与本地服务集成实践
  • 我花一周测了10个降AI工具,这个是性价比最高的降AI软件! - 我要发一区
  • 视频素材太多找不到?分镜标签+语义检索,让素材管理效率提升10倍
  • Cortex-A720性能监控与嵌入式跟踪技术解析
  • Java 集合遍历时删除元素的安全写法是什么?
  • 【LSF集群搭建】9-配置远程桌面服务
  • 低频信号处理在生成式AI中的关键作用与UAE架构实践
  • 跟随教程使用Taotoken快速创建一个AI对话机器人原型
  • 【技术干货】OpenManus 智能体框架深度解析:从 Agent Loop 到本地可控 AI 工作流实战
  • OpenAI 发布三款新语音模型;Plaud 获头部大厂投资,估值达 20 亿美元;阶跃星辰将完成近 25 亿美元融资丨日报
  • 角色扮演大语言模型:从核心原理到多智能体架构的实践指南
  • 嵌入式RTOS实战:从OpenFelix内核解析到物联网数据采集系统设计
  • 海思HI3516 MIPI屏幕时序参数详解:如何用计算器搞定HBP、VFP与像素时钟
  • kagi-skills:聚合Kagi AI API的Windows桌面工具集,提升工作效率
  • HPC集群构架手册:计算节点的搭建密码
  • ARM7TDMI调试接口架构与实战技巧
  • 镇江电加热器厂家哪家好?2026年05月选购指南来袭,电加热器/翅片加热管/风道式电加热器,电加热器源头厂家有哪些 - 品牌推荐师
  • CBJQ_Unlock使用教程
  • JAVA-实战8 Redis实战项目—雷神点评(10)附近商铺
  • 内存标准演进:如何平衡性能、功耗与尺寸,塑造消费电子体验
  • 基于注意力机制的时间序列异常检测实践与优化
  • 静态分析工具smellcheck:自动检测代码坏味道,提升软件质量
  • Cursor文档自动生成钩子:基于事件驱动实现代码与文档同步