首页 > 其他分享 >自然语言处理 Paddle NLP - 结构化数据问答-理论

自然语言处理 Paddle NLP - 结构化数据问答-理论

时间:2023-06-26 18:47:52浏览次数:47  
标签:NLP 数据库 Paddle 生成 语法 答案 SQL 自然语言

NLP问答任务
相似度和规则匹配,都是早期的方法,现在主流的方法,都是基于生成的方法
结构化数据问答,有两种形式,一种是知识图谱形式、一种是关系型数据库形式。
image
主要应用在企业中,减少销售的成本
image
应用于商业智能,用于报告生成,解放了财务能力,降低人力成本
image

结构化数据问答任务

结构化数据问答:基于给定的结构化知识库和自然语言问题,给出问题对应的答案
任务能力:

  • 推理能力:基于现有知识推理/计算给出答案,E.g. OPPOA93比魅族18贵多少呀
  • 输出结果可解释:输出知识库查询语句

结构化形式存储,不尽存储了问题的知识和答案,这种存储有利于推理和计算
结构化问答能够输出查询语句,是人类可读可理解的,相对于其它问答形式,这种是可控的。
image

表格问题中,一般用语义解析技术(Text-to-SQL)
表格问答:核心技术,将自然语言问题转成数据库上可执行的SQL查询语句
两大功能:

  • SQL解析功能:比较关键,是表格问答的核心技术,如何将自然语言转成可查询的SQL语句
  • SQL执行功能
    image
    image

评估方法

常用的有两种,这两种是不等价的。

  • 精确匹配正确率:评估生成的SQL的正确率,预测SQL与标准SQL相等的问题占比
  • 执行正确率:评估答案正确率,执行预测SQL获得正确答案的问题占比

分母是问题集合大小N,预测的SQL和标准的SQL相等的问题数量,在判断相等的时候会忽略顺序的影响

问题

这种方式和第一种相比,分子是通过答案相比,这两种方式是不等价的。

  • 精确匹配正确率:针对同一个问题,有不同的SQL写法,而且SQL都是正确的,这种情况下。如果使用第一种评估方式,标准的SQL只是正确写法中的一个,使用这种方式会漏掉一些正确的结果。导致评估的结果会偏低,这种情况就比较适合使用第二种方式(评估答案准确率)
  • 执行正确率:数据库的不完毕性,有些问题是没有答案的,这样的话,就导致正常的SQL没有答案,错误的SQL也没有答案,按答案判断两种情况都是正常的。这样会导致评估结果会偏高

在实际应用在选择评估方式时,

    1. 看选择的测试数据,提供了哪些信息,有没有提供SQL、答案,
    1. 实际应用更关注哪个指标,是关注SQL正常,还是更关注答案

image

数据集

一般是按数据集化分,要么问题在训练集中,要么在测试集中,多领域是按数据库划分的,在一个数据集中

  • 多领域(cross-domain):训练/测试集使用的数据库是否相同或交叉,数据集是包含多个数据库的,每个数据库有一个领域,每个领域有一个或多个数据库,数据集划分时,是按训练集、测试集划分的。一个数据库所有的问题,只能属于一个集合,要么属于训练集,要么属于测试集。这会导致测试集中的数据库和问题,在训练集中是没有见过的。多领域化分,是用来划分模型的泛化性。同时也给任务带来很大的挑战

  • 单/多表(multi-table):构成数据库的表的数量,多表涉及到表的检索,一张表为单表,涉及多张表的表示多表

  • 简单/复杂:从SQL角度评估,是否包含高级从句、集合操作、嵌套等,简单 SQL只包含SELECT WHERE(答案、条件),复杂:有可能包含排序、分组、集合操作

CSpider 数据库是英文,问题是中文
image

主流学习方式

基于规则的方式,已经不用了,主流的有以下两种

  • 有监督方法:以生成的SQL是否正确,来指导模型的学习,这种学习方法依赖于标准数据,由于正确的SQL语句标注比较困难

  • 弱监督方法:给出数据库问题,以及问题对应的答案,标注答案要比标注SQL相对容易很多,在这情况下,SQL是中间输出,会以答案指导SQL的生成,能够输出正常答案的SQL就是正确的。这种需要在整个数据库中去搜索合理或正常的正确语句,搜索空间比较大。这种方式比较适合简单的数据集,复杂的数据集很难执行下去。

https://github.com/salesforce/WikiSQL
为了各类数据集都适用,后面都是基于有监督方法的介绍
image

encode-decoder 中英文翻译,中文句子翻译成英文句子,
encode 把中文句子映射到表示空间上,完成编码的作用
decode 从表示空间上,解码出对应的英文句子
image

从下往上看,把多输入进行拼接,自然语言和DB Schema 的拼接,将拼接输入给 Encoder 编码器,解码器按顺序输出每个元素,直到遇到结束符,最终生成序例(SQL语句)
Decode 引入了两个开关,generate、copy 多领域数据集在划分训练集和测试集时,是按数据库进行化分的,测试集中的一些问题在训练集中没有见过,如何在生成的时候把这些没有见过的生成出来。输出信息,应该包含在输入定义的 db schema 信息中,这时候就可以把定义的输入信息copy到输出信息中。
对于 SQL 关键词,是生成的,数据库和问题中的元素是copy的
image

Text-to-SQL任务挑战

领域泛化:测试集中数据库未在训练集中出现过
输出结构化:生成的SQL语句在数据库上可执行,即满足数据库结构、SQL语法
image

image

Text-to-SQL实例

解决方案
编码:Relation-awarerepresentation 利用匹配关系强化编码方式
解码:Grammar-baseddecoder 利用语法解码,保证生成的SQL是满足语法的
image
Encode => 隐式表示 => Decode
image

输入部分仍然是自然语言+Schema的拼接,在这边为了更好的识别条件值,增加了条件值的一个拼接,
使用基础的编码器,对数据进行一个表示,得到一个隐式表示,
在基础编码器上,又增加了一个 Relation-aware Transformer Encoder:用匹配关系增强表示,
接下来在Decode中引入了 Grammar-based Decoder 语法解码,这种解码不是在每次输出时输出一个个元素,而是输出的一个语法序列。
image

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/text_to_sql
image

SchemaLinking

自然语言和数据库Schema进行匹配映射,把匹配信息构成匹配关系矩阵,这个矩阵作为后面模块的输入,

先对自然语言进行分词
问题中的每个词与DB Schema中的成分进行匹配,标注出匹配方式和程度,构建出关系矩阵,颜色表示匹配关系,不同的颜色表示不同的关系
image

Encoding–BasicEncoder

  • 基础编码:把输入映射到隐式空间的过程
    Dataprocess:text2sql/dataproc/ernie_input_encoder_v2.py中类ErnieInputEncoderV2
    Encoder:third/ERNIE或PaddleNLP:from paddlenlp.transformersimport BertModel
    image

Encoding–Relation-awareEncoder

  • 匹配关系增强编码:利用SchemaLinking 中建立起来的关系矩阵,来指导编码,进而强化编码,
    学习输入中的每个词对目标词的权重,
    输入自然语言和DB Schema进行拼接,
    权重越大,对目标词的影响越大
    1:08:40
    image

Decoding

  • 语法解码:解码过程种通过语法生成语法序列,保证语法的合理性
  • 基于Copy机制的解码:对应的元素是数据库元素时,利用copy机制
    image

Grammar-basedDecoder

基本思想:根据SQL语法设定上下文无关文法,将SQL生成看作文法序列生成,即文法选择过程
不再生成单独的 query元素,而是生成符合SQL语言的语法,最后生成的语法序列是可以构成 sql query的。
image

是经过领域泛化的,换一个库不需要重新标注,除非需要很高的准确率。

应用实例演示:https://ai.baidu.com/unit/v2#/innovationtec/kbqa/skilllist

视频:https://aistudio.baidu.com/aistudio/course/introduce/24177?sharedLesson=1477808&sharedType=2&sharedUserId=2631487&ts=1686638807733

课件:https://aistudio.baidu.com/aistudio/course/introduce/24177?sharedLesson=1567910&sharedType=2&sharedUserId=2631487&ts=1686638791675

标签:NLP,数据库,Paddle,生成,语法,答案,SQL,自然语言
From: https://www.cnblogs.com/vipsoft/p/17476610.html

相关文章

  • PromptAppGPT:基于ChatGPT的自然语言开发框架
    近日首个自研全开源自然语言低代码GPT应用快速开发框架PromptAppGPT迎来重要更新。框架简介可以参考往期文章: 真低代码!首个基于ChatGPT的自然语言开发框架PromptAppGPT:全自动编译、运行、界面生成。项目网站:https://promptappgpt.wangzhishi.net/项目代码:https://github.......
  • 自然语言处理 Paddle NLP - 检索式文本问答-理论
    问答系统(QuestionAnsweringSystem,QA)是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。其研究兴起的主要原因是人们对快速、准确地获取信息的需求。问答系统是人工智能.抽取式阅读理解:它的答案一定是段落里的一个片段,所以在训练前,先要......
  • PaddleOCR学习笔记1
    尝试使用PaddleOCR方法,如何使用自定义的模型方法,参数怎么配置,图片识别尝试简单提高识别率方法。目前仅仅只是初步学习下如何使用PaddleOCR的方法。 一,测试识别图片:1.png:正确文本内容为“哲学可以帮助辩别现代科技创新发展的方向” 二,测试代码:paddleocr_test2.py:结......
  • 【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术
    前言人工智能是一个庞大的研究领域。虽然我们已经在人工智能的理论研究和算法开发方面取得了一定的进展,但是我们目前掌握的能力仍然非常有限。机器学习是人工智能的一个重要领域,它研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,并通过重新组织已有的知识结构来不断提......
  • LLE算法在自然语言生成中的应用:实现文本到语音的情感迁移
    目录自然语言生成(NaturalLanguageGeneration,NLP)是人工智能领域的一个分支,它利用大量的文本数据训练出语言模型,从而实现对自然语言的生成和理解。在NLP中,情感迁移(EmotionTransfer)是一个重要的任务,它可以通过对已有文本的情感分析,将其转化为语音,从而实现文本到语音的情感迁......
  • 自然语言处理中数据增强(Data Augmentation)技术最全盘点
    与“计算机视觉”中使用图像数据增强的标准做法不同,在NLP中,文本数据的增强非常少见。这是因为对图像的琐碎操作(例如将图像旋转几度或将其转换为灰度)不会改变其语义。语义上不变的转换的存在是使增强成为ComputerVision研究中必不可少的工具的原因。是否有尝试为NLP开发增强技......
  • 每个人都应该知道的5个NLP代码库
    这些软件包可处理多种NLP任务,例如词性(POS)标注,依存分析,文档分类,主题建模等等。NLP库的基本目标是简化文本预处理。目前有许多工具和库用于解决NLP问题……但是只要掌握了其中的一些基本知识,就可以掌握相关基本知识。这就是为什么只介绍其中最常用的五个PythonNLP库的原因。......
  • 中文医疗领域自然语言处理相关数据集、经典论文资源蒸馏分享
        在医疗领域,一些应用已经从科幻小说变为现实。人工智能系统通过了中国和英国的医学执照考试,而且它们比普通医生考得更好。最新的系统比初级医生能更好地诊断出55种儿科疾病。但是,这些系统比第一批计算机视觉深度学习应用(例如研究一个图像)中的一些更难构建,因为它们需要具有......
  • 自然语言处理顶会ACL 2020会议核心要点分享
        今年受疫情影响,ACL只能举行线上虚拟会议,因此不能近距离跟行业学者们进行交流。但我任然想把我了解到的ACL的争取趋势和研究动态分享处理,因而有了这篇文章。     这些年来ACL的总体趋势    在开始讨论整个趋势之前之前,让我们先看一下ACL会议的一些总体统计数据。今......
  • Barbara Plank-NLP模型的跨语言/跨领域迁移-经验分享
        迁移学习(或者说多任务学习、领域自适应)在自然语言处理任务中普遍存在,比如说机器翻译任务中多语言翻译问题。    自然语言领域中迁移分为Transductive迁移和Inductive迁移两类:    Transductive迁移分为跨领域的迁移(领域变换)和跨语言迁移(领域交叉学习)两类。    I......