首页 > 最新资讯 > 如何使用NVIDIA Jarvis快速开发问答应用
如何使用NVIDIA Jarvis快速开发问答应用

如何使用NVIDIA Jarvis快速开发问答应用

2021-03-02 18:04

#人工智能 #深度学习


你很有可能询问过智能音箱类似“珠穆朗玛峰有多高?”这样的问题。然后你的智能音箱会回答:“珠穆朗玛峰海拔29, 032英尺高。”那么,你是否想过它是如何找到答案的呢?

广义上,问答(QA)系统被定义为一个由信息检索(IR)和自然语言处理(NLP)组成的系统,它能够用自然语言回答人类提出的问题。如果你对信息检索不熟悉,那么可以把它看成一项从资源库、网页或数据库文档中获取问题相关信息的技术。想一想平时使用的搜索引擎,就很容易理解这个概念。

随后,你就需要一个自然语言处理系统在信息检索系统中寻找与问题相关的答案。虽然,问答系统的基本构成已经明晰,但从头开始构建信息检索系统和自然语言处理系统并非易事。以下将介绍NVIDIA Jarvis如何轻松实现问答系统的开发

Jarvis简介

NVIDIA Jarvis是一个完全加速的应用框架,用于构建使用端到端深度学习流程的多模态对话式AI服务。Jarvis框架包括针对语音、视觉和自然语言理解(NLU)任务的优化服务。除了为整个对话式AI服务流程提供多个预训练模型外,Jarvis还能够实现大规模部署。本文将详细介绍Jarvis的问答功能,以及如何运用它构建问答应用。

Jarvis的问答功能

为了理解Jarvis问答功能的工作原理,本文将先从Transformer双向编码器表示(BERT)开始说起。BERT是谷歌在2018年开发的一种基于Transformer的、自然语言处理的预训练方法,它彻底改变了自然语言处理领域。BERT能够理解文本中某个词的上下文表现,使用了包括维基百科在内的大量数据语料库进行预训练。

通过预训练BERT这个强大的自然语言处理引擎,可以对其进行进一步的微调,以便对类似斯坦福问答数据集(SQuAD)中的问答组执行质量检查。现在,该模型可以从给定的上下文中找到以自然语言句子或段落表达的答案。图1是一个问答示例,其中突出显示的“重力”一词是“雨为什么往下落”这个问题的回答。在这个例子中,段落是上下文,经过成功微调的问答模型反馈“重力”一词作为回答。

图 1:SQuAD数据集中一个样本段落的问答组

ALT:描述降水气象学解释的段落,末尾有三个问答组

使用Jarvis创建一个问答系统

 

NVIDIA工程师和研究人员团队借助Jarvis提供“开箱即用”的高质量问答功能。Jarvis 自然语言处理服务提供了一套高级API动作,包括QA、NaturalQuery。维基百科 API动作可以让你

通过自然语言查询来获取在线百科全书——维基百科上发布的文章。这就是前文提到的信息检索系统。结合维基百科API动作和Jarvis问答功能,就可以用数行Python代码创建一个简单的问答系统。

首先安装用于Python的维基百科API。接下来,导入Jarvis自然语言处理服务API和gRPC,即Jarvis的基本通信框架。

现在,创建一个输入问题。使用维基百科 API动作来获取相关文章,并定义需要获取的文章数量,将此定义为max_articles_combine。提出问题“什么是语音识别”,然后打印出返回的文章标题。最后,将每篇文章的摘要添加到变量combined_summary中。

图 2:通过维基百科API动作获取的文章标题

ALT:上图为Python代码运行时的打印输出内容,即三篇与语音识别相关的文章

 

接下来,打开一个指向Jarvis服务器运行位置的gRPC通道。由于是在本地运行Jarvis服务器,所以该通道是'localhost:50051'。然后,将NaturalQueryRequest实例化,并向Jarvis服务器发送一个请求,同时传送问题和上下文。最后,打印Jarvis服务器返回的响应。

 

图 3:问题和回答示例

ALT:由Jarvis问答功能生成的 Python代码运行、问题和回答输出

 

总 结 

你可通过Jarvis问答和维基百科API动作构建一个简单的问答应用。如果维基百科上有一篇与你的问题相关的文章,理论上你就可以找到答案。假设你有一个数据库,里面全是与你所在领域、公司、行业或任何感兴趣的内容相关的文章,就可以创建一个问答服务来搜索你所感兴趣的问题的答案。显然,你需要一个信息检索系统,从数据库中获取相关的文章,就像这篇文章中所使用的维基百科API动作一样。拥有信息检索系统后,Jarvis就可以帮你找到答案。期待你使用Jarvis创造出更酷的应用。

相关新闻