资讯详情

我的NVIDIA开发者之旅——使用NeMo快速构建智能问答系统学习笔记

我的NVIDIA开发者之旅-使用NeMo快速构建智能问答系统学习笔记

"我的NVIDIA开发者之旅 | 征文活动正在进行中…

智能问答系统是自然语言处理领域的重要任务之一, 有序科学地整理无序语料信息,建立基于知识的分类模型; 这些模型可以指导新添加的分类语料库和服务信息,节约人力资源,提高信息处理的自动化程度。 它广泛应用于智能语音交互、在线客、个性化情感聊天等应用广泛。

NeMo构建新型最先进的对话AI模型工具箱, NeMo自动语音识别采用独立集合(ASR)、自然语言处理(NLP)从文本到语音(TTS)模型。

一、智能问答系统简介

1.1.定义智能问答系统

智能问答系统(Question Answering System, QA)它是自然语言处理领域的子任务之一,也是信息检索系统的先进形式 。它能用准确简洁的自然语言回答用户用自然语言提出的问题。 问答系统是人工智能和自然语言处理领域的倍相关系 具有广阔发展前景的研究方向。它广泛应用于智能语音交互、在线客、个性化情感聊天等应用广泛。

1.2.智能问答系统分类

1.2.1.基于结构化数据的问答系统

基于结构化数据的问答系统的主要思想是分析问题, 将问题转化为查询(query), 然后在 查询结构化数据库, 返回的查询结果是问题 答案。体现强人工智能的成分不多。

在这里插入图片描述

1.2.2、基于知识图谱的问答系统

知识图谱:由一些相互连接的实体及其属性组成,实体的每一个属性和关系都是一个三元组。

目前,基于知识问答系统主要有三种方法,即基于模板匹配的方法;基于语义分析和基于向量建模的方法。

1.2.3.基于自由文本阅读理解的问答系统

是指模型根据对非结构化的文本进行阅读理解,从而从中抽取出答案。阅读理解能够让计算机帮助人类在大量文本中快速找到准确答案,从而减轻人们对信息的获取的成本。具体来讲,机器阅读理解和问答任务(QA)训练是指给出一个问题和一个或多个文本QA系统可以根据文本找到问题的答案。

二、智能问答系统的工作流程和原理

2.1.智能问答系统的工作流程

2.1.1、流程概述

(1)首先有两部分输入,包括原文和基于提出的问题。

(2)在编码层将文本数字化,转化为向量表达。

(3)将结果输入到神经网络的编码程序中,对文本的特殊向量进行编码,把编码后的结果输入到交互层。

(4)通过交互层模型建立文章与问题之间的语义联系,模型考虑原文与问题的语义。

(5)模型通过输出层找出最大概率答案的开始和结束位置,输出答案。

2.1.2、流程图

2.2.智能问答系统经典模型

2.2.1、BiDAF

BiDAF分别有6层Character Embedding Layer、Word Embedding Layer、Contextual Embedding Layer、Attention Flow Layer、Modeling Layer和Output Layer。前三层是上下文不同粒度的表征编码器。第四层是双向注意流层,是原文的核心层。第五层是编码层,感知编码第四层输出问题的上下文表征。第六层是预测答案的范围。

(1)字符嵌入层:字符级CNNs将每个字映射到向量空间。 (2)字嵌入层:用预训练的字嵌入模型,将每个字映射到向量空间。 (3)上下文嵌入层:利用周围单词的上下文线索细化单词的嵌入。前三层同时用于问句和原文。 (4)注意力流层:将问句向量与原文向量耦合,为原文中的每个单词生成与问句相关的特征向量集合。 (5)建模层:使用RNN扫描整个原文。 (6)输出层:输出问题对应的答案。

2.2.2、QANet

QANet介绍模型网络结构

(1)输入的数据有Context和Question两部分组成。

(2)通过Embedding层转化为Embedding向量,分为word embedding和char embedding。Highway network包含在embedding层中。

(3)通过Encoder Block层,Encoder Block是QANet如右图所示。Encoder Block层分四部分,Position Encoding、 Conv卷积层、Self attention和Feedword层。开始做每个部分layernorm处理,结尾连接残差。

(4)Context和Question的encoder向量,通过Context Query Attention计算相关性。

(5)然后通过三层Encoder Block第一层和第二层输出连接后,通过一层全链接层作为起始位置的概率。

(6)第一层与第三层输出连接后,以一层全链接层为起始位置的概率。

2.2.3、BERT

BERT的全称为Bidirectional Encoder Representation from Transformers,它是一种预训练的语言表征模型。它强调,它不再使用传统的单向语言模型或两个单向语言模型进行浅层拼接,而是使用新的,以致能生成语言表征。

该模型具有以下主要优点:

1)采用MLM对双向的Transformers为了产生深层的双向语言表征,进行预训练。

2)预训练后,只需要添加一个额外的输出层进行fine-tune,可以在各种下游任务中获得state-of-the-art性能。在这个过程中不需要BERT修改任务的特定结构。

BERT的输入

BERT的输入为每一个token对应的表征*(图中的粉红色块是token,黄色块就是token对应的表征)*,而且采用了单词字典WordPiece构建算法。除了完成具体的分类任务,除了单词token此外,作者还在输入的每个序列的开头插入特定的序列,该分类token最后一个对应Transformer层输出被用来收集整个序列来表征信息。

由于BERT它是一种必须适应各种自然语言任务的预训练模型,因此模型输入的序列必须能够包含一个句子*(文本情感分类,序列标注任务)或两句以上(摘要,自然语言推断,问答任务)*。那么如何让模型有能力区分哪个范围属于句子呢?A,哪个范围是属于句子B呢?BERT有两种方法可以解决:

1)在序列tokens中把**分割token([SEP])**插入每个句子后,将不同的句子分开tokens。

2)为每一个token所有表征都添加了可学习的分割embedding指示它属于句子A还是句子B。

BERT的输出

为分类token([CLS])对应最后一个Transformer的输出, 则代表其他token对应最后一个Transformer输出。对一些token级别的任务*(如序列标记和问答任务),就把 输入到额外的输出层进行预测。对于一些句子级别的任务(如自然语言推断和情感分类任务)*,就把输入到额外的输出层,这里解释了为什么在每个输出层token在插入特定的分类序列之前token。

三、构建NeMo中文问答数据集

3.1、SQuAD

SQuAD是Stanford Question Answering Dataset 首字母缩写。这是一个阅读理解数据集,由众包工作者在一组维基百科全书上提出的问题组成。每个问题的答案都是相应文章中的一段文本,有些问题可能无法回答.

Squad官网: https://rajpurkar.github.io/SQuAD-explorer/

3.1.1、SQuAD1.0

SQuAD 1.1 包含针对500 文章的10万 问答对。

论文地址:https://arxiv.org/pdf/1606.05250

下载地址:https://data.deepai.org/squad1.1.zip

3.1.2、SQuAD2.0

SQuAD2.0组合了SQuAD1.1中的10万个问题,并增加了超过5万个无法回答的问题,这些问题由众包工作者以对抗(adversarially)的方式设计,看起来与可回答的问题相似。 为了在SQuAD2.0数据集上表现出色。系统不仅必须在可能的情况下回答问题,还必须确定篇章数据何时不支持回答,并避免回答。 论文地址:https://arxiv.org/abs/1806.03822

数据集地址: https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v2.0.json

3.1.2.1、Squad2.0英文数据集格式:


{ 
         
    "data": [
        { 
         
            "title": "Super_Bowl_50",
            "paragraphs": [
                { 
         
                    "context": " numerals 50.",
                    "qas": [
                        { 
         
                            "answers": [
                                { 
         
                                    "answer_start": 177,
                                    "text": "Denver Broncos"
                                },
                                { 
         
                                    "answer_start": 177,
                                    "text": "Denver Broncos"
                                },
                                { 
         
                                    "answer_start": 177,
                                    "text": "Denver Broncos"
                                }
                            ],
                            "question": "Which NFL team represented the AFC at Super Bowl 50?",
                            "id": "56be4db0acb8001400a502ec"
                        }
 
                    ]
                }
            ]
        }
    ],
    "version": "1.1"
}

3.1.2.2、Squad2.0中文数据集格式:

四、在NeMo中训练中文问答系统模型基本步骤

点击观看课程视频:

4.1、导入NeMo工具库及相关工具类

4.1、创建目录存放数据集

4.3、定义相关超参数

4.4、加载模型配置文件

4.5、通过OmegaConf工具库创建Config对象

4.6、通过config对模型配置文件进行修改

4.7、设置模型的训练器

4.8、初始化模型

4.9、开始训练模型

4.10、模型进行推理

4.11、模型的保存

五、使用模型进行推理完成中文智能问答的任务

课程视频链接: https://www.bilibili.com/video/BV1744y167Ag

"我的NVIDIA开发者之旅” | 征文活动进行中…

标签: sp2841a502角度传感器a502高精度电位计角度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台