文本匹配任务(上)

文本匹配任务

  • 1.文本匹配介绍
    • 1.1文本匹配定义
      • 1.1.1狭义定义
      • 1.1.2广义定义
    • 1.2文本匹配应用
      • 1.2.1问答对话
      • 1.2.1信息检索
  • 2.文本匹配--智能问答
    • 2.1基本思路
    • 2.2技术路线分类
      • 2.2.1按基础资源划分
      • 2.2.2 答案生成方式
      • 2.2.3 NLP技术
    • 2.3智能问答-Faq知识库问答
      • 2.3.1运行逻辑
      • 2.3.2核心关键点-相似度
  • 1.文本匹配算法
    • 1.1编辑距离
      • 1.1.1算法实现截图
      • 1.1.2优缺点
    • Jaccard
      • 优缺点
    • BM25算法
      • 优缺点
    • word2vec
      • 词向量相似度计算
      • 优缺点

1.文本匹配介绍

1.1文本匹配定义

1.1.1狭义定义

释义: 给定一组文本,判断其是否语义相似
示例:
1.判断语义是否相似

今天天气不错 match 今儿个天不错呀 √
今天天气不错 match 你今天吃饭了吗 ×

1.判断语义的相似度

今天天气不错 match 今儿个天不错呀 0.9
今天天气不错 match 这几天天气不错 0.75
今天天气不错 match 你今天吃饭了吗 0.1

1.1.2广义定义

释义: 给定一组文本,计算某种自定义的关联度;也就是说多段文本,想计算他们之间的关系,我们都可用文本匹配任务解决。

  1. Natural Language Inference
    两句话判断是否有关联、矛盾、中立。
    明天要下雨 vs 明天大晴天。

  2. Text Entailment
    给出一段文本,和一个假设,判断文本是否能支持或反驳这个假设。
    他是男的。假设:她身份证性别为女。

  3. 主题判断
    文章标题匹配内容等

1.2文本匹配应用

释义: 从文本的长度来讲,可以简单的概括为下面几类:

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

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

  3. 长文本 vs 长文本
    新闻、文章的关联推荐等

1.2.1问答对话

  1. 车载导航
  2. 手机助手
  3. 聊天机器人
  4. 智能音箱
  5. 智能客服

1.2.1信息检索

  1. 搜索引擎
  2. 微信、头条的相关文章推荐

2.文本匹配–智能问答

2.1基本思路

  1. 准备基础资源
    包括faq库,书籍文档,网页,知识图谱等等
  2. 构建问答系统
    对基础资源进行了加工处理,形成问答所需要索引和模型等
  3. 用户输入问题
  4. 问答系统给出答案

在这里插入图片描述

2.2技术路线分类

2.2.1按基础资源划分

1)基于faq知识库的问答(Frequently asked Questions )
2)基于文档/网页/书籍的问答
引申:当前基于生成式模型的RAG技术,当然并不完全是文本匹配了
3)基于图像/视频的问答
引申:当前生成式多模态大模型,是基于多模态技术
4)基于知识图谱的问答
5)基于表格的问答
4、5有点类似,都是基于结构化内容进行匹配问答
6)基于特定领域知识的问答
7)基于人工规则的问答

2.2.2 答案生成方式

  1. 检索式的问答
    答案原文或答案的多个片段存在于基础资源
    faq就是典型的这类

  2. 生成式的问答
    答案文本不存在于基础资源,由问答系统来生成答案
    RAG等

  3. 二者结合

2.2.3 NLP技术

依照NLP相关技术划分

1)单轮问答
2)多轮问答
3)多语种问答
4)事实性问答
5)开放性问答
6)多模态问答
7)选择型问答
8)抽取式问答
9)生成式问答

2.3智能问答-Faq知识库问答

目标: 让用户以自然语言描述自己的问题,算法进行faq库的检索,给出对应的答案。

常见概念定义:

  1. 问答对
    一个(或多个相似的)问题与它对应的答案
  2. faq库/知识库
    很多问答对组成的集合
  3. 标准问
    每组问答对中的问题,有多个时,为其中代表
  4. 相似问/扩展问
    问答对中,标准问之外的其他问题。即相同的答案对应着不同的提问方式
  5. 用户问
    用户输入的问题
  6. 知识加工
    人工编辑faq库的过程;比如:添加相似问、新的问答对

2.3.1运行逻辑

步骤如下:

1.对用户问进行预处理
2.使用处理后的问题,与faq库中问题计算相似度
3.按照相似度分值排序
4.返回最相似问题对应的答案

示例如下图
在这里插入图片描述
注意: 预处理包括:分词,去停用词,去标点、大小写转换,全半角转换、词性标注,句法分析等等

2.3.2核心关键点-相似度

理解: 语义相似度计算是faq问答的核心,一般简称文本匹配f(x, y)→Score;相似度分值合理,才可以找到正确的对应问题,计算分值的同时,也要考虑速度

引申:

  1. 排序之前可能有召回模块,为了减少排序的耗时。
  2. 如果最高相似度的问题,分值依然很低,一般会有兜底答案,不会强行回答。

注意:

  1. 如果相似度算法足够强,对知识加工的依赖就越低,算法越弱,对知识的加工要求就越高,这样才能准确匹配到知识。
  2. 上面说的是用户的问题,和知识库中的问题进行相似度匹配。有可以通过用户问题和知识库答案相匹配,跳过问题匹配这一步,根据具体的材料和实现技术来确定。因为实际情况中,答案不一定是统一的形态,可能是图片、链接、视频等。匹配问题是为了更好的拓展,即不管什么模态的答案,我都能快速调整标准问、拓展问即可

1.文本匹配算法

1.1编辑距离

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

举例:
在这里插入图片描述
计算编辑距离公式:
在这里插入图片描述
结论:

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

1.1.1算法实现截图

实现采用动态规划思想
在这里插入图片描述

1.1.2优缺点

优点:

  1. 可解释性强
  2. 跨语种(甚至对于非语言序列)有效
  3. 不需要训练模型

缺点:

  1. 字符之间没有语义相似度:我也一样。俺也一样。
  2. 受无关词/停用词影响大:我要办卡。我想办一张卡。
  3. 受语序影响大:今天天气不错;天气不错今天。
  4. 文本长度对速度影响很大。

Jaccard

原理: 根据两个集合中,不同元素所占的比例,来衡量两个样本之间的相似度。即:根据两个文本中,不同的字或词所占的比例,来衡量两个文本之间的相似度。

计算方式如下:
在这里插入图片描述
举例:

  1. 今天天气真不错
  2. 估计明天天气更好
    公共字数: 天、气
    总字数:今,天,气,真,不,错,估,计,明,更,好
    jaccard相似度: 2 / 11 = 0.18
    当然,除了通过字来计算,还可以通过词来计算。
    用词和用字,要具体场景,具体分析,测试后决定;名词、缩略词、文本长度都会影响

优缺点

优点:

  1. 语序不影响分数(词袋模型)
    示例:
    今天天气不错
    天气不错今天
  2. 实现简单,速度很快
  3. 可跨语种,无需训练等

缺点:

  1. 语序不影响分数
    示例:
    他打了我
    我打了他
  2. 字词之间没有相似度衡量
  3. 受无关词影响
  4. 非一致文本可能出现满分
    示例:
    他是不知道
    他不是不知道

适用场景: jaccard更适合-长文本;长文本中能够降低语序对分数的影响、以及非一致性文本的满分问题。

BM25算法

应用: 在搜索引擎框架中,用来做文档和搜索问题的匹配。在问答中,做文本匹配。

核心思想: 假如一个词在某类文本(假设为A类)中出现次数很多,而在其他类别文本(非A类)出现很少,那么这个词是A类文本的重要词(高权重词)。反之,如果一个词在出现在很多领域,则其对于任意类别的重要性都很差。

举例: 恒星 --> 天文; 你好 --> 在大多数文本中都有,但都不是关键词

本质: BM25是对TF·IDF的一种改进,优化其表示效果。TF·IDF存在的问题:统计的TF·IDF值与文本的长度有关。而BM25通过求平均的方式,改进了这个问题,降低了文本长度对统计值的影响

公式如下:
在这里插入图片描述
释义:

这个算法的具体计算方式,不做详细介绍。
qi 为问题中某词,fi为词频; k1, k2, b为可调节常数;dl为文档长度;avgdl为所有文档平均长度
这些参数和改动的意义在于控制文本长度对分值的影响

优缺点

优点:
1.通过使用TF·IDF弱化了无关词的影响,强化了重要词的影响,使得效果大幅提升
2.统计模型计算快,不需要迭代
3.词袋模型*、跨语种等
缺点:
1.依然没有考虑词与词之间的相似性
2.需要一定量的训练(统计)样本(faq库本身)
3.对于新增类别,需要重新计算统计模型
4.分值未归一化

word2vec

原理: 将每个词或字转换成同一向量空间内的一个向量;两个词如果语义相近,则在空间中的向量接近。

训练词向量:

1.基于窗口
2.基于语言模型
3.基于共现矩阵

优化要点:

1.层次softmax/Huffman树
2.负采样

词向量相似度计算

计算相似度:

1.将文本中的所有词的词向量相加取平均
2.文本 -> 句向量
3.SentenceVector = ∑(1-𝑛)𝑊𝑖 / n
4.句向量维度 = 词向量维度,不论文本长度
5.文本相似度 = 向量相似度 = 向量夹角余弦值
6.向量夹角为0,余弦值为1

计算公式:
在这里插入图片描述
工程优化:

如何加快相似度计算?
1.由公式出发,可以先将词向量的模求解出来
2.计算内积,可以通过将词向量矩阵转置;所有的词向量,原来是一排一个,现在变成一列一个;通过矩阵运算,就可以一次算出每一个列的相似度。因为矩阵相乘,是前一个矩阵的行乘后一个矩阵的列;输入只有一行。
上面就是工程上可以加快优化点。

优缺点

优点:
1.两个文本包含语义相似的词,会提高相似度
2.训练需要的数据简单(纯文本语料即可)
3.计算速度快,可以对知识库内问题预先计算向量
4.将文本转化为数字,使后续复杂模型成为可能
缺点:
1.词向量的效果决定句向量效果(语料数量、领域适配、分词结果、未登录词都会影响)
2.一词多意的情况难以处理。梨–苹果–华为。
3.受停用词和文本长度影响很大(是词袋模型)。
4.更换语种,甚至更换领域,都需要重新训练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50917.shtml

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

相关文章

QT中鼠标事件示例(包含点击,点击之后移动,释放的坐标获取)

QT中的鼠标事件 简介:结果展示:实例代码: 简介: 在Qt中,处理鼠标事件是图形用户界面(GUI)编程中的一个重要方面。Qt通过一系列的事件处理函数来支持鼠标事件的响应。这些事件包括鼠标点击&…

【容器安全系列Ⅲ】- 深入了解Capabilities的作用

在本系列的上一部分中,我们提到 Docker 容器尚未使用 time 命名空间。我们还探讨了容器在许多情况下如何以 root 用户身份运行。考虑到这两点,如果我们尝试更改容器内的日期和时间会发生什么? 为了测试这一点,我们先运行 docker r…

Golang | Leetcode Golang题解之第338题比特位计数

题目&#xff1a; 题解&#xff1a; func countBits(n int) []int {bits : make([]int, n1)for i : 1; i < n; i {bits[i] bits[i&(i-1)] 1}return bits }

Excel数字中间指定位置插入符号——以120120加*为例

设置单元格格式——自定义 更多阅读Excel数字中间指定位置插入符号_哔哩哔哩_bilibili

【Linux】2.Linux常见指令以及权限理解(1)

文章目录 1.Xshell的一些快捷键操作2.Linux指令2.1常用指令示例2.2常用指令选项2.2.1 ls指令2.2.2 cd/pwd/shoami指令2.2.3 touch指令2.2.4 mkdir指令2.2.5 rmdir指令2.2.6 rm指令 1.Xshell的一些快捷键操作 Xshell&#xff1a; altenter&#xff1a;Xshell自动全屏&#xff0c…

计算机Java项目|基于SpringBoot的精简博客系统的设计与实现

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

【目标检测】CFINet:通过由粗到精的区域提议网络和模仿学习进行小目标检测

《Small Object Detection via Coarse-to-fine Proposal Generation and Imitation Learning》 通过由粗到精的区域提议网络和模仿学习进行小目标检测 期刊&#xff1a;ICCV 2023 原文&#xff1a;https://arxiv.org/abs/2308.09534 源码&#xff1a;https://github.com/shauny…

Linux之HTTP服务器的构建

欢迎诸位来阅读在下的博文~ 在这里&#xff0c;在下会不定期发表一些浅薄的知识和经验&#xff0c;望诸位能与在下多多交流&#xff0c;共同努力! 江山如画&#xff0c;客心如若&#xff0c;欢迎到访&#xff0c;一展风采 文章目录 参考环境参考书籍一、HTTP的工作原理1. 建立连…

Windows 11上RTX 4090深度学习与大模型微调环境安装指南

【本文原作者&#xff1a;擎创科技资深产品专家 布博士】 在安装深度学习及大模型微调环境时&#xff0c;经历了多次反复操作&#xff08;如CUDA、cuDNN、PyTorch的安装与卸载&#xff09;。为了避免走弯路&#xff0c;总结了以下步骤&#xff1a; 步骤 1&#xff1a;显卡驱动…

11-sentinel利用nacos作持久化

本文介绍sentinel配置数据的持久化方法。由于sentinel官方并没有提供持久化功能&#xff0c;大家在测试过程中也能发现sentinel服务重启后&#xff0c;原来配置的数据就丢了&#xff0c;本文就是来处理这一问题的。 做好心理准备&#xff0c;我们要修改sentinel的源代码&#…

Qt消息对话框的实现

Widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this -> setWindowIcon(QIcon(":/picture/hp.jpg"));//设置窗口图标this -> setW…

Leetcode JAVA刷刷站(57)插入区间

一、题目概述 二、思路方向 为了解决这个问题&#xff0c;我们可以遍历给定的区间列表 intervals&#xff0c;并同时构建一个新的列表来存储最终的合并结果。遍历过程中&#xff0c;我们检查当前区间是否与 newInterval 重叠或相邻&#xff0c;并根据需要进行合并。如果不重叠…

2024新生训练营 8.20 做题活动

A 输出题罢了不讲直接看代码 #inlclude<stdio.h> int main() {printf("Eclipse First&#xff0c;the Rest Nowhere.");return 0; }B 首先要知道的是凡是大于1的整数要么是质数要么是合数&#xff0c;而1既不是质数也不是合数&#xff0c;题目问从0到n所有质数…

微信小程序--30(网络数据请求)

1.小程序中网络数据请求的限制 只能请求HTTPS类型的接口必须将接口的域名添加到信任列表中 2.配置request合法域名 需求描述 希望请求某个域名下的接口 步骤 登录小程序管理后台→开发→开发设置→服务器域名→修改request合法域名 练习 注意事项 域…

系统架构:分而治之

系统架构&#xff1a;分而治之 引言“分而治之”在架构中的应用模块化设计分层化架构微服务架构 分而治之的优势降低复杂性提高灵活性和可扩展性增强可维护性促进团队协作 分而治之的劣势复杂性转移性能开销开发和运维的复杂性数据一致性挑战 结论 引言 “分而治之”是一种分析…

wo是如何克服编程学习中的挫折感的?

你是如何克服编程学习中的挫折感的&#xff1f; 编程学习之路上&#xff0c;挫折感就像一道道难以逾越的高墙&#xff0c;让许多人望而却步。然而&#xff0c;真正的编程高手都曾在这条路上跌倒过、迷茫过&#xff0c;却最终找到了突破的方法。你是如何在Bug的迷宫中找到出口的…

QT基础知识4

思维导图 项目文件里面要加texttospeech模块 widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime>//时间类 #include <QTextToSpeech>//语音播报类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass…

C:每日一练:单身狗(2.0版本)

前言&#xff1a; 今天在刷题的时候突然看到一道题&#xff0c;疑似一位故题。仔细一看&#xff0c;欸&#xff01;这不是就是单身狗的升级版吗&#xff1f;我想那必须再安排一篇&#xff0c;不过由于本篇文章与上一篇单身狗文章所涉及的知识点基本相同&#xff0c;所以还请大…

流媒体服务器二:2.RTMP协议学习

RTMP协议详解 一.总体介绍 RTMP协议是应⽤层协议&#xff0c;是要靠底层可靠的传输层协议&#xff08;通常是TCP&#xff09;来保证信息传输的可靠性的。在 基于传输层协议的链接建⽴完成后&#xff0c;RTMP协议也要客户端和服务器通过“握⼿”来建⽴基于传输层链接之 上的RT…

滴滴开源新项目Unify:聚焦Flutter与原生通信难题,助力跨端应用落地

引言 在移动开发领域&#xff0c;移动跨端技术因其提效收益&#xff0c;逐渐成为业界趋势之一。Flutter 作为近年来热门的跨端技术&#xff0c;以高性能、自渲染、泛跨端著称&#xff0c;得到广泛应用。在滴滴国际化业务中&#xff0c;我们大量应用 Flutter。目前已在滴滴国际化…