一种护理用机器人的自然语言处理系统及其方法与流程

文档序号:21537113发布日期:2020-07-17 17:34阅读:354来源:国知局
一种护理用机器人的自然语言处理系统及其方法与流程

本发明属于自然语言处理领域,具体设计一种护理用机器人的自然语言处理系统及其方法。



背景技术:

nlp(naturallanguageprocessing)是人工智能(ai)的一个子领域。自然语言是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一,而对自然语言处理的研究也是充满魅力和挑战的。自然语言处理往往应用在智能问答领域,在随着人口增加,我国的医疗资源日益紧张,而医疗需求不断增长。利用人工智能辅助医生、提高医疗系统运转效率是发展的必由之路。

医疗问答的具体定义是:用户(患者)提出具体的问题,系统通过人工智能技术向用户提供相应答案。医疗问答同时也能满足用户的泛医疗需求,即用户对医疗知识、日常保健等医疗健康知识的获取。医疗问答可以更加精准地满足用户的需求,而不需要用户从大量信息中进行筛选。现有的医疗问答技术方案主要有以下三种:1)基于信息抽取,通过信息抽取获取关键词,再进行排序。2)基于知识图谱,通过构建实体及其关系的知识图谱,在图谱上进行推理回答问题。3)基于深度学习。基于深度神经网络建模,计算问答匹配程度。

上述方法均存在缺陷:基于信息抽取的方式只能匹配一些关键词,无法有效处理同义词、近义词,以及医疗术语的口语化表达,因此获得一种应用于医疗问答装置的护理用机器人的自然语言处理系统及其处理方法十分重要。



技术实现要素:

本发明的目的是为了解决上述技术的不足而设计的一种护理用机器人的自然语言处理系统,包括:语音唤醒模块,利用特定的词语来进行唤醒,运行完整的自动语音识别来执行热词检测,从而使得系统在自动语音识别转录中获取特定的触发词;录音模块,用于在进行语音录制的同时,根据语音的特征判断是否结实语音;语音转写以及合成模块,根据语速、音调、音量、音频码率设置,将语音转写成文字形式;播放模块,将语音合成模块合成的语音进行转换播放。

语音唤醒模块采用snowboy可指定唤醒词检测引擎;录音模块能够特征提取、训练并使用分类器、语音分割和内容关系可视化工作,例如pyaudio软件;还包括跨平台的、可通过网络工作的声音服务,用以解决系统不兼容,例如pulseaudio。

其中语音转写以及合成模块将转化成的文字形式进行数据分析处理,其中:数据来源部分,包括系统处理所需要的语言数据,由专业知识数据、日常数据以及生成数据;神经网络对话生成部分,利用分词工具进行分词,随后根据构建的日常对话数据生成句子;匹配问答部分,通过计算文本间的相似度可以实现对提问者的问题与问答库中的问题进行匹配,从而得到提问者可能想要的答案;匹配问答部分包括:词向量模型,对两个句子特征提取后得到向量进行向量积计算即可求得语义相似度;基于子字信息的句向量模型,对无法通过语义相似计算方法无法区别具有相同特征而序列不同的句子进行计算。

数据包括:

静态训练数据,包括日常聊天对话数据,医疗护理相关知识数据;动态预测数据,在问答服务系统存在着一些问题并没有答案,或者答案事件并没有发生,而这类问题是用户切实需要了解,并根据答案对做出未来规划的,以大规模、多种类的历史性数据进行学习,并对此事件未来的发生情况进行预测;动态爬取数据,对部分网络上已存在数据量大且格式较为固定的数据使用网络爬虫的方式获得,不将其添加入静态训练数据之中。

根据上述技术方案,医护知识答案数据来源多样;基于计算文本语义句向量模型,预训练后优于传统词向量计算与对话生成模型;句向量模型可对未标注数据集进行无监督预训练,更改问答数据集方便,扩展性强对比于词向量模型,句向量模型会考虑n-gram,能够区别具有相同特征而序列不同的句子,回答准确率高;对比于生成模型,确保回答数据真实性,更适用于垂直领域;易并行、多核可拓展性强,运行效率高;基于c/s结构的模块化系统:模块封装,可移植性强,利于终端形式的拓展。

另一方面,本发明还提出一种自然语言处理方法,采用4层长短期记忆网络并使用加权求和机制联系编码器和解码器,使用分词工具分词,随后进行词向量预训练,基于数据来源部分的数据集进行数据处理后进行训练得到神经网络对话生成模型。

使用分词对句子进行分词,并使用预训练的词向量做词嵌入,可以得到句子的矩阵表示,即语义矩阵,对句子中所有向量进行均值处理、求和处理或取维度最大值。

通过词频统计和低频过滤获得给定大小为w的词典,得到每个单词w∈{w1,w2,w3……ww}的向量表示,将该模型基于skipgram模型导出,通过对低频字符以n-grams模型进行过滤,得到大小为g的n-gram词典及其向量表示。

对于词语c,其包含的n-gram为g∈{1,2,3……g},对其包含的所有n-gram的向量表示进行求和,对于词语c本身的向量表示为vc,由此获得评分函数,通过评分函数可以实现具有相同子字信息的词语进行参数共享,也可以实现稀有词语甚至是句子的向量化表示,通过模型得到句子的向量化表示后,对两个句子的向量进行向量积计算得到余弦相似度,从而确定句子间的语义相似度。

本发明创造的优点或有益效果:本系统可以快速应用在raspberrypi、(ubuntu)linux和macosx等多种系统上;结合实际情况设计了基于c/s架构的工作模式,服务器端负责运行模型,而终端设备只需运行语音交互模块和数据交换模块。此结构大大降低了终端设备的硬件成本,加速了程序的运行,有助于提高用户体验,且使用此机构开发可为后期拓展终端设备提供极大的便利。创新性地提出了基于子字信息的句向量语义计算模型,并通过维基百科数据对模型进行预训练得到了子字信息的向量化表示。可随时随地地为用户提供医护知识以及回答用户提出地健康问题。

附图说明

图1为系统结构示意图;

图2为硬件结构示意图;

图3为系统投入使用流程图;

具体实施方式

为了使本领域技术人员更好地理解本发明,从而对本发明要求保护的范围作出更清楚地限定,下面就本发明的某些具体实施例对本发明进行详细描述。需要说明的是,以下仅是本发明构思的某些具体实施方式仅是本发明的一部分实施例,其中对于相关结构的具体的直接的描述仅是为方便理解本发明,各具体特征并不当然、直接地限定本发明的实施范围。本领域技术人员在本发明构思的指导下所作的常规选择和替换,均应视为在本发明要求保护的范围内。

问答系统是一个使用大量数据训练好的人工智能模型,用户在使用该系统时是将问题输入人工智能模型中,由模型产生答案。但在使用模型前需要先加载模型,而加载模型不仅需要较长的时间而且须有较大的内存空间,这将大大影响用户体验并增加设备成本,因此本发明采用c/s架构的思想,将模型运行在服务器上,用户端只负责与用户进行语音交互,所有用户提出的问题均交服务器端处理后再将答案返还给用户端。使用此方式可大大降低用户端的运行负荷,加快程序响应速度,增强用户体验。图1为系统结构示意图。

服务器与嵌入式用户端之间使用http协议进行通讯,问题和答案均以文本的形式传送。当服务器检测到用户端的post请求后,获取请求中包含的问题并调用模型计算问题答案,之后将答案返回至用户端。

其中为了确保服务器上只有一个会话存在,避免每次调用模型计算答案时程序都会重新创建tensorflow的会话,致使答案计算耗费大量时间,问答模型使用单例模式运行,tensorflow为端到端的开源机器学习平台。

本问答系统硬件:如图2所示,其中麦克风与主机使用usb2.0接口连接,用于采集用户提问的语音信息;扬声器与主机使用3.5mm音频接口连接,用于播放智能护理咨询机器人产生的音频答案;led点阵光源与树莓派间采用通用型输入输出接口连接,用于提示用户智能护理咨询机器人的工作状态;wi-fi通讯模块为树莓派自带,用于连接互联网,实现用户端和服务器间的http通讯。

在系统投入使用的时候,如图3所示,麦克风便一直处于工作状态,当系统检测到唤醒后,问答系统正式开始工作,led点阵发生变化;首先系统会播放提示音,提醒用户录音开始,并在录音的同时检测用户是否停止说话,当检测到用户停止说话时间超过设定的阈值时,便会认为用户已停止问话,此时播放提示音,提醒用户录音结束,系统将录音转换为文字。

若文字信息为空说明用户已结束询问,系统会进入待唤醒状态并将led点阵熄灭,若文字信息不为空则终端会把文字提交到服务器,由智能护理咨询模型产生问答结果并返还。终端将返还的答案转换为语音,播放给用户,播放完毕后录制用户的下一问题。

本系统采用语音唤醒模块来进行对于本系统的唤醒,使用可始终离线监听的高度可定制唤醒词检测引擎snowboy,可以运行在raspberrypi、(ubuntu)linux和macosx系统上,它可以运行完整的自动语音识别来执行热词检测,在这种情况下,设备将在自动语音识别转录中观察特定的触发词。问答系统运行在linux的环境下,使用python语言编程,在进行语音录制的同时还需要根据录音的特征判断是否结束录音;其中pyaudio是python的一个语音处理库,其依赖于portaudio,主要用来进行特征提取、训练并使用分类器、语音分割和内容关系可视化等工作,本系统用了其特征提取和语音录制的功能。

本系统的语音转写系统使用百度语音的语音转写模块,使用基于http方式的请求文本数据。百度语音转写支持多达35个垂类领域的语义理解定制,以及自定义指令集和问答对设置,训练专属识别模型,语音识别率较高。由于百度语音转写仅支持采样率为8khz和16khz的音频文件,而pyaudio不支持上述采样率的音频录制,因此本系统中采用安装pulseaudio来解决此问题。

本系统的语音合成系统依旧采用了百度的免费语音,使用基于http的音频请求方式,百度语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速、音调、音量、音频码率设置,使用非常方便。由于本系统中的语音合成模块合成的语音为mp3格式,但在使用python播放此格式音频文件的播放常存在一些未知错误,如卡顿、语速时常等,为解决此问题,本系统播放模块在播放音频文件前先使用pydub库将mp3格式的音频文件转换为wav格式播放。

本系统的数据来自于三个部分,静态训练数据部分,在关于护理学相关知识的数据中加入了日常聊天对话的数据。日常对话数据可采用dgk_lost_conv中文对白语料、华为诺亚方舟实验室(shangetal.(2015))发布的微博短文本对话数据集以及chatterbot-corpus数据集。但不仅限于上述数据。动态预测数据部分,在本系统存在着一些问题并没有答案,或者答案事件并没有发生,而这类问题是用户切实需要了解,并根据答案对做出未来规划的。为解决此类问题,在数据处理部分中加入了基于原有历史数据的动态学习预测模块,此模块是一个简单的机器学习程序,但可以高效的大规模、多种类的历史数据进行学习,并对此事件未来的发生情况进行预测。此预测方式基于真实历史数据走势,预测准确,可为用户提供较为可靠的参考意见。动态爬取数据部分,在数据处理部分中加入了爬虫模块。对部分网络上已存在数据量大且格式较为固定的数据使用网络爬虫的方式获得,不将其添加入静态数据集中。这样既减少工作量,也保证了数据的正确率和即时性。

本系统在google对其开发的神经网络翻译模型(gnmt)进行了开源的基础上设计了适用于智能对话机器人的神经网络对话生成模型gnmt-dgm(gnmtfordialoguegenerationmodel)。gnmt-dgm采用4层lstm模型并使用attention机制联系编码器和解码器。使用jieba分词工具分词,word2vec进行词向量预训练,基于团队成员构建的日常对话数据以及dgk_lost_conv中文对白语料、华为诺亚方舟实验室(shangetal.(2015))发布的微博短文本对话数据集以及chatterbot-corpus数据集进行一定的数据处理手段后进行训练得到神经网络对话生成模型,采用的数据采用上述数据集,但不仅限于上述数据。

本系统使用jieba分词对句子进行分词,并使用预训练的词向量做词嵌入,可以得到句子的矩阵表示(语义矩阵),对句子中所有向量进行均值处理、求和处理或取维度最大值是一个简单有效的特征提取的方法。

基于词向量的语义相似度计算方法无法区别具有相同特征而序列不同的句子,如“他打我”和“我打他”具有相同的特征,词向量模型无法对此进行区分。通过词频统计和低频过滤获得给定大小为w的词典,得到每个单词w∈{w1,w2,w3……ww}的向量表示,将该模型基于skipgram模型导出,通过对低频字符以n-grams模型进行过滤,得到大小为g的n-gram词典及其向量表示,本系统模型基于(mikolovetal.(2013))提出的skipgram模型导出,词向量的训练目标为预测词语是否在上下文中出现,对于句子“他打我”、“我打他”会被分割为{“他打”,“打我”}和{“我打”,“打他”}两个不同的集合。“他打”和“打我”都是“他打我”的子字信息。通过对低频的字符n-grams进行过滤。最终得到大小为g的n-gram词典及其向量表示。对于词语c,其包含的n-gram为g∈{1,2,3……g},对其包含的所有n-gram的向量表示进行求和,对于词语c本身的向量表示为vc,由此获得评分函数,通过评分函数可以实现具有相同子字信息的词语进行参数共享,也可以实现稀有词语甚至是句子的向量化表示,通过模型得到句子的向量化表示后,对两个句子的向量进行向量积计算得到余弦相似度,从而确定句子间的语义相似度。通过评分函数可以实现例如“睡觉”、“睡”这样的具有相同子字信息的词语进行参数共享,也可以实现稀有词语甚至是句子的向量化表示。

根据上述说明书的揭示和教导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对本发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1