一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

自然语言编程方法、装置、设备及存储介质与流程

2021-10-24 06:25:00 来源:中国专利 TAG:自然语言 装置 编程 计算机 方法


1.本发明涉及计算机技术领域,特别是涉及一种自然语言编程方法、装置、设备及存储介质。


背景技术:

2.此处的陈述仅提供与本发明有关的背景信息,而不必然地构成现有技术。
3.为了驱动计算机运行,需要编程语言。例如,为了驱动计算机进行加法运算,需要告诉计算机1 1=,然后计算机进行运行得到2。最初图灵设计了一个纸带模型,通过打孔纸带编码0和1,给计算机输入指令。后来形成了汇编语言,把指令用单词简单记忆,例如add 1 1,表示1 1。再后来人们觉得汇编语言还是麻烦,就形成了高级语言,比如c语言和python。编程语言越来越简单,越来越接近自然语言,但是还是需要用户学习和理解才能够使用。
4.另一方面,计算机语言多数需要英文编码,对其他语言很不友好,很多国家的用户不能使用自己的语言来编程。于是有几种中文编程的方式问世,比如“周蟒”和文言编程,可以用中文编程。作为利用“周蟒”编程的一个例子,输入:
5.>>>印出'哈啰,世界'
6.则在执行上述指令后会在屏幕上展示“哈啰,世界”的文字。作为利用文言编程的一个例子,输入:
7.吾有一言曰“问天地好在”书之
8.则在执行上述指令后会输出“问天地好在”。
9.另外,传统的编程语言都需要遵守严格的语法,些许语法错误就会造成运行错误。并且传统的编程语言无法直接理解复杂的工作,例如编写一个春联,对我们人类很容易理解,对于计算机而言却并非如此。


技术实现要素:

10.本发明的目的在于提供一种新的编程方法、装置、设备及存储介质,实现利用自然语言来进行编程。
11.本发明的目的采用以下技术方案来实现。依据本发明提出的一种自然语言编程方法,包括以下步骤:接收用户输入的自然语言描述的目标场景,所述目标场景包括人物和目标任务;将所述目标场景输入至预先训练好的语言模型;利用所述语言模型,生成与所述人物执行所述目标任务的结果对应的文本,作为编程结果文本。
12.本发明的目的还可以采用以下的技术措施来进一步实现。
13.前述的自然语言编程方法,在训练所述语言模型的过程中,输入至所述语言模型的训练数据包括大规模的自然语言描述的场景,所述场景包括人物和任务。
14.前述的自然语言编程方法,在训练所述语言模型的过程中,输入至所述语言模型的训练数据包括目标文体的语料;其中,所述目标文体的语料包括小说语料、故事语料和/或新闻语料。
15.前述的自然语言编程方法,在将所述训练数据输入至所述语言模型进行训练之前,还包括,将所述训练数据拆分为多个子训练数据,以区分不同场景。
16.前述的自然语言编程方法,所述将所述训练数据拆分为多个子训练数据包括:识别语料中的地点词、和/或时间词、和/或章节分隔词,其中,所述章节分隔词用于描述章、节、回、幕的起始或终结;根据所述地点词、和/或所述时间词、和/或所述章节分隔词,将所述语料的内容切分为多个部分,每个部分作为一个所述子训练数据。
17.前述的自然语言编程方法,在将所述训练数据输入至所述语言模型进行训练之前、和/或在所述将所述目标场景输入至预先训练好的语言模型之前,还包括:判断用作训练数据的语料和/或所述目标场景的文体类型,将得到判断结果记录于文体类型字段,用以根据所述文体类型字段进行模型训练或模型推断;和/或,在将所述训练数据输入至所述语言模型进行训练之前,还包括:判断语料的文体类型,选取符合目标文体的语料用作训练数据。
18.前述的自然语言编程方法,所述语言模型的训练过程包括:将所述训练数据中的部分内容输入至当前的语言模型,利用所述当前的语言模型推断所述训练数据中的所述部分内容的后文,并将推断出的后文与实际的后文进行比对,以反向传播方式根据比对结果调整所述当前的语言模型的参数;所述利用所述语言模型,生成与所述人物执行所述目标任务的结果对应的文本包括:将所述目标场景输入至预先训练好的语言模型,利用所述预先训练好的语言模型推断所述目标场景的后文。
19.前述的自然语言编程方法,所述方法还包括,预先设置词表;在进行所述的将所述训练数据中的部分内容输入至当前的语言模型之前,所述语言模型的训练过程包括:对用于训练的原始语料进行提取文本和分词器处理,以将所述原始语料的文本的分割成多个字词单元,确定所述原始语料的每个字词单元在所述词表中对应的标识以得到所述原始语料的分词标识向量,将所述原始语料的所述分词标识向量作为训练数据来训练所述语言模型;所述语言模型的训练过程具体包括:所述当前的语言模型根据所述训练数据中的部分内容的所述分词标识向量输出对应的后文概率向量;将模型输出的与所述部分内容对应的所述后文概率向量、与所述部分内容的实际后文的所述分词标识向量作差,得到误差向量;和,根据所述误差向量对所述当前的语言模型的参数进行加权;所述将所述目标场景输入至预先训练好的语言模型包括:对所述目标场景进行提取文本和分词器处理,以将所述目标场景的文本的分割成多个字词单元,并确定所述目标场景的每个字词单元在所述词表中对应的标识以得到所述目标场景的分词标识向量,将所述目标场景的所述分词标识向量发送至预先训练好的语言模型;所述利用所述语言模型推断所述目标场景的后文包括:预先训练好的所述语言模型根据所述目标场景的所述分词标识向量输出对应的后文概率向量;和,根据所述后文概率向量确定所述目标场景的后文;其中,所述后文概率向量的每一维对应词表中的一个字词单元,所述后文概率向量的每一维的取值表示所述语言模型推断出的词表中的对应的字词单元被选取为后文的概率。
20.前述的自然语言编程方法,所述利用所述当前的语言模型推断所述训练数据中的所述部分内容的后文、和/或所述利用所述预先训练好的语言模型推断所述目标场景的后文,包括:逐个字或逐个词地依次推断后文。
21.前述的自然语言编程方法,所述当前的语言模型根据所述训练数据中的部分内容
的所述分词标识向量输出对应的后文概率向量、和/或所述预先训练好的所述语言模型根据所述目标场景的所述分词标识向量输出对应的后文概率向量,包括:对所述语言模型推断出的词表中的各个字词单元被选取为后文的概率进行平滑处理,以得到平滑后的后文概率向量;所述根据所述后文概率向量确定所述目标场景的后文包括:根据平滑后的后文概率向量确定词表中的概率最高的多个字词单元,根据所述概率最高的多个字词单元确定后文。
22.前述的自然语言编程方法,所述语言模型的训练过程还包括:在进行所述分词器处理之前,将用作训练数据的语料翻译为目标语种的语料,以便利用翻译后的语料训练所述语言模型;所述将所述目标场景输入至预先训练好的语言模型还包括:在进行所述分词器处理之前,将接收到的所述目标场景翻译为目标语种的自然语言描述的目标场景,以便所述语言模型对翻译后的目标场景进行处理;所述方法还包括:将所述编程结果文本翻译为与所述目标场景的原始语种对应的文本,之后展示给用户。
23.前述的自然语言编程方法,所述语言模型基于transformer架构,所述架构设置有记忆向量。
24.前述的自然语言编程方法,所述接收用户输入的自然语言描述的目标场景包括:利用前端界面接收用户输入的所述目标场景;其中,所述前端界面包括自然输入界面、或模板匹配输入界面,所述自然输入界面包括用于接收用户输入的纯文本框,所述模板匹配输入界面包括模板文本、用于接收用户输入的控件、执行按钮、以及用于展示输出结果的控件;所述将所述目标场景输入至预先训练好的语言模型包括:利用后端服务,将由所述前端界面接收到的所述目标场景发送至所述语言模型;所述方法还包括:利用后端服务,将所述语言模型输出的所述编程结果文本返回至所述前端页面以供所述前端页面展示。
25.本发明的目的还采用以下技术方案来实现。依据本公开提出的一种自然语言编程装置,包括:前端界面模块,用于接收用户输入的自然语言描述的场景,所述场景包括人物和目标任务;后端服务模块,用于将所述自然语言描述的场景输入至预先训练好的语言模型;语言模型处理模块,用于利用所述语言模型,生成与所述人物执行所述目标任务的结果对应的文本,作为编程结果文本。
26.可选的,前述的自然语言编程装置,还包括执行前述任意一种自然语言编程方法的步骤的模块。
27.本发明的目的还可以采用以下的技术措施来进一步实现。
28.前述的自然语言编程装置,还包括语言模型训练模块,用于训练所述语言模型,其中在训练所述语言模型的过程中,输入至所述语言模型的训练数据包括大规模的自然语言描述的场景,所述场景包括人物和任务。
29.前述的自然语言编程装置,所述语言模型训练模块具体用于:在训练所述语言模型的过程中,输入至所述语言模型的训练数据包括目标文体的语料;其中,所述目标文体的语料包括小说语料、故事语料和/或新闻语料。
30.前述的自然语言编程装置,还包括训练数据拆分模块,用于在将所述训练数据输入至所述语言模型进行训练之前,将所述训练数据拆分为多个子训练数据,以区分不同场景。
31.前述的自然语言编程装置,其中所述训练数据拆分模块具体用于:识别语料中的
地点词、和/或时间词、和/或章节分隔词,其中,所述章节分隔词用于描述章、节、回、幕的起始或终结;根据所述地点词、和/或所述时间词、和/或所述章节分隔词,将所述语料的内容切分为多个部分,每个部分作为一个所述子训练数据。
32.前述的自然语言编程装置,还包括文体字段生成模块、和/或文体筛选模块。所述文体字段生成模块用于在将所述训练数据输入至所述语言模型进行训练之前、和/或在所述将所述目标场景输入至预先训练好的语言模型之前,判断用作训练数据的语料和/或所述目标场景的文体类型,将得到判断结果记录于文体类型字段,用以根据所述文体类型字段进行模型训练或模型推断。所述文体筛选模块用于在将所述训练数据输入至所述语言模型进行训练之前,判断语料的文体类型,选取符合目标文体的语料用作训练数据。
33.前述的自然语言编程装置,所述语言模型训练模块具体用于:将所述训练数据中的部分内容输入至当前的语言模型,利用所述当前的语言模型推断所述训练数据中的所述部分内容的后文,并将推断出的后文与实际的后文进行比对,以反向传播方式根据比对结果调整所述当前的语言模型的参数。所述语言模型处理模块具体用于:将所述目标场景输入至预先训练好的语言模型,利用所述预先训练好的语言模型推断所述目标场景的后文。
34.前述的自然语言编程装置,还包括词表设置模块、训练数据预处理模块、用户输入预处理模块。其中,所述词表设置模块用于预先设置词表。所述训练数据预处理模块用于:在进行所述的将所述训练数据中的部分内容输入至当前的语言模型之前,对用于训练的原始语料进行提取文本和分词器处理,以将所述原始语料的文本的分割成多个字词单元,确定所述原始语料的每个字词单元在所述词表中对应的标识以得到所述原始语料的分词标识向量,将所述原始语料的所述分词标识向量作为训练数据来训练所述语言模型。所述用户输入预处理模块用于:对所述目标场景进行提取文本和分词器处理,以将所述目标场景的文本的分割成多个字词单元,并确定所述目标场景的每个字词单元在所述词表中对应的标识以得到所述目标场景的分词标识向量,将所述目标场景的所述分词标识向量发送至预先训练好的语言模型。所述语言模型训练模块具体用于:所述当前的语言模型根据所述训练数据中的部分内容的所述分词标识向量输出对应的后文概率向量;将模型输出的与所述部分内容对应的所述后文概率向量、与所述部分内容的实际后文的所述分词标识向量作差,得到误差向量;和,根据所述误差向量对所述当前的语言模型的参数进行加权。所述语言模型处理模块具体用于:预先训练好的所述语言模型根据所述目标场景的所述分词标识向量输出对应的后文概率向量;和,根据所述后文概率向量确定所述目标场景的后文。其中,所述后文概率向量的每一维对应词表中的一个字词单元,所述后文概率向量的每一维的取值表示所述语言模型推断出的词表中的对应的字词单元被选取为后文的概率。
35.前述的自然语言编程装置,所述语言模型训练模块、和/或所述语言模型处理模块具体用于:逐个字或逐个词地依次推断后文。
36.前述的自然语言编程装置,所述语言模型训练模块具体用于:在训练所述语言模型的过程中,对所述语言模型推断出的词表中的各个字词单元被选取为后文的概率进行平滑处理,以得到平滑后的后文概率向量。所述语言模型处理模块具体用于:在利用所述语言模型生成与所述人物执行所述目标任务的结果对应的文本的过程中,对所述语言模型推断出的词表中的各个字词单元被选取为后文的概率进行平滑处理,以得到平滑后的后文概率向量;根据平滑后的后文概率向量确定词表中的概率最高的多个字词单元,根据所述概率
最高的多个字词单元确定后文。
37.前述的自然语言编程装置,所述训练数据预处理模块还用于:在进行所述分词器处理之前,将用作训练数据的语料翻译为目标语种的语料,以便利用翻译后的语料训练所述语言模型。所述用户输入预处理模块还用于:在进行所述分词器处理之前,将接收到的所述目标场景翻译为目标语种的自然语言描述的目标场景,以便所述语言模型对翻译后的目标场景进行处理。所述装置还包括结果展示模块,用于:将所述编程结果文本翻译为与所述目标场景的原始语种对应的文本,之后展示给用户。
38.前述的自然语言编程装置,所述语言模型基于transformer架构,所述架构设置有记忆向量。
39.前述的自然语言编程装置,所述前端界面模块具体用于:利用前端界面接收用户输入的所述目标场景;其中,所述前端界面包括自然输入界面、或模板匹配输入界面,所述自然输入界面包括用于接收用户输入的纯文本框,所述模板匹配输入界面包括模板文本、用于接收用户输入的控件、执行按钮、以及用于展示输出结果的控件。所述后端服务模块具体用于:利用后端服务,将由所述前端界面接收到的所述目标场景发送至所述语言模型。所述装置还包括结果展示模块,用于:利用后端服务,将所述语言模型输出的所述编程结果文本返回至所述前端页面以供所述前端页面展示。
40.本发明的目的还采用以下技术方案来实现。依据本公开提出的一种自然语言编程设备,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现前述任意一种自然语言编程方法。
41.本发明的目的还采用以下技术方案来实现。依据本公开提出的一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行前述任意一种自然语言编程方法。
42.本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提出的自然语言编程方法、装置、设备及存储介质至少具有下列优点及有益效果:
43.1、本发明通过自然语言创作一个场景,驱动场景中的人物去完成任务,即可完成想要的结果,将编程转换为场景描述,从而实现了利用自然语言进行编程;
44.2、即使程序或者说用户输入的自然语言描述出现一定的错误,本发明的编程方法仍然可以运行而得到输出结果,不会因为一点点错误就无法得到编程结果;
45.3、本发明通过利用自然语言的任务,可以通过翻译来支持任意国家的语言进行编程,从而具备多语言能力。
46.上述说明仅是本发明技术方案的概述,为了能更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
47.图1是本发明一个实施例的自然语言编程方法的流程示意图;
48.图2是本发明一个实施例提供的自然语言编程系统的后端服务所进行的处理的示意图;
49.图3是本发明一个实施例提供的语言模型的训练过程的示意图;
50.图4是本发明一个实施例的自然语言编程设备的示意图。
具体实施方式
51.为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的自然语言编程方法、装置、设备及存储介质的具体实施方式、结构、特征及其功效,详细说明如后。
52.本发明涉及自然语言编程(programming in nature language,简称 pnl)。
53.图1为本发明的自然语言编程方法一个实施例的示意性流程框图。在本发明的一些实施例中,请参阅图1,本发明示例的自然语言编程方法主要包括以下步骤:
54.步骤s11,接收用户输入的自然语言描述的场景(也称为情景、故事)。不妨将用户输入的该场景称为目标场景。可选的,该由自然语言描述的场景包括人物和目标任务。不妨将目标场景中的人物称为目标人物。可选的,该自然语言描述的场景是用户输入的一段文本。需注意,前述的“自然语言描述的场景”相当于编程中程序员的输入,但其不同于现有编程方法中的程序员输入的标准化的编程代码,而是自然语言描述的文本。
55.步骤s12,将目标场景输入至预先训练好的语言模型。
56.步骤s13,利用该语言模型生成与该目标场景对应的文本。具体的,利用该语言模型,生成与该人物执行该目标任务的结果对应的文本,作为编程结果文本。
57.其中,语言模型(language model,简称lm)也称为文本生成模型,用于基于输入的文本进行创作,即输入上文利用计算机给出下文或者填空。本发明不限制所选用的语言模型的具体类型,例如可以是bert语言模型、或gpt语言模型。
58.可选的,在前述步骤s13之后,本发明示例的自然语言编程方法还包括,将编程结果文本向用户展示。
59.利用本发明的自然语言编程方法,可以实现诸如“打印文本”、翻译、菜谱生成、根据情景写诗歌、写春联、取名字、写故事、提供商业建议等等功能。
60.作为打印文本的一个具体例子,用户输入的目标场景可以是:“课堂上,老师说:



问天地好在’给我念两遍。’学生开始机械的重复说”。利用装置实现本发明提出的自然语言编程方法可能得到如下的编程结果文本:
“‘
问天地好在,问天地好在。’同学你干什么呢?老师发现坐在最后的王某,她的手里拿着一个小笔记本,正在快速的记录着什么东西”。
61.作为菜谱生成的一个具体例子,用户输入的目标场景可以是:
“‘
鱼香肉丝怎么做?’男孩好奇的问教授。教授思考良久,缓缓说道”。利用装置实现本发明提出的自然语言编程方法可能得到如下的编程结果文本:
“‘
鱼香肉丝的做法其实并不复杂,只是简单的将豆腐和肉切碎放入锅中炖煮,然后再把肉末放入锅中翻炒,最后把锅盖掀开放到锅内,再加上少许水就可以吃饭了。
’‘
这样就可以了吗?
’‘
恩,可以这样,但是还需要一些调料
’‘
调料?什么调料啊?
’‘
油、醋、花椒、姜、葱、胡椒、白糖、鸡蛋、鸡蛋液
’”

62.作为提供商业建议的一个具体例子,用户输入的目标场景可以是:
“‘
我喜欢做科研,搞发明创造,但是我经常被抄袭,做再好的结果也是被抄袭,然后他们就做山寨版,然后和我抢市场,我该怎么办?’男孩好奇的问教授。教授思考良久,缓缓说道”。利用装置实现本发明提出的自然语言编程方法可能得到如下的编程结果文本:“只有做到真正的超越自己,做到让那些人不敢冒犯我,让那些人无法剽窃我的东西,那时候我的名声就会传遍全球,那
些抄袭的人也就会知难而退”。
63.在本发明的一些实施例中,本发明的整体结构包括:前端界面、后端服务、以及前述的语言模型。为了使用自然语言编程,首先需要一个语言模型,用户通过前端界面把内容通过后端服务输入给语言模型,从而得到自然语言编程所需要的结果。
64.关于前端界面
65.在本发明的一些实施例中,前述步骤s11的具体包括:利用前端界面接收用户输入的文本,该文本包括自然语言描述的场景。可选的,前端界面可以采用vue前端框架。
66.可选的,前端界面可以采用两种方式:自然输入界面、模板匹配输入界面,以便用户进行自然输入、或模版输入。
67.作为自然输入界面的一个具体示例,自然输入界面包括用于接收用户输入的纯文本框。例如:
[0068]“鱼香肉丝怎么做?”同学好奇的问教授。教授思考良久,缓缓说道:
[0069]“鱼香肉丝的做法其实并不复杂,只是简单的将豆腐和肉切碎放入锅中炖煮,然后再把肉末放入锅中翻炒,最后把锅盖掀开放到锅内,再加上少许水就可以吃饭了。”[0070]
其中,前述示例中的第一段是用户输入,第二段是机器计算得到的结果。在这种情况下,用户通过构造一个场景:学生问问题,来得到“鱼香肉丝怎么做”的答案。用户并不需要额外制定其他信息。
[0071]
作为模板匹配的一个具体示例,模板匹配输入界面包括模板文本、用于接收用户输入的控件、执行按钮、以及用于展示输出结果的控件。例如,在与前述自然输入界面的示例相似的环境下,界面可以为:
[0072]
模板:“【输入】”同学好奇的问教授。教授思考良久,缓缓说道:“【输出】”[0073]
输入:鱼香肉丝怎么做
[0074]
执行按钮(点击一下)
[0075]
输出:鱼香肉丝的做法其实并不复杂,只是简单的将豆腐和肉切碎放入锅中炖煮
……
[0076]
需注意,【输入】和【输出】均可以是多个。
[0077]
关于后端服务
[0078]
在本发明的一些实施例中,前述步骤s12的具体包括:利用后端服务,将由前端界面接收到的自然语言描述的场景发送至语言模型。
[0079]
在本发明的一些实施例中,本发明提出的方法还包括:利用后端服务,将语言模型输出的编程结果文本返回至前端页面以供前端页面展示。
[0080]
可选的,后端服务可以采用flask后端框架,负责将接收前端页面返回的用户输入,然后输入给模型,之后再将模型的输出返回给前端页面。
[0081]
图2示出了本发明一种实施例的模型推断(inference)过程,即针对用户的输入,进行预处理后,利用预先训练好的语言模型进行自然语言编程的过程。
[0082]
如图2所示,在本发明的一些实施例中,后端服务具体用于进行如下处理:对用户输入的基于自然语言描述的场景进行提取文本、文本清洗、tokenizer(或称为分词器)处理、返回文本token id,之后发送至语言模型。
[0083]
其中,文本清洗具体包括:去除空白符,非正常字符,字符统一化(全角或半角)等。
tokenizer处理具体包括:使用berttokenizer(在bert语言模型中使用的一种文本处理技术),会将中文按每个字切开,英文按每个单词切开,得到文本token(token表示文本分割之后的单元)的列表。然后基于该token列表,将其转化为词表(也可称为字表,表中的每行一个字、单词或字符,行号就是该词的索引号)中对应的标识(或称为id),从而获取token id(token基于在词表中的索引号)。
[0084]
需注意,本说明书的描述中,不对语料和用户输入的文本中的词、单词、词组、字、字符进行区分。事实上,单个字也可视为一个词,而且对于字和词都可以利用本发明示例的方法或装置进行对应处理。因此,可以将词表、字表中的词、字统称为单元或统称为字词单元。
[0085]
关于语言模型
[0086]
在本发明的一些实施例中,在训练语言模型的过程中,输入至语言模型的训练数据包括大规模的自然语言描述的场景,场景包括有关人物和任务的内容。不妨将训练数据中的自然语言描述的场景称为训练场景。可选的,用作训练的语料中包含各种各样人物、各种各样的任务、以及与任务对应的执行结果。
[0087]
在本发明的一些实施例中,在训练语言模型的过程中,输入至语言模型的训练数据包括目标文体的语料。可选的,目标文体的语料包括小说语料、故事语料、和/或新闻语料等。
[0088]
图3示出了本发明一种实施例的模型训练(training)过程,通过获取用作训练数据的语料,对训练语料进行数据清洗等预处理得到训练数据,然后利训练数据训练语言模型(例如transformer架构的模型),最后得到训练好的语言模型。
[0089]
如图3所示,在本发明的一些实施例中,语言模型用于基于输入的文本进行创作。语言模型可以采用卷积神经网络(cnn)、循环神经网络 (rnn)、长短期记忆神经网络(lstm)。具体的,语言模型可以采用但不限于:transformer架构。本发明一些示例中的模型的架构设置有memory (也称为记忆向量)。memory是先前文本知识压缩之后的向量,主要赋予模型长文记忆能力,让模型能够记住在之前较远地方出现过的文本,是一个模型超参数,越长越好,但越长对机器要求越高。可选的,本语言模型的语料主要为大规模小说语料,输入到transformer架构中进行训练,得到文本生成模型。需注意,本发明并不限制所使用的语言模型,可以采用前述的transformer架构,也可以采用其他架构的模型。
[0090]
在本发明的一些可选实施例中,在训练阶段的将训练数据输入至语言模型进行训练的步骤之前、和/或在推断阶段的将用户输入的自然语言描述的目标场景输入至预先训练好的语言模型的步骤之前,还包括:判断用作训练数据的语料和/或目标场景的文体类型,将得到判断结果记录于文体类型字段(例如,可将标识文体类型的字段放在文本数据的头部),用以根据文体类型字段进行模型训练或模型推断。通过判断并记录语料的文体类型,能够使计算机更好地进行理解,从而能够达到更准确的效果。
[0091]
需注意,图3中的“数据清洗”与图2中的“文本清洗”是不同的。
[0092]
本发明示例的数据清洗适用于模型训练阶段,对大量的原始数据进行筛选、转换以得到训练数据。例如,在本发明的一些实施例中,数据清洗包括筛选语料的文体类型:在训练阶段的将训练数据输入至语言模型进行训练之前还包括:判断语料的文体类型,选取符合目标文体的语料用作训练数据。例如,只选取小说、故事和新闻的语料作为训练数据,
而不使用诗歌、散文等类别的语料。需注意,数据清洗可以通过多种方式来实现,例如可以通过判断数据是否符合预设的目标规则,还可以预先训练用于的数据清洗的模型并利用该数据清洗模型对原始数据进行筛选、转换。
[0093]
作为本发明的一个可选实施例,数据清洗包括选取小说、故事和新闻文体类型的语料作为训练数据,通过判断原始的语料数据是否包含预设的目标词语来判断该语料的文体类型,例如是否属于小说、故事或新闻,可选的,该目标词语包括“章”、“回”等小说类别的特征词以及“某月报道”、“某日报道”等新闻类别的特征词。
[0094]
本发明示例的文本清洗适用于模型推断阶段,属于文本预处理,用于将接收到的用户输入的文本转换成能够或适于进行本发明的自然语言编程方法的文本。作为一个可选示例,在前述步骤s12之前进行文本清洗,包括去除目标字符、去除非正常字符、和/或字符统一化等。其中,去除目标字符具体包括:从接收到的文本形式的自然语言描述的场景中删除目标字符,例如,将接收到的用户输入的文本中的空格符和/或换行符删除。去除非正常字符包括删除与自然语言描述无关的特殊符号。字符统一化包括将字符统一为全角字符、或统一为半角字符。
[0095]
在本发明的一些可选实施例中,在将训练数据输入至语言模型进行训练之前,还包括,将训练数据拆分为多个子训练数据,以区分不同场景。一般来说,拆分训练数据的结果包括但不限于:每个子训练数据对应于一个场景。需注意,事实上在一些示例中,一个子训练数据也可以包括多个场景,只需尽量将不同场景划分为不同的子训练数据,以提高训练后的语言模型的准确性。本发明提出的方法,通过在训练语言模型时,对原始语料的内容进行场景切分后再输入语音模型进行训练,能够使得训练后的语言模型更准确,使得计算机更好的理解场景。
[0096]
需注意,可以利用预设规则或利用预先训练好的模型,来进行前述的将训练数据拆分为多个子训练数据。作为一个可选实施例,前述的将训练数据拆分为多个子训练数据包括:识别语料中的地点词、和/或时间词、和/ 或章节分隔词;根据地点词、和/或时间词、和/或章节分隔词,将语料的内容切分为多个部分,每个部分作为一个子训练数据。其中,前述的地点词包括用于描述所处位置的词和用于描述位置变更的词。前述的时间词包括用于描述时间段或时间点的词、以及用于描述时间变更的词。前述的章节分隔词用于描述章、节、回、幕的起始或终结,包括但不限于:章节回幕等的序号,例如,第一章、第二章、序章、终章、第一回、第二回、第一幕、第二幕等,以及用于分隔章节回幕的常用语,例如,且听下回分解等等。本发明提出的方法,通过对不同章节、不同位置、不同时间的内容拆分成不同训练数据进行训练,能够使得计算机更好的理解场景,提高训练后的语言模型的准确性。
[0097]
本发明示例的自然语言编程方法还具备多语言能力。在本发明的一些可选实施例中,语言模型的训练过程还包括:在进行分词器处理之前,将用作训练数据的语料翻译为目标语种的语料,以便利用翻译后的语料训练语言模型。在本发明的一些可选实施例中,在进行前述步骤s12之前,本发明示例的自然语言编程方法还包括:在进行分词器处理之前,将接收到的用户输入的自然语言描述的目标场景翻译为目标语种的自然语言描述的目标场景。一般来说,该目标语种是与模型训练阶段所利用的语言种类一致的语言,例如中文、英文等。需注意,可以预设多种目标语种,并且在本步骤中,判断与用户输入文本的语言种类对应的一种目标语种,并将文本翻译为该种目标语种;具体可以是,预先设置多种不同语系
的目标语种,将用户输入的文本翻译为对应语系的目标语种,例如,若用户输入的是法语或德语,则翻译为英语,若用户输入的是泰语、缅甸语,则翻译为汉语。通过将用户输入的自然语言描述的场景翻译为目标语种,有利于进行后续的利用语言模型处理该自然语言描述的场景,有利于得到准确的编程结果。需注意,本步骤可以视为文本清洗(或称为文本预处理)中的一步,或者也可以视为在文本清洗之前或之后进行的独立步骤。并且,本方法还可以包括:将编程结果文本翻译为与自然语言描述的目标场景的原始语种对应的文本,之后展示给用户。
[0098]
在本发明的一些实施例中,语言模型的训练过程包括:将训练数据中的部分内容作为前文而输入至当前的语言模型,利用该当前的语言模型推断训练数据中的部分内容的后文,并将推断出的后文与实际的后文进行比对,再以反向传播方式根据比对结果调整当前的语言模型的参数。训练时采用梯度下降方式调整语言模型的参数。若推断的后文如果与实际后文一致或误差小,即则当前模型的参数的权重增加,若不一致或误差大,则权重减小。
[0099]
在本发明的一些实施例中,前述步骤s13包括:将目标场景作为前文而输入至预先训练好的语言模型,利用该预先训练好的语言模型推断该目标场景的后文。
[0100]
在本发明的一些实施例中,语言模型采用的具体策略包括:词表采样 (也称为词表sample、字表采样);和/或,词表概率平滑(或称为字表概率平滑);和/或,较长的记忆向量(memory),例如采用1280长度的memory。
[0101]
其中,利用语言模型对前文(包括训练语料或用户输入文本)进行处理时,可以逐个字或逐个词地推断前文的后文。即先推断前文之后的第一个字(或词)是词表中的哪个单元,然后再推断前文之后的第二个字(或词)是词表中的哪个单元,依次类推地推断出全部后文。需注意,可以将推断出的第一个字也作为前文输入至语言模型,以推断前文之后的第二个字。而推断每个字时可以利用词表采样的方式。
[0102]
需注意,大多数语言具有有限数目的字(或词),而且所有语言的常用字(或常用词)的数目都是有限的,例如,汉语的常用字大致有五千个,英语的常用单词大致有三万到四万个。因此,本发明所示方法可以包括:预先为所有的字词(或所有的常用字词)设置对应的标识(简称为id),以形成词表(或称为字表)。
[0103]
而前述的词表采样是指:将前文输入至语言模型,语言模型的输出为多维向量(例如采用汉语时,可以是五千维向量),该向量的每一维对应字表(或词表)中的一个字,该向量的每一维的取值表示该语言模型推断出字表(或词表)中的对应的字被选取为前文的下一个字的概率,不妨将语言模型的输出该多维向量称为词表概率(或称为字表概率、或称为后文概率向量)。在一些示例中,词表概率中所有词的概率总和为1;在另一些示例中,词表概率中的每个词的概率是独立的,都是0

1之间的一个数,而词表概率中所有词的概率总和不一定为1。然后,根据词表概率并按照一定策略来确定前文的下一个词。训练语言模型的过程、和利用语言模型生成文本的过程均可以包括词表采样。
[0104]
需注意,在词表采样时,在得到词表概率后,可以采用多种策略来确定前文的下一个词。作为一个可选实施例,选取词表中的概率最高的词作为前文的下一个词。作为另一可选实施例,选取词表中的概率最高的多个词中的一个作为前文的下一个词,例如可以从概率最高的多个词中随机选取一个,或者可以同时输出多个生成的结果文本,以作为备选方
案或以供用户自行选择。作为又一可选实施例,根据词表概率中的各个词的概率将[0, 1]区间划分为多个子区间,每个子区间对应于词表中的一个词,词的概率与子区间的大小相对应,然后在0

1之间生成一个随机数,确定该随机数所落入的子区间作为目标子区间,将目标子区间对应的词选取为前文的下一个词。例如词表中有a和b两个词,a权重为0.9,b权重0.1,从而可将[0,1] 区间划分为[0,0.9]、[0.9,1]两个子区间,通过在0

1之间生产一个随机数,判定该随机数的大小,如果该随机数大于0.9就选择a作为后文,如果该随机数为0.9到1之间则选择b作为后文。
[0105]
作为本发明的词表采样的一个具体示例,输入至语言模型的前文(训练语料、或用户输入的文本)为“现在天气很好”,在利用词表采样方式并且采用选取字表中的概率最高的字的策略时,可能利用语言模型处理后的结果是:字表中“然”这个字作为前文的下一个字的概率最高,则选取“然”作为前文的下一个字,然后再继续判断字表中哪个字作为前文的再下一个字的概率最高。最后,根据前文“现在天气很好”,可能会生成文本“然后下雨了”。
[0106]
在本发明的一些实施例中,预先设置词表。并且,在进行前述的将训练数据中的部分内容输入至当前的语言模型之前,语言模型的训练过程包括:对用于训练的原始语料进行提取文本和分词器(tokenizer)处理,以将原始语料的文本的分割成多个字词单元;根据词表来确定与原始语料的每个字词单元在词表中对应的标识,以得到原始语料的分词标识向量,将原始语料的分词标识向量作为训练数据来训练语言模型。事实上就是通过分词器和词表将语料内容数据化为向量形式的训练数据。前述实施例中的语言模型的训练过程具体包括:将训练数据中的部分内容的分词标识向量作为前文输入至当前的语言模型,当前的语言模型根据训练数据中的部分内容的分词标识向量输出对应的后文概率向量;将模型输出的与训练数据中的部分内容对应的后文概率向量、与训练数据中的部分内容的实际后文的分词标识向量作差,得到误差向量;和,根据误差向量对当前的语言模型的参数进行加权。之后,利用调整权重后的语音模型继续进行下一轮训练。其中,后文概率向量的每一维对应词表中的一个字词单元,后文概率向量的每一维的取值表示语言模型推断出的词表中的对应的字词单元被选取为后文的概率。
[0107]
需注意,本发明不限制利用误差向量对当前的语言模型的参数进行加权的方式。作为一个可选示例,确定误差向量的范数(具体的范数类型也不作限制,例如可以是1

范数、2

范数、或∞

范数),考虑到一般来说误差向量的范数越大表明当前语言模型推断出的后文与实际后文差别越大,根据误差向量的范数的倒数计算得到当前的语言模型的参数的权重。作为另一可选示例,在逐个字推断后文时,模型输出的后文概率向量的每一维均是0

1的小数;实际后文的分词标识向量中,与实际后文的字词对应的一维取值为1,其他维取值均为0。因此可以只利用误差向量中的对与实际后文的字词对应的一维来计算权重,并利用该权重对当前的语言模型的参数的加权;或者,也可以根据误差向量中的对与实际后文的字词对应的一维计算出第一权重、根据误差向量中的其他维计算出第二权重,再综合第一权重和第二权重来对模型参数加权。
[0108]
在本发明的一些实施例中,预先设置词表。并且,前述实施例中的将自然语言描述的目标场景输入至预先训练好的语言模型包括:对目标场景进行提取文本和分词器处理,以将目标场景的文本的分割成多个字词单元,并根据词表来确定该目标场景的每个字词单
元在该词表中对应的标识,以得到该目标场景的分词标识向量,将该目标场景的分词标识向量发送至预先训练好的语言模型。事实上就是通过分词器和词表将自然语言描述的目标场景数据化为向量形式的目标场景。前述实施例中的利用语言模型推断自然语言描述的目标场景的后文包括:预先训练好的语言模型根据目标场景的分词标识向量输出对应的后文概率向量;和,根据后文概率向量确定目标场景的后文。其中,后文概率向量的每一维对应词表中的一个字词单元,后文概率向量的每一维的取值表示语言模型推断出的词表中的对应的字词单元被选取为后文的概率。
[0109]
在前面描述的词表采样过程中,会利用模型生成词表概率(也称为字表概率、或称为后文概率向量),即利用模型来计算词表(也称为字表)中的每个字词单元作为前文的下一个词(也称为字)的概率。而有些时候,模型生成的字在top1的概率会较大,例如词表中的作为前文的下一个字的概率最大的字的概率可能会达到0.99。但这样使得每次生成下文的时候,确定性过高。在本发明的一些实施例中,可以采用词表概率平滑技术:通过预先调整模型参数而使得在模型生成词表概率的时候概率最高的多个字的概率都处在相当的水平、或者在模型生成词表概率后利用平滑函数对词表概率进行平滑处理以使得概率最高的多个字的概率都处在相当的水平,即让概率排名位于topk(表示前k个,需注意并不限制k的取值)的字的概率都处在差不多的水平,从而能够在topk中进行选择,而不会专注于选择某一个字。
[0110]
在本发明的一些实施例中,前述的当前的语言模型根据训练数据中的部分内容的分词标识向量输出对应的后文概率向量,具体包括:对语言模型推断出的词表中的各个字词单元被选取为后文的概率进行平滑处理,以得到平滑后的后文概率向量。在语言模型的训练过程中,利用平滑后的后文推断概率向量进行后续的确定误差向量和对语言模型加权等处理。
[0111]
在本发明的一些实施例中,前述的预先训练好的语言模型根据目标场景的分词标识向量输出对应的后文概率向量,具体包括:对语言模型推断出的词表中的各个字词单元被选取为后文的概率进行平滑处理,以得到平滑后的后文概率向量。前述的根据后文概率向量确定目标场景的后文包括:根据平滑后的后文概率向量确定词表中的概率最高的多个字词单元,根据概率最高的多个字词单元确定后文。
[0112]
前述的利用平滑函数对词表概率进行平滑处理包括但不限于:对模型生成的原始的词表概率进行开方,用以利用开方后的词表概率进行后续的文本生成过程。以词表中的一个词为例,若词a的权重为x,对权重x进行开方,利用得到的x^0.5进行后续处理。例如在一个示例中,词表中有a 和b两个词,a权重为0.9,b权重0.1,通过对权重进行开方这种平滑操作,a与b的原始概率0.9、0.1就能变成了0.94、0.31,从而使得原始具有较大权重比的a、b的权重比变小,即让不同的字的概率都处在差不多的水平。
[0113]
需注意,在利用词表概率平滑技术后,可以采用多种方式来根据词表中的概率最高的多个字词单元确定最终生成的后文,例如可以从词表中的概率位于topk的k个字词中随机选取一个,或者可以从topk中选取概率最大的字,或者也可以同时输出多个生成的结果文本,以作为备选方案或以供用户自行选择。
[0114]
本发明通过利用词表概率平滑,能够得到更多样的返回,从而能够得到自然语言编程的多个不同的中间结果或备选结果,利用多个中间结果或备选结果文本来得到编程结
果文本,能够提高编程结果的多样性。
[0115]
在本发明的一些实施例中,前述步骤s13的利用该语言模型生成与目标场景对应的文本包括:在进行前述的生成与该人物执行该目标任务的结果对应的文本的同时,还能够利用语音模型得到解释文本,亦即可以要求模型给出输出的原因。事实上,可以通过将用户输入的目标场景和利用前述方法确定的编程结果文本共同作为输入来执行前述步骤s12和s13的过程,即可将输出作为解释文本。例如用户输入的自然语言描述的目标场景包括“西红柿可以吃么?”则利用本发明的自然语言编程方法在得到“可以”这个结果的同时,还可以得到“因为西红柿是一种很常见的蔬菜,西红柿里面所含的番茄红素可以提高身体免疫力”这个解释,而该解释是也可以是由语言模型得到的。
[0116]
在本发明的一些实施例中,可以利用语言模型的模板匹配来完成编程结果的获取。在本发明的一个具体实施中,用户输入的自然语言描述的目标场景为“写春联”,那么语言模版可以是:
[0117]“今天我们来写一副春联,主题是<输入1>,这个春联的上联是< 输出1>,下联是<输出2>”[0118]
当用户输入了具体的要求,例如<输入1>=“家庭合睦”,此时将这个内容填入语言模型,语言模型可以输出如下的文字:
[0119]“今天我们来写一副春联,主题是

家庭和睦’,这个春联的上联是

福如东海,寿比南山’,下联是

和和美美,福气万年
’”

[0120]
那么就得到了这个程序执行的结果:<输出1>=“福如东海,寿比南山”,< 输出2>=“和和美美,福气万年”。
[0121]
需注意,可以利用不同的标志符号来实现自然语言编程方法。例如,在前述的写春联的实施例中,前述的尖括号<>可以改为中括号,而不影响模板匹配的实现。
[0122]
需注意,本发明的自然语言编程方法可以本地运行、也可以服务端运行。作为一个可选实施例,本发明的自然语言编程方法对应的系统或装置包括客户端设备和服务端设备,利用智能终端等客户端实现前述的步骤 s11,利用服务器等服务端实现前述的步骤s12、s13,并且通过客户端与服务端的通信实现数据交互。作为另一个可选实施例,本发明的自然语言编程方法对应的系统或装置是一体化设备,用于同时实现自然语言编程方法的所有步骤。
[0123]
本发明提出的自然语言编程方法与现有技术具有诸多区别。具体如下。
[0124]
与现有的编程方法相比,利用本发明提出的自然语言编程方法对应的编译器时不需要严格遵循语法解析,而是通过语言模型进行解析,利用自然语言构造故事和场景驱动人物实现任务。编程人员只需要描述任务,并不需要指出如何完成,甚至可以让语言模型进行解释。另外,用户编程的优劣从原先的编程能力转换为叙述能力,对目标场景叙述得越清楚,得到的输出结果越好。
[0125]
与小样本学习(few

shots learning)相比,本发明提出的自然语言编程方法不需要构造例子,并且本发明是通过情景驱动的从而能够更加准确的控制参数。
[0126]
与现有的自然语言理解方法、自然语言生成方法相比,目前的自然语言理解任务和语言生成是针对特定类型的任务进行设计,比如文本分类、摘要抽取等等;而本发明提出的自然语言编程方法的与之的区别点在于:依靠对语言模型进行扩展,能够适于各种编程
情况,并不局限于处理某一特定任务而是能够完成多样的功能,通用能力、泛化能力强。
[0127]
利用本发明提出的自然语言编程方法,通过自然语言创作一个场景,驱动场景中的人物去完成任务,即可完成想要的结果。同时,如果程序或者说语言出现一定的错误,本发明的方法仍然可以运行,不会因为一点点错误就出错。同时,本发明因为是自然语言的任务,因此通过翻译可以支持任意国家的语言,而非英语、汉语等特定的一种或几种语言。
[0128]
本发明的实施例还提供一种自然语言编程装置,该装置包括:前端界面模块、后端服务模块、以及语言模型处理模块。
[0129]
其中,该前端界面模块用于:接收用户输入的自然语言描述的目标场景(情景、故事)。其中,该自然语言描述的目标场景包括人物和目标任务。
[0130]
该后端服务模块用于:将目标场景输入至预先训练好的语言模型。
[0131]
该语言模型处理模块用于:利用预先训练好的语言模型生成与目标场景对应的文本,具体的,利用该语言模型生成与人物执行目标任务的结果对应的文本,作为编程结果文本。
[0132]
另外,本发明实施例示出的各种自然语言编程装置的包括有用于执行前述各个实施例方法对应的模块和单元,而其详细说明和技术效果可以参考前述各实施例中的相应说明,在此不再赘述。
[0133]
需注意,本发明的自然语言编程装置可以是一个独立的装置;或者也可以包括相互配合的多个子装置,每个子装置包括前端界面模块、后端服务模块、语言模型处理模块中的一个或多个模块。作为一个可选实施例,本发明的自然语言编程装置包括客户端装置和服务端装置,该客户端装置包括前述的前端界面模块,该服务端装置包括前述的后端服务模块和语言模型处理模块,并且通过客户端与服务端的通信实现数据交互。
[0134]
图4是图示根据本发明的一个实施例的自然语言编程设备的示意性框图。如图4所示,根据本公开实施例的自然语言编程设备100包括存储器 101和处理器102。
[0135]
该存储器101用于存储非暂时性计算机可读指令。具体地,存储器101 可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。
[0136]
该处理器102可以是中央处理单元(cpu)或者具有数据处理能力和/ 或指令执行能力的其它形式的处理单元,并且可以控制自然语言编程设备 100中的其它组件以执行期望的功能。在本公开的一个实施例中,该处理器 102用于运行该存储器101中存储的该计算机可读指令,使得该自然语言编程设备100执行前述的本公开各实施例的自然语言编程方法的全部或部分步骤。
[0137]
本领域技术人员应能理解,为了解决如何获得良好用户体验效果的技术问题,本实施例中也可以包括诸如通信总线、接口等公知的结构,这些公知的结构也应包含在本发明的保护范围之内。
[0138]
有关本实施例的详细说明和技术效果可以参考前述各实施例中的相应说明,在此不再赘述。
[0139]
本发明的实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机
指令,当该计算机指令在设备上运行时,使得设备执行上述相关方法步骤实现上述实施例中的自然语言编程方法。
[0140]
本发明的实施例还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的自然语言编程方法。
[0141]
另外,本发明的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的自然语言编程方法。
[0142]
其中,本发明提供的装置、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0143]
以上所述,仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜