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

NLP 文本匹配任务核心梳理

定义

  • 本质上是做了意图的识别
    判断两个内容的含义(包括相似、矛盾、支持度等)
  • 侠义
    • 给定一组文本,判断语义是否相似
    • Yi 分值形式给出相似度
  • 广义
    • 给定一组文本,计算某种自定义的关联度
    • Text Entailment
      判断文本是否能支持或反驳这个假设
    • 主题判断

神经网络方法

  • 表示型文本匹配
    • 特点
      • 只需要对用户新输入的问题送入模型,运行一次
        实际查找中,对输入文本做一次向量化
      • 运行结果与知识库中的标准问向量分别计算 loss
      • 最后排序,找到最 match 的结果
      • 更适用智能问答
      • 用于需要分别看到两句话的场景
        计算两句话相似性
      • 类似于二分类任务
    • 方式
      • 共享encoder 参数
        • 即孪生网络
        • encoder 层
          两句话分别输入encoder(LSTM、CNN+pool、bert) 得到句向量
        • matching layer 层
          • 对两个句向量进行预期分值计算
            相同文本用相同参数,余弦值夹角为0,值为1,欧式距离为0
          • 可以完全没有可训练参数
            在评估阶段进行 cosine loss 或 欧式距离等向量分值计算
      • triplet loss
        在这里插入图片描述
        • 目标
          • 使具有相同标签的样本在 embedding 空间尽量接近
          • 使具有不同标签的样本在 embedding 空间尽量远离
        • 方式
          三元组<a, p, n>
          - a 原点
          - p 与a 同一类别的样本
          - n 与a 不同类别的样本
        • 在cv也用于人脸识别模型训练
  • 交互型文本匹配
    • 特点
      • 用户输入新问题,与知识库中的n 个标准问分别拼接送入模型,计算 n 次
        对比把握句子重点
      • 更适合问题与答案的匹配场景
        因为答案长度与问题长度差异,答案与问题是两个概念的东西,共用 encoder 参数就不合适,可能需要补太多 padding
      • 用于需要同时看到两句话的场景
        用于计算两句话相关性
    • 方式
      • 每次计算需要两个输入
      • 将两个句子拼接成长文本
        在模型中判断两句话关联性,输出关联性得分

非神经网络算法

  • Jaccard 相似度
    核心逻辑:文本中元素的交集/文本中元素的并集
    在这里插入图片描述

  • word2vec
    核心逻辑:从词向量相似度得到句子相似度,将文本中所有的词的词向量相加取平均

    • 获取句子向量之间 余弦值
    • 两个句子的相似度,等同于两个向量的余弦距离
      在这里插入图片描述
  • BM25算法
    对 TF-IDF 的改进
    在这里插入图片描述

  • 编辑距离
    动态规划算法

def edit_distance(s1, s2):m, n = len(s1), len(s2)dp = [[0] * (n + 1) for _ in range(m + 1)]for i in range(m + 1):dp[i][0] = ifor j in range(n + 1):dp[0][j] = jfor i in range(1, m + 1):for j in range(1, n + 1):if s1[i - 1] == s2[j - 1]:dp[i][j] = dp[i - 1][j - 1]else:dp[i][j] = min(dp[i - 1][j - 1], dp[i - 1][j], dp[i][j - 1]) + 1return dp[m][n]
  • 优点
    • 可解释性强
    • 跨语种
    • 不需要训练模型
  • 缺点
    • 字符之间没有语义相似度
    • 受无关词、停用词影响大
    • 受语义影响大
    • 文本长度对速度影响很搭
  • 由一个字符串转成量一个所需的最少编辑操作次数
    核心是比较两个序列相似性

应用

  • 应用方向
    • 短文本 vs 短文本
      • 知识库问答
        • 不使用文本分类的原因
          • 拓展性不强
            新增问题时需要重新训模型
          • 相同问题的有效性
            会出现无法命中相同问题的情况
        • 可以使用GPT模型
          RAG 思路:检索增强
      • 聊天机器人
    • 短文本 vs 长文本
      • 文章检索
      • 广告推荐
    • 长文本 vs 长文本
      新闻、文章的关联推荐
  • 实际应用
    • 信息检索
      搜索引擎
    • nlp 最成熟的落地任务:智能问答
      • 落地形式
        • 人机对话
        • 智能客服
        • 智能音箱
        • 聊天机器人
        • 车载导航
        • 手机助手
      • 基础资源
        • faq 库
          • 多个问答对组成的集合
            一个标准问对应一个标准审核好的标准答案
          • 运行逻辑
            • 用户提问
            • 提问内容预处理
              根据算法决定处理方式
            • 找到最相似的问题
            • 输出答案
          • 核心
            • 进行语义相似度计算
              即 文本匹配
        • 书籍文档
        • 网页
        • 知识图谱
        • 表格
        • 特定领域知识
        • 人工规则
      • 答案产出方式
        • 检索式
        • 生成式
        • 检索+生成
      • 相关技术划分
        • 单轮问答
        • 多轮问答
        • 多语种问答
        • 事实性问答
        • 开方性问答
        • 多模态问答
          问题是文字答案是语音或视频
        • 选择性问答
        • 抽取式问答
        • 生成式问答
  • 落地应用
    • 信息检索
    • 知识库问答
      Faq 知识库

相关文章:

NLP 文本匹配任务核心梳理

定义 本质上是做了意图的识别 判断两个内容的含义&#xff08;包括相似、矛盾、支持度等&#xff09;侠义 给定一组文本&#xff0c;判断语义是否相似Yi 分值形式给出相似度 广义 给定一组文本&#xff0c;计算某种自定义的关联度Text Entailment 判断文本是否能支持或反驳这个…...

FastAPI 的隐藏宝石:自动生成 TypeScript 客户端

在现代 Web 开发中&#xff0c;前后端分离已成为标准做法。这种架构允许前端和后端独立开发和扩展&#xff0c;但同时也带来了如何高效交互的问题。FastAPI&#xff0c;作为一个新兴的 Python Web 框架&#xff0c;提供了一个优雅的解决方案&#xff1a;自动生成客户端代码。本…...

了解云容器实例云容器实例(Cloud Container Instance)

1.什么是云容器实例&#xff1f; 云容器实例&#xff08;Cloud Container Instance&#xff0c; CCI&#xff09;服务提供 Serverless Container&#xff08;无服务器容器&#xff09;引擎&#xff0c;让您无需创建和管理服务器集群即可直接运行容器。 Serverless是一种架构理念…...

OpenStack Yoga版安装笔记(十三)neutron安装

1、官方文档 OpenStack Installation Guidehttps://docs.openstack.org/install-guide/ 本次安装是在Ubuntu 22.04上进行&#xff0c;基本按照OpenStack Installation Guide顺序执行&#xff0c;主要内容包括&#xff1a; 环境安装 &#xff08;已完成&#xff09;OpenStack…...

[系列]参数估计与贝叶斯推断

系列 点估计极大似然估计贝叶斯估计&#xff08;统计学&#xff09;——最小均方估计和最大后验概率估计贝叶斯估计&#xff08;模式识别&#xff09;线性最小均方估计最小二乘估计极大似然估计&贝叶斯估计极大似然估计&最大后验概率估计线性最小均方估计&最小二乘…...

【Pyside】pycharm2024配置conda虚拟环境

知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能&#xff0c;以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…...

【RabbitMQ 项目】服务端:数据管理模块之消息队列管理

文章目录 一.编写思路二.代码实践 一.编写思路 定义消息队列 名字是否持久化 定义队列持久化类(持久化到 sqlite3) 构造函数(只能成功&#xff0c;不能失败) 如果数据库(文件)不存在则创建打开数据库打开 msg_queue_table 数据库表 插入队列移除队列将数据库中的队列恢复到内存…...

SDKMAN!软件开发工具包管理器

认识一下SDKMAN!(The Software Development Kit Manager)是您在Unix系统上轻松管理多个软件开发工具包的可靠伴侣。想象一下&#xff0c;有不同版本的SDK&#xff0c;需要一种无感知的方式在它们之间切换。SDKMAN拥有易于使用的命令行界面&#xff08;CLI&#xff09;和API。其…...

《使用 LangChain 进行大模型应用开发》学习笔记(四)

前言 本文是 Harrison Chase &#xff08;LangChain 创建者&#xff09;和吴恩达&#xff08;Andrew Ng&#xff09;的视频课程《LangChain for LLM Application Development》&#xff08;使用 LangChain 进行大模型应用开发&#xff09;的学习笔记。由于原课程为全英文视频课…...

gbase8s数据库常见的索引扫描方式

1 顺序扫描&#xff08;Sequential scan&#xff09;&#xff1a;数据库服务器按照物理顺序读取表中的所有记录。 常发生在表上无索引或者数据量很少或者一些无法使用索引的sql语句中 2 索引扫描&#xff08;Index scan&#xff09;&#xff1a;数据库服务器读取索引页&#…...

边缘智能-大模型架构初探

R2Cloud接口 机器人注册 请求和应答 注册是一个简单的 HTTP 接口&#xff0c;根据机器人/用户信息注册&#xff0c;创建一个新机器人。 请求 URL URLhttp://ip/robot/regTypePOSTHTTP Version1.1Content-Typeapplication/json 请求参数 Param含义Rule是否必须缺省roboti…...

《python语言程序设计》2018版第8章18题几何circle2D类(上部)

一、利用第7章的内容来做前5个点 第一章之1--从各种角度来测量第一章之2--各种结果第二章之1--建立了针对比对点在圆内的几段第二章之2--利用建立的对比代码&#xff0c;得出的第2点位置 第一章之1–从各种角度来测量 class Circle2D:def __init__(self, x, y, radius):self._…...

nginx upstream转发连接错误情况研究

本次测试用到3台服务器&#xff1a; 192.168.10.115&#xff1a;转发服务器A 192.168.10.209&#xff1a;upstream下服务器1 192.168.10.210&#xff1a;upstream下服务器2 1台客户端&#xff1a;192.168.10.112 服务器A中nginx主要配置如下&#xff1a; log_format main…...

alias 后门从入门到应急响应

目录 1. alias 后门介绍 2. alias 后门注入方式 2.1 方式一(以函数的方式执行) 2.2 方式二(执行python脚本) 3.应急响应 3.1 查看所有连接 3.2 通过PID查看异常连接的进程&#xff0c;以及该进程正在执行的命令行命令 3.3 查看别名 3.4 其他情况 3.5 那么检查这些…...

【远程调用PythonAPI-flask】

文章目录 前言一、Pycharm创建flask项目1.创建虚拟环境2.创建flask项目 二、远程调用PythonAPI——SpringBoot项目集成1.修改PyCharm的host配置2.防火墙设置3.SpringBoot远程调用PythonAPI 前言 解决Pycharm运行Flask指定ip、端口更改无效的问题 首先先创建一个新的flask项目&…...

[今日Arxiv] 思维迭代:利用内心对话进行自主大型语言模型推理

思维迭代&#xff1a;利用内心对话进行自主大型语言模型推理 Iteration of Thought: Leveraging Inner Dialogue for Autonomous Large Language Model Reasoning URL&#xff1a;https://arxiv.org/abs/2409.12618 注&#xff1a;翻译可能存在误差&#xff0c;详细内容建议…...

glTF格式:WebGL应用的3D资产优化解决方案

摘要 glTF作为一种高效的3D资产格式&#xff0c;为WebGL、OpenGL ES和OpenGL运行时的应用提供了强有力的支持。它不仅简化了3D模型的传输与加载流程&#xff0c;还通过优化资产大小&#xff0c;使得打包、解包更加便捷。本文将深入探讨glTF格式的优势&#xff0c;并提供实用的代…...

Unity3D入门(一) : 第一个Unity3D项目,实现矩形自动旋转,并导出到Android运行

1. Unity3D介绍 Unity3D是虚拟现实行业中&#xff0c;使用率较高的一款软件。 它有着强大的功能&#xff0c;是让玩家轻松创建三维视频游戏、建筑可视化、实时三维动画等互动内容的多平台、综合型 虚拟现实开发工具。是一个全面整合的专业引擎。 2. Unity安装 官网 : Unity…...

数据结构与算法——Java实现 8.习题——移除链表元素(值)

祝福你有前路坦途的好运&#xff0c;更祝愿你能保持内心光亮 纵有风雨&#xff0c;依然选择勇敢前行 —— 24.9.22 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示…...

如何理解MVCC

MVCC是什么&#xff1f; MVCC&#xff0c;是MultiVersion Concurrency Control的缩写&#xff0c;翻译成中文就是多版本并发控制&#xff0c;多个事务同时访问同一数据时&#xff0c;调控每一个事务获取到数据的具体版本。和数据库锁一样&#xff0c;它也是一种并发控制的解决…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

算法250609 高精度

加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...