基础
自然语言处理(NLP)
自然语言处理PaddleNLP-词向量应用展示
自然语言处理(NLP)-前预训练时代的自监督学习
自然语言处理PaddleNLP-预训练语言模型及应用
自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram)
自然语言处理PaddleNLP-词法分析技术及其应用
自然语言处理PaddleNLP-快递单信息抽取
理解
自然语言处理PaddleNLP-信息抽取技术及应用
自然语言处理PaddleNLP-基于预训练模型完成实体关系抽取--实践
自然语言处理PaddleNLP-情感分析技术及应用-理论
自然语言处理PaddleNLP-情感分析技术及应用SKEP-实践
问答
自然语言处理PaddleNLP-检索式文本问答-理论
自然语言处理PaddleNLP-结构化数据问答-理论
翻译
自然语言处理PaddleNLP-文本翻译技术及应用-理论
自然语言处理PaddleNLP-机器同传技术及应用-理论
对话
自然语言处理PaddleNLP-任务式对话系统-理论
自然语言处理PaddleNLP-开放域对话系统-理论
产业实践
自然语言处理 Paddle NLP - 预训练模型产业实践课-理论
问答系统(Question Answering System,QA) 是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。其研究兴起的主要原因是人们对快速、准确地获取信息的需求。问答系统是人工智能.
抽取式阅读理解:它的答案一定是段落里的一个片段,所以在训练前,先要找到答案的起始位置和结束位置,模型只需要预测这两个位置,有点像序列标注的任务,对一段话里的每个字,都会预测两个值,预测是开始位置还是结尾位置的概率,相当于对每个字来讲,都是一个二分类的任务
机器阅读技术:2011年7月20日,姚明正式宣布退役 => 姚明哪一年退役
500万的维基百科文档
检索式问答:先做段落检索、再做答案抽取
阅读理解:
郭鹤年 => 郭鹤,3个字里面对了2个 => 2/3, 完全匹配 => 1,f1(2/3,1) => 0.8
SQuAD(2016) 只能做抽取,数据量是训练深度神经网络的关键要素,数据集有着很大的影响力很多精典的阅读理解模型,也是基于SQuAD做的
DuReader(2017) 百度2017年发布的,迄今为止最大的中文阅读理解数据集,相比较 SQuAD,除了实体类、描述类和事实类的问题,还包含了是非类和观点类的问题
抽取式阅读理解,它的答案一定是段落里的一个片段,所以在训练前,先要找到答案的起始位置和结束位置,模型只需要预测这两个位置,有点像序列标注的任务,对一段话里的每个字,都会预测两个值,预测是开始位置还是结尾位置的概率,相当于对每个字来讲,都是一个二分类的任务
基于LSTM+注意力机制,核心思想就是如何对问题和段落进行交互和语义理解,一般就是在模型里面加各种 attention,各种复杂的模型结构基本上能总结成图中的形式,一般分为四层,
理论形式:给定了一个查询向量Query,以及一些带计算的值Value,通过计算查询向量跟Key的注意力分布,并把它附加在Value上面,计算出 attention 的值。
一般会事先定义一个候选库,也就是大规模语料的来源,然后从这个库里面检索,检索出一个段落后,再在这个段路上做匹配。
基于预训练语言模型(eg.BERT)
领导A训练好的模型,在领域B应用
过稳定:对于不同的提问,给出相同的答案
过敏感:对于相同语义的提问,给出不同的答案
提高阅读模型鲁棒性的方法:
稀疏向量检索:双塔
把文本表示成 one hot (拼写可能有错)的形式,常见的有 TFDF、BM?
文章编码成向量,向量的长度和词典的大小一致,比如词典的大小是3W,稀疏向量表示3W,
每个位置表示这个词有没有在问题中出现过,出现过就是1
倒排索引,一般采用稀疏向量方式,只能做字面匹配
稀疏向量,几百、上千万的文档都支持
稠密向量检索:单塔
把文本表示成稠密向量,也就是 Embedding,需要通过模型,对文本的语义信息进行建模,然后把信息记录在向量里,这边的向量长度,一般是128、256、768,相较于稀疏向量检索小很多,每个位置的数字是浮点数
一般通过对偶模型的结构进行训练,来获得建模的语义向量,
例:
Q:王思聪有几个女朋友
P:国民老公的恋人A、B、C......
如果通过 稀疏向量检索,可能完全匹配不到
稠密向量检索,可以学习到,国民老公=>王思聪,恋人=> 女朋友
两者可以互补,一个字面匹配,一个是语义匹配
文本匹配中的两种模型结构
对偶模型的参数可以共享,共享参数对字面匹配效果好些,不共享效果也差不了太多
实际应用中,把所有的文档都计算完,把向量存储下来。在线计算时,直接去检索
DPR
正例和强负例 1:1 ,弱负例 越多越好
强负例:和文档有些关系
弱负例:和文档内容不相关的。
一般做检索,不会把正例表得那么完整,在标注时,也是通过一个query,先去检索出一些候选的段落,在候选段落里,去标正例和负例,这样因为检索能力的限制,可能没有检索回来的一些段落就没有标注,这样会导致数据集中漏标,所以实际上在训练过程中会对这些漏标的数据集进行处理,有些数据集只标了正例,并没有负例,这时候负例只能通过一些方式去构造
推荐阅读
对带有感情色彩的主观性文本进行 分析、处理、归纳和推理的过程,输入文本 => (描述实体/entity,属性/aspect,情感/opinion ,观点持有者/holder,时间/time)