本申请涉及人工智能技术领域,尤其涉及一种问题生成模型的训练方法、问题生成方法及其相关设备。
背景技术:
随着自然语言处理技术的发展,出现了问题生成技术。问题生成研究如何生成基于自然语言的问题,是自然语言处理领域的一个重要议题。问题生成应用十分广泛,例如,机器知识库可以利用主动提问来构建或者补充知识库、扩充数据集;在教育领域,问题生成可以帮助学生来提问;在对话领域,问题生成可以作为冷启动来开始一个话题,或者通过提问来获得反馈,应用场景非常丰富。
现有的问题生成技术,通常是基于已知的语法规则,利用语法树来生成问题,用知识库中的实体对已有模板进行填充,这种技术迁移能力较差,在构建或迁移时需要大量的先验专家知识;另有的技术是利用深度学习模型,基于预先标注的答案进行问题生成,这种技术需要预先由人工标注大量数据,费时费力,而且标注的文本大多较短,影响问题的生成。由此可见现有的问题生成技术,生成问题的性能较差。
技术实现要素:
本申请实施例的目的在于提出一种提高问题生成性能的问题生成模型的训练方法、问题生成方法及其相关设备。为了解决上述技术问题,本申请实施例提供一种问题生成模型的训练方法,采用了如下所述的技术方案:
对初始模型进行预训练得到预训练语言模型,并在预训练中通过调整掩膜矩阵将所述初始模型中的网络实现单向模型、双向模型和序列到序列模型;
通过网络爬虫从网络页面中获取问答信息,所述问答信息包括问题文本和答案文本;
从所述答案文本中,提取与所述问题文本相关的关键实体;
将所述预训练语言模型中的网络设置为序列到序列模型,以得到用于中文文本生成的预训练语言模型;
将所述关键实体和所述答案文本输入预先构建的用于中文文本生成的预训练语言模型,得到所述预训练语言模型输出的预测问题文本;
根据所述预测问题文本和所述问题文本,确定预测误差;
根据所述预测误差对所述预训练语言模型进行调整,直至所述预测误差满足训练停止条件,得到问题生成模型。
一种问题生成方法,包括:
获取用于问题生成的源文本;
从所述源文本中筛选若干组源实体;
分别将所述若干组源实体输入问题生成模型;其中,所述问题生成模型是采用上述任一项问题生成模型的训练方法获取的模型;
获取所述问题生成模型基于所述若干组源实体生成的若干问题文本。
为了解决上述技术问题,本申请实施例还提供一种问题生成模型的训练装置,包括:
模型训练模块,用于对初始模型进行预训练得到预训练语言模型,并在预训练中通过调整掩膜矩阵将所述初始模型中的网络实现单向模型、双向模型和序列到序列模型;
信息获取模块,用于通过网络爬虫从网络页面中获取问答信息,所述问答信息包括问题文本和答案文本;
实体提取模块,用于从所述答案文本中,提取与所述问题文本相关的关键实体;
模型设置模块,用于将所述预训练语言模型中的网络设置为序列到序列模型,以得到用于中文文本生成的预训练语言模型;
文本输入模块,用于将所述关键实体和所述答案文本输入所述预训练语言模型,得到所述预训练语言模型输出的预测问题文本;
误差确定模块,用于根据所述预测问题文本和所述问题文本,确定预测误差;
模型调整模块,用于根据所述预测误差对所述预训练语言模型进行调整,直至所述预测误差满足训练停止条件,得到问题生成模型。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,包括存储器和处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述问题生成模型的训练方法的步骤;或者,所述处理器执行所述计算机程序时实现上述问题生成方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述问题生成模型的训练方法的步骤;或者,所述计算机程序被处理器执行时实现上述问题生成方法的步骤。
与现有技术相比,本申请的问题生成模型的训练方法实施例主要有以下有益效果:通过调整掩膜矩阵将初始模型中的网络实现三种语言模型,以对初始模型进行全方位的预训练,得到既能理解自然语言又能生成自然语言的预训练语言模型;通过网络爬虫可以从网络页面中获取到大量问答信息用于模型训练,问答信息包括问题文本和答案文本,并自动从答案文本中提取与问题文本相关的关键实体,无需依赖人工进行大量标注,提高了获取关键实体的效率,从而提高了模型训练的效率;将预训练语言模型中的网络调整为序列到序列模型,使得预训练语言模型面向文本生成式任务且具备良好的文本生成能力;将关键实体和答案文本输入预训练语言模型得到预测问题文本,根据预测问题文本和真实的问题文本间的误差对预训练语言模型进行调整从而得到问题生成模型,问题生成模型是对预训练语言模型依据下游任务进行微调得到,保证了生成问题的质量,从而提高了生成问题的性能。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2为根据本申请的问题生成模型的训练方法的一个实施例的流程图;
图3是图2中步骤201的一种具体实施方式的流程图;
图4是图2中步骤203的一种具体实施方式的流程图;
图5是图2中步骤205的一种具体实施方式的流程图;
图6为根据本申请的问题生成方法的一个实施例的流程图;
图7是图4中步骤302的一种具体实施方式的流程图;
图8是根据本申请的问题生成模型的训练装置的一个实施例的结构示意图;
图9是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的问题生成模型的训练方法一般由服务器执行,相应地,问题生成模型的处理装置一般设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的问题生成模型的训练方法的一个实施例的流程图。所述的问题生成模型的训练方法,包括以下步骤:
步骤201,对初始模型进行预训练得到预训练语言模型,并在预训练中通过调整掩膜矩阵将初始模型中的网络实现单向模型、双向模型和序列到序列模型。
在本实施例中,问题生成模型的训练方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式与终端进行通信。需要指出的是,上述无线连接方式可以包括但不限于3g/4g连接、wifi连接、蓝牙连接、wimax连接、zigbee连接、uwb(ultrawideband)连接、以及其他现在已知或将来开发的无线连接方式。
其中,初始模型可以是未经过预训练的模型。掩膜矩阵可以是初始模型中网络的mask矩阵,用于控制训练中所用到的上下文信息;单向模型即单向lm,双向模型即双向lm,序列到序列模型即seq2seqlm。
具体地,服务器先获取预先构建的初始模型,并对初始模型进行预训练。在预训练的过程中,服务器通过调整初始模型中网络的掩膜矩阵,将初始模型设置为三种不同的语言模型,包括单向模型、双向模型和序列到序列模型,以此丰富预训练中得到的信息,得到既能理解自然语言、又能生成自然语言的预训练语言模型。
步骤202,通过网络爬虫从网络页面中获取问答信息,问答信息包括问题文本和答案文本。
具体地,用户可以在终端对网络爬虫将进行配置,终端根据用户输入的爬虫配置信息生成信息获取指令,并将信息获取指令发送至服务器。配置的网络爬虫用于从万维网中爬取信息。爬虫配置信息可以包括页面的网址、信息的储存地址等。
服务器接收到信息获取指令后,提取信息获取指令中的爬虫配置信息,根据爬虫配置信息生成网络爬虫。服务器运行生成的网络爬虫,网络爬虫从网络页面中爬取问答信息,服务器将网络爬虫爬取到的问答信息保存至数据库中。其中,问答信息可以由问题文本以及与问题文本对应的答案文本组成。
在一个实施例中,网络爬虫可以是基于scrapy的网络爬虫。scrapy是python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。基于scrapy的网络爬虫可以从知乎、百度知道等公开的问答社区网站上爬取大量问答信息,并将爬取到的问答信息以json文件的形式存放在服务器的数据库中。
在一个实施例中,网络页面中的一个问题有至少一个答案,对至少一个答案爬取后得到至少一个子答案文本;一个问题文本所对应的至少一个子答案文本构成与该问题文本对应的答案文本。
在一个实施例中,通过网络爬虫从网络页面中获取问答信息的步骤具体包括:接收目标文本;将目标文本进行拆分得到若干语句;生成与若干语句相同数量的网络爬虫;将若干语句分别嵌入各网络爬虫;运行各网络爬虫,得到各网络爬虫根据嵌入的语句从网络页面中爬取到的问答信息。
其中,目标文本可以是指示网络爬虫爬取问答信息的文本。
具体地,服务器接收用户通过终端发送的目标文本,根据标点符号对目标文本进行句级拆解,得到若干语句。服务器生成与拆分得到的语句相同数量的网络爬虫,将拆分得到语句分别嵌入到各网络爬虫的代码层中。服务器运行嵌入语句后的网络爬虫,网络爬虫通过分列式爬取从网络页面中爬取与嵌入的语句相关的问答信息。
本实施例中,接收到目标文本后,将目标文本进行拆分得到若干语句,将若干语句嵌入不同的网络爬虫,运行网络爬虫后可以爬取到与嵌入语句相关的问答信息。
步骤203,从答案文本中,提取与问题文本相关的关键实体。
其中,关键实体可以是答案文本中的实体,关键实体与问题文本存在相关性。
具体地,服务器对问题文本和答案文本分别进行分词,各自得到多个实体。服务器识别实体的词性,筛选预设词性的实体,预设词性可以是动词和名词。服务器将从问题文本和答案文本中筛选到的关键实体进行精准匹配和模糊匹配,将答案文本中能够进行匹配的实体作为关键实体。
在一个实施例中,答案文本包括至少一个子答案文本;服务器分别从子答案文本中提取与问题文本相关的关键实体,并将子答案文本以及从子答案文本中提取到的关键实体相关联。
在一个实施例中,从问答信息内的问题文本和答案文本中提取关键实体的步骤之前还包括:通过正则表达式匹配问答信息,得到待清洗字符串;删除匹配到的待清洗字符串以对问答信息进行数据清洗。
其中,待清洗字符串可以是问答信息中无意义的字符串。
具体地,爬取到的问答信息中存在无意义内容,为提高有效内容的比例,服务器通过预设的正则表达式匹配问答信息,从而得到问答信息中的待清洗字符串,并将匹配到的待清洗字符串进行删除,以对问答信息进行数据清洗。正则表达式为预先配置好的,一种正则表达式可以对应一种无意义的字符串。
举例说明,当从知乎爬取问答信息时,问答信息中可能包括问答信息中的超链接、分割线、无效字符;知乎专栏中的“来源:......”、“作者:......”等与文本主体无关的内容。当从百度知道爬取问答信息时,问答信息中可能包括大量的无意义字符等。服务器可通过正则表达式将上述无意义的内容进行删除。
本实施例中,通过正则表达式匹配问答信息从而得到待清洗字符串,并删除匹配到的待清洗字符串,实现对问答信息的数据清洗,提高了问答信息中有效内容的比例。
步骤204,将预训练语言模型中的网络设置为序列到序列模型,以得到用于中文文本生成的预训练语言模型。
其中,预训练语言模型(unifiedpre-trainedlanguagemodel,unilm)是一种能够同时处理自然语言理解和自然语言生成的模型。
预训练语言模型的预训练采用3种无监督的语言模型目标:单向模型即单向lm(包括从左到右和从右到左)、双向模型即双向lm和序列到序列模型即sequence-to-sequencelm(seq2seqlm),其中lm为languagemodel。
预训练语言模型采用一个共享参数的transformer网络,同时还使用了特定的self-attentionmasks用以控制预测时所用到的上下文信息。在预训练时,通过调整transformer网络中的掩膜(mask)矩阵以实现上述三种lm。
在依据下游任务进行微调时,可以将预训练语言模型视为单向的encoder、双向的encoder或者sequence-to-sequence模型,通过调整transformer网络中的掩膜矩阵,以适应不同的下游任务(自然语言理解和生成任务)。
seq2seq是一个encoder-deocder结构的模型,具备良好的文本生成效果;seq2seq的输入是一个序列,输出也是一个序列。encoder将一个可变长度的输入序列变为固定长度的向量,decoder将这个固定长度的向量解码成可变长度的输出序列。
具体地,服务器获取预训练语言模型,预训练语言模型用于中文处理,可以用于自然语言理解,也可以用于文本生成。本申请需要将预训练语言模型微调为问题生成的模型,因此需要设置预训练语言模型中transformer网络的掩膜(mask)矩阵,从而实现序列到序列模型即seq2seqlm。在seq2seqlm的mask矩阵中,左边的矩阵元素均为0,表示既可以得到上文的信息,又可以得到下文的信息;右边的矩阵中,右上角的矩阵元素为无穷大,表示只可以得到上文的信息。
步骤205,将关键实体和答案文本输入预训练语言模型,得到预训练语言模型输出的预测问题文本。
其中,预测问题文本可以是预训练语言模型依据关键实体和答案文本生成的与答案文本相关的问题文本。
具体地,将预训练语言模型中的网络设置为序列到序列模型后,服务器依据关键实体、问题文本和答案文本对预训练语言模型进行微调。预训练语言模型将关键实体和问题文本转化为向量,对向量进行处理,输出预测问题文本。
在一个实施例中,预训练语言模型将关键实体和问题文本以字为单位进行切分,依据字符转化表将每个字转化为向量,对向量进行处理。字符转化表为预先创建的,确定了字与向量之间的对应关系。服务器对字进行转化时,在字符转化表中查询字,将查询到的字所对应的向量作为字转化后的向量。
步骤206,根据预测问题文本和问题文本,确定预测误差。
需要强调的是,为进一步保证上述预测问题文本的私密和安全性,上述预测问题文本还可以存储于一区块链的节点中。
具体地,问答信息中的问题文本是预训练语言模型的目标输出。服务器获取预训练语言模型输出的预测问题文本,以及问答信息中的问题文本,根据预设的误差公式计算预测误差。
进一步的,在一个实施例中,预测误差的计算公式为:
其中,yi为问题文本中,第i个字在依据字符转化表转化为向量时的标识符;logitsi为预测问题文本中第i个字在字符转化表中的分值;softmaxloss为预测问题文本与问题文本之间的预测误差。
具体地,在字符转化表中,每个字可以视作token,每一个token在字符转化表中拥有唯一的标识即标识符token_id。举例说明,当字符转化表大小为20000即字符转化表记载了20000个字与向量之间的转化关系,则token_id的范围是0-19999。预训练语言模型就是为了得到预测问题文本的token_id排列顺序。
假设问题文本包含n(n为正整数)个字。预训练语言模型对答案文本和关键实体进行编码处理,得到n个h,其中h是将要生成的预测问题文本中的字。预训练语言模型计算h在字符转化表中每个字处的得分logits,可以理解,得分logits相当于h与字符表中每个字的相似度,选取具有最高得分的字,作为h所对应的字。
预训练语言模型确定预测问题文本中的每个字及其对应的得分logits后,计算预测误差,yi是爬取到的问题文本中第i个字的标识符token_id,logitsi是预测问题文本中第i个字的得分,通过交叉熵计算得到预测误差。
本实施例中,通过误差公式可以准确地衡量预测误差,保证了可以根据误差对预训练语言模型进行准确调整。
步骤207,根据预测误差对预训练语言模型进行调整,直至预测误差满足训练停止条件,得到问题生成模型。
其中,训练停止条件是停止模型训练的条件,训练停止条件可以是预测误差小于预定的误差阈值。
具体地,终端获取预定的误差阈值,比较预测误差与误差阈值。当预测误差大于等于误差阈值时,终端按照减小预测误差的方向,调整预训练语言模型中的模型参数。终端每对预训练语言模型调整一次参数,重新将关键实体和答案文本进行处理得到预测问题文本,根据预测问题文本和问题文本得到预测误差,比较预测误差与误差阈值,若预测误差仍大于等于误差阈值,再次对模型进行调整,如此循环迭代,直至预测误差小于误差阈值时,停止训练,将停止训练时的预训练语言模型作为问题生成模型。
调整预训练语言模型中每一层的模型参数时,需要当前层的输出以及反向传播回来的梯度,而每层的输出保存在显存中。当预训练语言模型中的transformr网络层数较多时,比如当transformr网络为24层时,需要保存24层的输出,占用了大量的显存资源。为此,可以仅保存部分层的输出,在反向传播需要更新模型参数时,可以通过保存的部分层的输出计算当前层的输出,以此节约显存资源,降低模型训练对硬件设备的要求。
举例说明,transformr网络为24层,现保存
本实施例中,通过调整掩膜矩阵将初始模型中的网络实现三种语言模型,以对初始模型进行全方位的预训练,得到既能理解自然语言又能生成自然语言的预训练语言模型;通过网络爬虫可以从网络页面中获取到大量问答信息用于模型训练,问答信息包括问题文本和答案文本,并自动从答案文本中提取与问题文本相关的关键实体,无需依赖人工进行大量标注,提高了获取关键实体的效率,从而提高了模型训练的效率;将预训练语言模型中的网络调整为序列到序列模型,使得预训练语言模型面向文本生成式任务且具备良好的文本生成能力;将关键实体和答案文本输入预训练语言模型得到预测问题文本,根据预测问题文本和真实的问题文本间的误差对预训练语言模型进行调整从而得到问题生成模型,问题生成模型是对预训练语言模型依据下游任务进行微调得到,保证了生成问题的质量,从而提高了生成问题的性能。
进一步的,如图3所示,上述步骤201具体包括:
步骤2011,获取用于预训练的初始模型以及多组预训练样本集。
其中,预训练样本集可以是用于训练初始模型的数据集。
具体地,服务器中预先存储有构建好的初始模型,以及用于对初始模型进行预训练的多组预训练样本集。服务器获取初始模型以及预训练样本集,需要先对初始模型进行预训练,从而得到预训练语言模型。
步骤2012,随机生成各组预训练样本集所对应的掩膜标识;掩膜标识对应的掩膜矩阵实现单向模型、双向模型和序列到序列模型。
其中,掩膜标识可以是模型中网络的掩膜矩阵的标识。
具体地,构建的初始模型为transformer网络,transformer网络可以是12层,也可以是24层。预训练采用3种无监督的语言模型目标:单向lm(包括从左到右和从右到左)、双向lm和seq2seqlm。
对于每一组训练样本集,服务器随机生成训练样本集的掩膜标识,掩膜标识与掩膜矩阵相对应,服务器根据掩膜矩阵,将transformer网络设置为不同的lm;通过随机生成每组训练样本集的掩膜标识,实现对不同lm的均等预训练。
在一个实施例中,初始模型中模型参数为半精度,随机生成各组预训练样本集所对应的掩膜标识的步骤之前,还包括:将初始模型中layernorm层和embedding层的模型参数设置为单精度。
其中,半精度即半精度浮点数(fp16)是一种计算机使用的二进制浮点数数据类型。半精度浮点数使用2字节(16位)存储;而单精度浮点数(fp32)占用4个字节(32位)存储空间。
具体地,模型训练对计算机的硬件设备资源要求较高,且训练时间较长,为了提高训练速度并降低gpu(graphicsprocessingunit,图形处理器)占用,初始模型中的模型参数为半精度;为避免初始模型不收敛,将初始模型中embedding层的模型参数设置为单精度,为避免训练过程中求均值、方差等操作精度不足带来较大损失,将初始模型中layernorm层的模型参数设置为单精度。
本实施例中,将初始模型中的模型参数设置为半精度,而layernorm层和embedding层的模型参数设置为单精度,提高了模型训练的速度和准确性。
步骤2013,将各组预训练样本集分别输入初始模型,并根据预训练样本集所对应的掩膜标识调整初始模型中网络的掩膜矩阵。
具体地,服务器将预训练样本集依次输入初始模型。当输入一组预训练样本集后,服务器根据预训练样本集对应的掩膜标识调整初始模型中transformer网络的掩膜矩阵,从而将transformer网络设置为单向lm、双向lm或seq2seqlm。
步骤2014,根据输入的预训练样本集对掩膜矩阵调整后的初始模型依次进行预训练,得到预训练语言模型。
具体地,服务器对掩膜矩阵进行调整后,根据预训练样本集对初始矩阵进行预训练;当根据一组预训练样本集训练完成后,再输入下一组预训练样本集,调整掩膜矩阵,进行下一轮预训练。当全部预训练样本集完成训练后,服务器得到预训练语言模型。
在预训练过程中,transformer网络在单向lm(包括从左到右和从右到左)、双向lm和seq2seqlm中随机切换,transformer网络中的各层在多轮预训练中共享模型参数。
本实施例中,随机生成预训练样本集的掩膜标识,在根据预训练样本集预训练初始模型时,根据掩膜标识调整初始模型中的掩膜矩阵,使得初始模型平均地完成3种语言模型的预训练目标,保证了预训练的科学性。
进一步的,如图4所示,上述步骤203可以包括:
步骤2031,从问答信息内的问题文本和答案文本中,分别提取文本实体。
其中,文本实体可以是问题文本和答案文本中的实体。
具体地,服务器可以对问题文本和答案文本进行分词,得到多个实体。服务器可以借助pkuseg进行分词,将问题文本和答案文本以词为单位进行分割。pkuseg是由北京大学发布的一款开源的中文分词工具包,具有很高的分词准确率。
分词后,从实体中去除停用词,停用词即stopwords,是一些无明显意义、可以删除的词,例如“在”、“的”和“是”。接着提取词性为动词和名词的实体作为文本实体。
步骤2032,计算答案文本中的各文本实体与问题文本中的各文本实体的相似度。
具体地,答案文本中的文本实体组成第一数据集,问题文本中的文本实体组成第二数据集,服务器计算第一数据集中每个实体与第二数据集中每个实体间的相似度。服务器可以通过精确匹配和模糊匹配来计算相似度,能够精确匹配的文本实体间的相似度为100%。在进行模糊匹配时,服务器可以将文本实体转化为向量,计算向量之间的余弦相似度;或者计算文本实体之间的文本编辑距离(又称levenshtein距离,是将一个字符串转化成另一个字符串所需的最少操作次数,操作包括插入、删除、替换),文本编辑距离越短,相似度越高。
步骤2033,从答案文本的各文本实体中,提取相似度符合预设相似度阈值的文本实体作为关键实体。
具体地,假设第一数据集中有m(m为正整数)个文本实体,第二数据集中有n(n为正整数)个文本实体,则计算得到m*n组相似度。服务器获取预设的相似度阈值,从m*n组相似度中,选取相似度数值大于相似度阈值的相似度,每个选取到的相似度所对应的两个文本实体中,将来自第一数据集的文本实体作为关键实体。服务器还可以将m*n组相似度按照从大到小的顺序进行排列,按照排列顺序选取预设数量的相似度,将选取到的相似度对应的第一数据集文本实体作为关键实体。
举例说明,问题文本为“复旦大学在国内的排名大概是多少?”,通过pkuseg切分为{“复旦大学”,“在”,“国内”,“的”,“排名”,“大概”,“是”,“多少”,“?”}。分词后去除停用词{“在”、“的”,“是”},再提取动词和名词{“复旦大学”,“排名”},并对答案文本进行同样的处理。假设答案文本中提取到实体“复旦”,计算“复旦大学”和“复旦”间的相似度满足相似度阈值,将“复旦”作为关键实体。
本实施例中,提取到的关键实体与问题文本和答案文本均高度关联,可以辅助预训练语言模型输出问题文本。
进一步的,答案文本包括至少一个子答案文本,如图5所示,上述步骤205可以包括:
步骤2051,将至少一个子答案文本以及与子答案文本对应的关键实体输入预训练语言模型,得到至少一个三维字向量矩阵。
具体地,一个问题文本对应的答案文本可以由至少一个子答案文本组成,每个子答案文本均提取得到关键实体。
服务器进行批处理(batch),一个问题文本对应的至少一个子答案文本以及与子答案文本对应的关键实体作为一个batch进行处理。
服务器通过补零的方式将子答案文本的文本长度(即子答案文本中字符的个数)补齐,再依据字符转化表转化为one-hot向量(又称“独热编码”),得到one-hot矩阵。假设子答案文本数量为batch,补齐后文本长度为length,字符转化表中字符个数为m,则one-hot矩阵的三个维度依次为batch、length和m,其中batch表示one-hot矩阵来自哪一个子答案文本,length为one-hot矩阵的行数,m为one-hot矩阵的列数。
服务器需要将one-hot向量转换为字向量,将三维的one-hot矩阵输入预训练语言模型的embedding层,将m维度替换为dim维度,得到三维字向量矩阵;dim为特征维度,在一个模型中dim是统一的常量,例如dim可以取512、768或者1024。
步骤2052,将转化得到的三维字向量矩阵合并为二维字向量矩阵。
具体地,为了提高计算效率,将各三维字向量矩阵进行合并,得到一个更大的矩阵即二维字向量矩阵,矩阵合并取消了batch维度,使得预训练语言模型中对矩阵的计算变为对二维矩阵的运算,提高了计算速度,减少了训练时间。
步骤2053,通过预训练语言模型对二维字向量矩阵进行处理,得到预训练语言模型输出的预测问题文本,其中,预测问题文本存储在区块链中。
具体地,服务器通过二维字向量矩阵对预训练语言模型进行处理,得到预测问题文本中每个字处的得分logits,在每一个字处,选取具有最高得分的字作为该处的字,从而输出预测问题文本。服务器还可以将预测问题文本上传至区块链中进行存储,以记录预训练语言模型的训练过程,同时保证预测问题文本的私密性和安全性。
本实施例中,将各子答案文本以及对应的关键实体转换为多个三维字向量矩阵,再将三维字向量矩阵合并为二维字向量矩阵,使得预训练语言模型对二维字向量矩阵进行处理,提高了输出预测问题文本的效率。
在一个实施例中,如图6所示,提供了一种问题生成方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤301,获取用于问题生成的源文本。
具体地,问题生成模型依据输入的文本生成问题文本。用户通过终端向服务器发送源文本,问题生成模型依据源文本生成问题文本。
在一个实施例中,终端还可以向服务器发送语音数据,服务器通过语音识别将语音数据转化为文本数据,得到源文本。
步骤302,从源文本中筛选若干组源实体。
具体地,服务器将源文本进行分词得到多个实体。服务器可以随机筛选多个实体得到一组源实体,可以筛选若干组源实体。服务器还可以根据终端发送的指示信息筛选若干组源实体。
步骤303,分别将若干组源实体输入问题生成模型;其中,问题生成模型是采用上述问题生成模型的训练方法获取的模型。
具体地,服务器将筛选到的若干组源实体输入至问题生成模型,问题生成模型将源实体以字符为单位转化为向量,进行问题生成的处理。问题生成模型是采用上述问题生成模型的训练方法获取的模型。
服务器在生成问题文本时,可以根据整段源文本生成问题文本,也可以根据从源文本中提取到的若干组源实体生成问题文本。
步骤304,获取问题生成模型基于若干组源实体生成的若干问题文本。
具体地,问题生成模型基于一组源实体进行处理,生成一组问题文本。当存在若干组源实体时,服务器生成与若干组源实体分别对应的问题文本。
在一个实施例中,服务器将生成的若干问题文本发送至终端,由用户通过终端选取问题文本进行后续使用。
本实施例中,从用于问题文本生成的源文本中筛选若干组源实体,可以通过问题生成模型,依据不同的源实体生成不同的问题文本,提高了生成问题文本的灵活性。
进一步的,如图7所示,步骤302可以包括:
步骤3021,识别源文本中的文本实体。
具体地,服务器接收到源文本后,对源文本进行分词得到多个实体,识别各个实体的词性,将符合预设词性的实体作为文本实体。其中,文本实体的词性可以包括名词、动词、形容词等。
步骤3022,从识别到的文本实体中随机抽取若干组文本实体,得到若干组源实体。
具体地,服务器识别到文本实体后,随机抽取若干组文本实体,将每一组文本实体作为一组源实体,得到多组源实体。
步骤3023,根据预设的语义知识库对源文本中的文本实体进行语义标注,得到语义标注结果。
具体地,服务器中预设有语义知识库。服务器根据语义知识库,识别各文本实体的语义,并对各文本实体进行语义标注,得到语义标注结果。
步骤3024,根据语义标注结果,筛选符合预设语义范围的若干文本实体,得到若干组源实体。
具体地,根据语义标注结果可以确定文本实体所表达的语义信息。服务器获取预设语义范围,筛选语义信息符合预设语义范围的若干文本实体,得到若干组源实体。预设语义范围可以来自终端发送的指示信息。
举例说明,当用户想得到金融领域的问题文本时,将指示信息中的预设语义范围设置为金融领域,则服务器筛选属于金融领域的文本实体,得到源实体。
本实施例中,识别源文本中的文本实体,通过随机抽取或者根据语义抽取文本实体,保证了文本实体抽取的灵活性,从而保证了生成问题文本的灵活性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等非易失性存储介质,或随机存储记忆体(randomaccessmemory,ram)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图8,作为对上述图2所示方法的实现,本申请提供了一种问题生成模型的训练装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图8所示,本实施例所述的问题生成模型的训练装置400包括:模型训练模块401、信息获取模块402、实体提取模块403、模型设置模块404、文本输入模块405、误差确定模块406以及模型调整模块407。其中:
模型训练模块401,用于对初始模型进行预训练得到预训练语言模型,并在预训练中通过调整掩膜矩阵将初始模型中的网络实现单向模型、双向模型和序列到序列模型。
信息获取模块402,用于通过网络爬虫从网络页面中获取问答信息,所述问答信息包括问题文本和答案文本。
实体提取模块403,用于从所述答案文本中,提取与所述问题文本相关的关键实体。
模型设置模块404,用于将预训练语言模型中的网络设置为序列到序列模型,以得到用于中文文本生成的预训练语言模型。
文本输入模块405,用于将关键实体和答案文本输入预训练语言模型,得到预训练语言模型输出的预测问题文本。
误差确定模块406,用于根据预测问题文本和问题文本,确定预测误差。
模型调整模块407,用于根据预测误差对预训练语言模型进行调整,直至预测误差满足训练停止条件,得到问题生成模型。
本实施例中,通过调整掩膜矩阵将初始模型中的网络实现三种语言模型,以对初始模型进行全方位的预训练,得到既能理解自然语言又能生成自然语言的预训练语言模型;通过网络爬虫可以从网络页面中获取到大量问答信息用于模型训练,问答信息包括问题文本和答案文本,并自动从答案文本中提取与问题文本相关的关键实体,无需依赖人工进行大量标注,提高了获取关键实体的效率,从而提高了模型训练的效率;将预训练语言模型中的网络调整为序列到序列模型,使得预训练语言模型面向文本生成式任务且具备良好的文本生成能力;将关键实体和答案文本输入预训练语言模型得到预测问题文本,根据预测问题文本和真实的问题文本间的误差对预训练语言模型进行调整从而得到问题生成模型,问题生成模型是对预训练语言模型依据下游任务进行微调得到,保证了生成问题的质量,从而提高了生成问题的性能。
在本实施例的一些可选的实现方式中,上述模型训练模块401包括:获取子模块、标识生成子模块、输入子模块和预训练子模块,其中:
获取子模块,用于获取用于预训练的初始模型以及多组预训练样本集;
标识生成子模块,用于随机生成各组预训练样本集所对应的掩膜标识;掩膜标识对应的掩膜矩阵实现单向模型、双向模型和序列到序列模型;
输入子模块,用于将各组预训练样本集分别输入初始模型,并根据预训练样本集所对应的掩膜标识调整初始模型中网络的掩膜矩阵;
预训练子模块,用于根据输入的预训练样本集对掩膜矩阵调整后的初始模型依次进行预训练,得到预训练语言模型。
在本实施例的一些可选的实现方式中,初始模型中模型参数为半精度,上述模型训练模块401还包括参数设置子模块,参数设置子模块用于将初始模型中layernorm层和embedding层的模型参数设置为单精度。
在本实施例的一些可选的实现方式中,上述实体提取模块403进一步用于:从问答信息内的问题文本和答案文本中,分别提取文本实体;计算答案文本中的各文本实体与问题文本中的各文本实体的相似度;从答案文本的各文本实体中,提取相似度符合预设相似度阈值的文本实体作为关键实体。
在本实施例的一些可选的实现方式中,答案文本包括至少一个子答案文本,上述文本输入模块405进一步用于:将至少一个子答案文本以及与子答案文本对应的关键实体输入预训练语言模型,得到至少一个三维字向量矩阵;将转化得到的三维字向量矩阵合并为二维字向量矩阵;通过预训练语言模型对二维字向量矩阵进行处理,得到预训练语言模型输出的预测问题文本,其中,预测问题文本存储在区块链中。
在一个实施例中,提供了一种问题生成装置,包括:源文本获取模块、源实体抽取模块、源实体输入模块和问题生成模块,其中:
源文本获取模块,用于获取用于问题生成的源文本。
源实体抽取模块,用于从源文本中筛选若干组源实体。
源实体输入模块,用于分别将若干组源实体输入问题生成模型;其中,问题生成模型是采用上述问题生成模型的训练方法获取的模型。
问题生成模块,用于获取问题生成模型基于若干组源实体生成的若干问题文本。
本实施例中,从用于问题文本生成的源文本中筛选若干组源实体,可以通过问题生成模型,依据不同的源实体生成不同的问题文本,提高了生成问题文本的灵活性。
在本实施例的一些可选的实现方式中,上述源实体抽取模块进一步用于:识别源文本中的文本实体;从识别到的文本实体中随机抽取若干组文本实体,得到若干组源实体;或者,根据预设的语义知识库对源文本中的文本实体进行语义标注,得到语义标注结果;根据语义标注结果,筛选符合预设语义范围的若干文本实体,得到若干组源实体。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图9,图9为本实施例计算机设备基本结构框图。
所述计算机设备5包括通过系统总线相互通信连接存储器51、处理器52、网络接口53。需要指出的是,图中仅示出了具有组件51-53的计算机设备5,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器51至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器51可以是所述计算机设备5的内部存储单元,例如该计算机设备5的硬盘或内存。在另一些实施例中,所述存储器51也可以是所述计算机设备5的外部存储设备,例如该计算机设备5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器51还可以既包括所述计算机设备5的内部存储单元也包括其外部存储设备。本实施例中,所述存储器51通常用于存储安装于所述计算机设备5的操作系统和各类应用软件,例如问题生成模型的训练方法、或问题生成方法的程序代码等。此外,所述存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器52在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制所述计算机设备5的总体操作。本实施例中,所述处理器52用于运行所述存储器51中存储的程序代码或者处理数据,例如运行问题生成模型的训练方法、或问题生成方法的程序代码。
所述网络接口53可包括无线网络接口或有线网络接口,该网络接口53通常用于在所述计算机设备5与其他电子设备之间建立通信连接。
本实施例中提供的计算机设备可以执行上述问题生成模型的训练方法的步骤。此处问题生成模型的训练方法的步骤可以是上述各个实施例的问题生成模型的训练方法中的步骤。
本实施例中,通过调整掩膜矩阵将初始模型中的网络实现三种语言模型,以对初始模型进行全方位的预训练,得到既能理解自然语言又能生成自然语言的预训练语言模型;通过网络爬虫可以从网络页面中获取到大量问答信息用于模型训练,问答信息包括问题文本和答案文本,并自动从答案文本中提取与问题文本相关的关键实体,无需依赖人工进行大量标注,提高了获取关键实体的效率,从而提高了模型训练的效率;将预训练语言模型中的网络调整为序列到序列模型,使得预训练语言模型面向文本生成式任务且具备良好的文本生成能力;将关键实体和答案文本输入预训练语言模型得到预测问题文本,根据预测问题文本和真实的问题文本间的误差对预训练语言模型进行调整从而得到问题生成模型,问题生成模型是对预训练语言模型依据下游任务进行微调得到,保证了生成问题的质量,从而提高了生成问题的性能。
本实施例中提供的计算机设备可以执行上述问题生成方法的步骤。此处问题生成方法的步骤可以是上述各个实施例的问题生成方法中的步骤。
本实施例中,从用于问题文本生成的源文本中筛选若干组源实体,可以通过问题生成模型,依据不同的源实体生成不同的问题文本,提高了生成问题文本的灵活性。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有问题生成模型的训练程序,所述问题生成模型的训练程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的问题生成模型的训练方法的步骤。
本实施例中,通过调整掩膜矩阵将初始模型中的网络实现三种语言模型,以对初始模型进行全方位的预训练,得到既能理解自然语言又能生成自然语言的预训练语言模型;通过网络爬虫可以从网络页面中获取到大量问答信息用于模型训练,问答信息包括问题文本和答案文本,并自动从答案文本中提取与问题文本相关的关键实体,无需依赖人工进行大量标注,提高了获取关键实体的效率,从而提高了模型训练的效率;将预训练语言模型中的网络调整为序列到序列模型,使得预训练语言模型面向文本生成式任务且具备良好的文本生成能力;将关键实体和答案文本输入预训练语言模型得到预测问题文本,根据预测问题文本和真实的问题文本间的误差对预训练语言模型进行调整从而得到问题生成模型,问题生成模型是对预训练语言模型依据下游任务进行微调得到,保证了生成问题的质量,从而提高了生成问题的性能。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有问题生成程序,所述问题生成程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的问题生成方法的步骤。
本实施例中,从用于问题文本生成的源文本中筛选若干组源实体,可以通过问题生成模型,依据不同的源实体生成不同的问题文本,提高了生成问题文本的灵活性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。