文本匹配任务(上)

news2024/9/23 9:28:40

文本匹配任务

  • 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.coloradmin.cn/o/2057320.html

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

相关文章

DC-DC FB分压电阻计算 (MP1584 SY8205为例)

【本文发布于https://blog.csdn.net/Stack_/article/details/141371702,未经许可不得转载,转载须注明出处】 获取文件 【MP1584 MP2451 SY8205 SY8201 FB分压电阻计算】 一般DC-DC芯片对输出电压的调节,是以FB引脚达到0.6V或者0.8V为止的&…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第六篇 嵌入式GUI开发篇-第八十五章 Qt控制硬件

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【Java 数据结构】排序

排序 排序排序是什么排序相关概念稳定性比较排序非比较排序内部排序外部排序 常见比较排序冒泡排序基本思想代码实现 选择排序基本思想代码实现 插入排序基本思想代码实现 希尔排序基本思想代码实现 堆排序基本思想代码实现 快速排序基本思想代码实现优化其他实现寻找基准非递归…

如何使⽤组将⼀个文件拆分成多个文件 (LINQ)(C#)

文章目录 一、背景二、实现步骤三、完整示例四、总结 在日常开发过程中,我们可能会遇到需要将一个大型文件拆分成多个小文件的需求。例如,为了便于传输、处理或备份,我们可以将一个大的日志文件拆分成多个小文件。在C#中,我们可以…

Spring模块详解Ⅱ

目录 Spring Beans模块详解1. 什么是 Bean?2. Spring Bean的配置方式2.1 基于 XML 配置例子: 2.2 基于注解配置例子: 2.3 基于 Java 配置(JavaConfig)例子: 3. Bean 的生命周期生命周期回调的例子: 4. Bea…

数据采集-->kafka-->hdfs

数据采集到kafka flume: a1.sources r1 a1.channels c1a1.sources.r1.type TAILDIR a1.sources.r1.filegroups f1 a1.sources.r1.filegroups.f1 /opt/installs/flume1.9/job/a.log a1.sources.r1.positionFile /opt/installs/flume1.9/job/taildir-kafka.jsona1.channe…

react antd TreeSelect实现自定义标签

<ProFormTreeSelectlabel"接收对象"name"receiverObjects"colProps{{ span: 16 }}labelCol{{span: 6,}}wrapperCol{{span: 18,}}rules{[{ required: true }]}fieldProps{{showSearch: true,multiple: true,// autoClearSearchValue: true,filterTreeNod…

《通义千问AI落地—中》:前端实现

一、前言 本文源自微博客且已获授权,请尊重版权. 书接上文&#xff0c;上文中&#xff0c;我们介绍了通义千问AI落地的后端接口。那么&#xff0c;接下来我们将继续介绍前端如何调用接口以及最后的效果&#xff1b;首先看效果&#xff1a; 上述就是落地到本微博客以后的页面效果…

三角形最小路径和[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个三角形triangle&#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说&#xff0c;如果…

代码随想录 day 49 单调栈

第十章 单调栈part02 42. 接雨水 接雨水这道题目是 面试中特别高频的一道题&#xff0c;也是单调栈 应用的题目&#xff0c;大家好好做做。 建议是掌握 双指针 和单调栈&#xff0c;因为在面试中 写出单调栈可能 有点难度&#xff0c;但双指针思路更直接一些。 在时间紧张的情…

深入探讨 Nginx:安装、配置及优化指南

一、Nginx 概述及编译安装 1、概述 Nginx是一个高性能的开源HTTP和反向代理服务器&#xff0c;同时也是一个IMAP/POP3邮件代理服务器。它最初由Igor Sysoev于2002年开发&#xff0c;并于2004年首次发布。Nginx以其高并发性、低资源消耗和灵活的配置能力而受到广泛关注&#x…

卡码网KamaCoder 105. 有向图的完全可达性

题目来源&#xff1a;105. 有向图的完全可达性 C题解1&#xff1a; #include <iostream> #include <vector> #include <algorithm>using namespace std;int main(){int N, K;cin>>N>>K;// 如果边的数量不够&#xff0c;则一定不能到达所有点if…

使用Harbor搭建Docker私有仓库

一、harbor&#xff1a;开源的企业级的docker仓库软件&#xff0c;仓库就是保持镜像的。 1.仓库分两种&#xff1a;私有仓库&#xff1a;运维用的最多 公有仓库 2.harbor是有图形化的&#xff0c;页面UI展示的一个工具&#xff0c;操作直观 3.注意点&#xff1a;harbor都是由…

拖拽式报表设计器优点好 实现流程化办公就靠它!

当前&#xff0c;实现流程化办公是很多企业都想要实现的目标。利用低代码技术平台、拖拽式报表设计器的优势特点&#xff0c;可以为企业降低开发成本、提升办公效率、创造更多市场价值。那么&#xff0c;您知道拖拽式报表设计器的优点是什么吗&#xff1f;通过本文一起了解拖拽…

疫情期间我面试了13家企业软件测试岗位,一些面试题整理

项目的测试流程 拿到需求文档后&#xff0c;写测试用例 审核测试用例 等待开发包 部署测试环境 冒烟测试&#xff08;网页架构图&#xff09; 页面初始化测试&#xff08;查看数据库中的数据内容和页面展示的内容是否一致&#xff0c;并且是否按照某些顺序排列&#xff09…

JavaScript_9_练习:随机点名

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>练习&#xff1a;随机点名</title&g…

C语言中的预处理详解

1. 预定义符号 C语⾔设置了⼀些预定义符号&#xff0c;可以直接使⽤&#xff0c;预定义符号也是在预处理期间处理的。 举个例⼦&#xff1a; printf("file:%s line:%d\n", __FILE__, __LINE__); 2. #define 定义常量 基本语法&#xff1a; #define name stuff 举个例…

桥接模式详解

桥接模式 概念: 将抽象部分和实现部分分离, 使他们都可以独立的变化 概念很抽象, 难以理解, 我们举个例子 例子 设想三种不同品牌的汽车 大车 中车 小车 三种不同类型的引擎 纯电引擎 混动引擎 燃油引擎 如果我们把他们两两组合, 都继承同一个类的话,就会有9个类, 并且如果后…

vue的i18n国际化

一、介绍 i18n 是国际化和本地化&#xff08;Internationalization and Localization&#xff09;的缩写&#xff0c;其中 “i” 和 “n” 分别代表单词的首尾字母&#xff0c;而 “18” 代表中间的字母数。这个术语用于描述软件应用程序支持多种语言和地区设置的过程。 1、国…

调和级数详解

调和级数的来历 早在14世纪,尼克尔奥里斯姆已经证明调和级数发散,但知道的人不多。17世纪时,皮耶特罗曼戈里、约翰伯努利和雅各布伯努利完成了全部证明工作。 调和序列历来很受建筑师重视;这一点在巴洛克时期尤其明显。当时建筑师在建造教堂和宫殿时,运用调和序列为楼面…