一种语言对联信息处理系统、方法及构建方法

文档序号:29856574发布日期:2022-04-30 09:32阅读:143来源:国知局
一种语言对联信息处理系统、方法及构建方法

1.本发明属于自然语言处理技术领域,尤其涉及一种语言对联信息处理系统、方法及构建方法。


背景技术:

2.目前,中文的别称有华语、中国话、汉语等,它属于汉藏语系,有至少15亿使用者。它与英文的语言结构截然不同,所以研究的方法也由此不同。现在中文使用的自然语言理解方法是在英文的基础上提出的,直接套用在中文上会出现一些棘手的问题。中英文之间的较大差别就在于中文需要做分词,而英文天然自带分词功能。因此中文和英文的自然语言理解是有很大的差异性的。
3.中文的自然语言理解必须要找出一个全新的解决办法。在自己跨学科的阅读中,遇到季羡林先生在纪念赵元任先生时摘引的陈寅恪先生在其《致刘叔雅国文试题书》一信中的一段话,阐明中文文法尚未建立。发明者非常珍视这段话,并命名该问题为“陈寅恪难题”,见其科学出版社出版专著《智能科学研究前沿》。同时认为这个难题的解决还正需要从数学,形式语义和人工智能的自然语言理解的角度予以解决。并在智能科学实验室持续进行研究,经过多届学生的实践,从语言的对称性开始到语言的拓扑学研究。目前语言的对称性研究和编程暂告一段落。
4.拓扑学(topology)属于数学的一个子领域,它主要研究几何图形或空间在形状连续改变后还能保持不变的性质。它被广泛地应用于各个学科中,如物理学、经济学等。近些年来,语言学家才开始将拓扑学的概念运用到语言的研究中,如双语的翻译、认知语言学、语言的递归性研究。通过系统地学习拓扑学理论,可以发现拓扑学的三大性质:拓扑等价、拓扑空间的连通性、同胚映射均在语言中以不同的形式表现出来。
5.自然语言(natural language)通常指的是一种随人类文化而自然发展的语言。法语、德语、韩语就属于自然语言的子类,而世界语是人造语言,它是为特定目的而创建的语言。然而,有时候人们所说的所有语言都被认为是“自然”语言,而被计算机所理解的语言则是编程语言。这种说法常见于自然语言处理领域。人类交流和思考的主要工具是自然语言。
6.自然语言理解(natural language understanding,nlu)作为人工智能的分支学科,是人工智能乃至智能科学研究的发力点和突破点。它研究使用电子计算机理解和模仿生成人类语言交流的过程,以便计算机能理解和使用人类社会的自然语言,比如中文和英文,以实现人与计算机之间的自然语言交流。同时取代部分人的大脑活动,包括搜索信息、回答问题、提取文档、编译数据和处理所有与自然语言有关的信息。
7.自然语言处理(natural language processing,nlp)是使用计算机对人类特定的书面语和口头语进行各种方式的处理的技术。在计算机科学领域与人工智能领域,自然语言处理是一个重要分支。它研究各种理论和方法,使用自然语言进行人与计算机之间的有效沟通。自然语言处理是一门融合了语言学、计算机科学和数学等的学科。
8.目前,自然语言处理技术广泛应用在人们生活、学习和工作的各个方面,给人们带
来极大的方便。但是,无论是中文搜索技术,还是中文语音识别,或者中文ocr,相对英文来说都不太成熟。自然语言处理技术包括很多方面,如文本分类、对话系统、机器翻译等。人们经常用到的查询功能使用的是搜索引擎技术。
9.用户在搜索引擎中输入较长的问题时,计算机要能够给出准确的答案。尽管互联网搜索引擎能够导航非常巨大的知识范围,但是达到智能助手的能力还很远。一个很明显的不同就是互联网搜索的查询被分成少数几个关键词而不是以自然语言表述的实际语义。那么搜索引擎对于一段很长的查询只能给出很差的返回结果或不返回任何有价值的东西。人们只能将他们的问题转化为一个或多个适当的关键词,以尝试相对合理的回应。信息检索研究的长期目标是开发检索模型来为更长、更专门的查询提供精确的结果。因此需要更好地理解文本信息。
10.在早期阶段,也就是计算机刚诞生的时候,人们就开始研究使用计算机来解析人类的自然语言。但在当时主要是出于战略考虑。研究者从破译军事密码中得到启示,认为语言之间的差异是对“同一语义”不同编码而已,这是最早机器翻译理论的思想,也代表了自然语言处理的第一个时代。
11.在进入20世纪七八十年代后,随着计算机硬件技术大幅度提高,使中等规模(百万级)的语料处理成为可能。经过十多年的发展,自然语言处理逐渐成为人工智能的一个独立领域。这时候,自然语言处理也分成两种不同的派别,分别是规则派和统计派。规则派是基于语言学理论,根据语言学家对语言现象的理解,他们使用规则来描写或解释歧义现象。而统计派是基于语料库统计分析的经验主义方法,它更重视数学的使用,并从能大规模真实文本中发现可以代表自然语言规律的知识,提取统计规律。
12.到了20世纪90年代,互联网的出现彻底改变了人们的生活方式。中文互联网搜索引擎的基础语言构件就是中文分词。伴随着这些突破的是一系列新的算法体系的出现,它们被统称为是“机器学习”。这些方法大多都以神经元和大脑的工作原理为理论基础,模拟人类的认知行为而发展起来。机器学习在处理多维、非线性问题方面取得了精确而稳定的效果。例如大规模语料的中文分词、词性标注问题的解决。
13.在最近的21世纪,2006年,以hinton为首的几位科学家经过近20年的努力,成为设计了第一个多层神经网络算法。因为其通过多层架构实现了抽象认知的学习能力,将其命名为“深度学习”。从2013年的word2vec(词向量计算工具)开始,自然语言处理领域大量使用深度学习的方法。在2014年,它的焦点在于各种全新的词向量表示方法,而从2015年开始则扩大到句子的层面, cnn(卷积神经网络)、rnn(递归神经网络)、lstm(时间递归神经网络) 等模型陆续出现,在机器翻译、文献概要、问答系统等工作上获得了很大的进步。而在2016年3月,由deepmind研发的alphago在一场举世瞩目的围棋大战中战胜韩国顶尖棋手李世乭,这一事件直接将人们对深度学习的关注推向了一个新的高潮。
14.综上所述,现有技术存在的问题是:
15.(1)现有的中文搜索技术、中文语音识别以及中文ocr都不够成熟,对于中文的理解不够深入或者说没有依据中文本身的规律。
16.(2)自然语言表述的实际问题不能被完整的描述并进行查询;现有中文文本信息不能被很好的理解。
17.(3)现有对联系统智能根据数据库已有的上联进行对仗,不能很好地实现对联的
自动生成。语言的对称性在中文表现得很突出。这正是本计算机实现系统的发端点。清代李渔在其《笠翁对韵》中进行了总结,当然只是现象层面的收集整理,没有进入逻辑分类的理性解析。本发明的对联系统最早的语料库就是用的《笠翁对韵》。笠翁对韵只有3千多字,但是完成了汉语只中语义的对称词汇的整理,所以同时也是一个规则库。这是从自然语言处理的角度看《笠翁对韵》的角度。
18.解决上述技术问题的难度:在于最早的《笠翁对韵》原料库太小,本发明每届学生都进行过语料库的扩展;对联优劣的评价机制。对联的意思和词句之间关系。如何评价,也就是对应如何选择。
19.解决上述技术问题的意义:解决了上述问题,才可能较为肯定地说对中文的把握,从而实现有意义的语言理解与生成。首先是是对语言对称性的把握。这是中文的非常显著必须把握的特征。将带来对思维方法的理解和把握。这对更全局地把握整个人类及其历史上各语种提供思路。对于对联评价机制的解决,将在对联过程中,启发人类本身的思维,产生新的灵感;整理有序化头脑的内容形成更好的知识结构。具体的中文理解和人机交换上的应用。


技术实现要素:

20.针对现有技术存在的问题,本发明提供了一种语言对联信息处理系统、方法及构建方法。
21.本发明是这样实现的,一种语言对联信息处理系统,所述语言对联信息处理系统包括:
22.输入模块:用于通过输入框输入上联;
23.语料库:用于存储对联相关数据;
24.对联生成模块:用于根据输入模块输入的上联触发相应算法逻辑生成下联;
25.输出模块:用于在输出框中显示生成的下联。
26.进一步,所述语料库具体包括:基础语料库,并添加对偶句和中国经典的对联扩充丰富语料库。
27.本发明的另一目的在于提供一种执行所述语言对联信息处理系统的语言对联信息处理方法,其特征在于,所述语言对联信息处理方法包括:
28.第一步,通过输入框输入上联,上联信息经过输入模块处理后输入到计算机中;
29.第二步,经由第一步输入的上联数据存储到计算机中后,程序的对联生成模块据输入模块输入的上联触发相应算法逻辑生成下联;
30.第三步,经由第二步生成的下联通过输出模块处理后输出,显示在软件界面上;
31.所述语言对联信息处理方法对联生成模块需要用到语料库;所述语料库具体包括:以《笠翁对韵》为基础语料库,并添加对偶句和中国经典的对联扩充丰富语料库;在使用之前,使用自然语言处理技术对系统进行构建。
32.本发明的另一目的在于提供一种所述语言对联信息处理系统的构建方法,其特征在于,所述语言对联信息处理系统构建方法具体包括:
33.步骤一,选用《笠翁对韵》以及网络上的现代对联作为语料库;
34.步骤二,对语料库中的数据进行统计学习;
35.步骤三,选择seq2seq模型作为概率模型;
36.步骤四,对seq2seq模型进行增量扩展,生成对联系统语言模型;
37.步骤五,利用tensorflow搭建算法模型框架,生成带有平滑算法的对联生成系统;
38.步骤六,使用评估函数检验系统模型,不断进行参数与算法的优化。
39.进一步,步骤四中,所述对seq2seq模型进行增量扩展具体包括:
40.(1)序列对联系统模型接受输入子句,通过对字符使用递归神经网络(rnn) 来捕捉该子句的含义,获得了代表先行子句的单一向量;使用另一个递归神经网络,通过智能字符生成将输入向量解码到后续子句中;上述过程通过编码和解码生成序列的,为基于全局层次的句子;
41.(2)向模型中引入注意力机制来允许解码器进行动态选择并线性化,将输入序列的不同部分与不同的权重组合在一起;所述注意力机制基本上模拟了输入和输出位置之间的对齐,因此将其视为局部匹配模型;同时所述注意力机制还可解决音调编码问题;
42.(3)最后添加针对对联生成的平滑算法使得对联生成器能够对生成的对联进行多次打磨,进行一次或多次的迭代,以改进措辞;从前一次迭代生成的草案将被纳入隐藏状态,在下一次迭代中生成经过打磨修改的一副对联;即先前生成的子句草案的信息表示将被再次用作输入,用作语义连贯的附加信息。
43.进一步,步骤六中,所述评估函数为:
44.选用交叉熵作为损失函数;其公式为:
[0045][0046]
其中p,q分别代表两个不同的分布,一个是真实分布,一个是预测分布;通过上式计算测试集上的分布和真实情况的相似性,从而判断模型在测试集的准确性。
[0047]
本发明的另一目的在于提供一种实现所述语言对联信息处理方法的计算机程序。
[0048]
本发明的另一目的在于提供一种实现所述语言对联信息处理方法的信息数据处理终端。
[0049]
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的语言对联信息处理方法。
[0050]
综上所述,本发明的优点及积极效果为:
[0051]
本发明的对联系统的实现是对“陈寅恪难题”和陈寅恪的“对对子”的较完美回应;本发明通过对语言的拓扑性的探索,可以更加整体、综合地理解中文的句法结构。本发明从语义空间到语法空间,再从平面空间到三维拓扑空间,在语义、句法和语用三个维度上以认知的角度研究它的规律,从而打破了这三者之间的界限。
[0052]
本发明可实现对联的自动生成,无论是古代对联还是现代对联都可以从容应对,具有很强的健壮性。
[0053]
本发明将基于神经网络的seq2seq模型应用到对联系统中可以实现对联的自动生成,通过模型的不断训练效果会逐步提升。
附图说明
[0054]
图1是本发明实施例提供的语言对联信息处理系统结构示意图;
[0055]
图中:1、输入模块;2、语料库;3、对联生成模块;4、输出模块。
[0056]
图2是本发明实施例提供的语言对联信息处理系统构建方法流程图。
[0057]
图3是本发明实施例提供的语言对联信息处理系统构建方法流程图。
[0058]
图4是本发明实施例提供的序列对联生成系统示意图。
[0059]
图5是本发明实施例提供的基于注意力机制的对联生成系统示意图。
[0060]
图6是本发明实施例提供的带有平滑算法的对联生成系统示意图。
[0061]
图7是本发明实施例提供的损失函数示意图。
[0062]
图8是本发明实施例提供的神经元结构示意图。
[0063]
图9是本发明实施例提供的神经网络结构图。
[0064]
图10是本发明实施例提供的递归神经网络简易示意图。
[0065]
图11是本发明实施例提供的递归神经网络完整结构图。
[0066]
图12-图15是本发明实施例提供的语言对联信息处理系统的应用效果图。
具体实施方式
[0067]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0068]
下面结合附图对本发明的应用原理做详细描述。
[0069]
如图1所示,本发明实施例提供的语言对联信息处理系统具体包括:
[0070]
输入模块1、语料库2、对联生成模块3、输出模块4;
[0071]
输入模块1:用于通过输入框输入上联;
[0072]
语料库2:用于存储对联相关数据;
[0073]
对联生成模块3:用于根据输入模块1输入的上联触发相应算法逻辑生成下联;
[0074]
输出模块4:用于在输出框中显示生成的下联。
[0075]
本发明实施例提供的语料库2具体包括:以《笠翁对韵》为基础语料库,并添加对偶句和中国经典的对联扩充丰富语料库。
[0076]
如图2-图3所示,本发明实施例提供的语言对联信息处理系统构建方法具体包括:
[0077]
s101,选用《笠翁对韵》以及网络上的现代对联作为语料库;
[0078]
s102,对语料库中的数据进行统计学习;
[0079]
s103,选择seq2seq模型作为概率模型;
[0080]
s104,对seq2seq模型进行增量扩展,生成对联系统语言模型;
[0081]
s105,利用tensorflow搭建算法模型框架,生成带有平滑算法的对联生成系统;
[0082]
s106,使用评估函数检验系统模型,不断进行参数与算法的优化。
[0083]
步骤s104中,如图4至-图6所示,本发明实施例提供的对seq2seq模型进行增量扩展具体包括:
[0084]
(1)首先,序列对联系统模型接受输入子句,通过对字符使用递归神经网络(rnn)来捕捉该子句的含义,获得了代表先行子句的单一向量;使用另一个递归神经网络,通过智能字符生成将输入向量解码到后续子句中;上述过程通过编码和解码生成序列的,为基于全局层次的句子;
[0085]
(2)其次,向模型中引入注意力机制来允许解码器进行动态选择并线性化,将输入序列的不同部分与不同的权重组合在一起;所述注意力机制基本上模拟了输入和输出位置之间的对齐,因此将其视为局部匹配模型;同时所述注意力机制还可解决音调编码问题;
[0086]
(3)最后添加针对对联生成的平滑算法使得对联生成器能够对生成的对联进行多次打磨,进行一次或多次的迭代,以改进措辞;从前一次迭代生成的草案将被纳入隐藏状态,在下一次迭代中生成经过打磨修改的一副对联;即先前生成的子句草案的信息表示将被再次用作输入,用作语义连贯的附加信息。
[0087]
步骤s106中,本发明实施例提供的评估函数为:
[0088]
选用交叉熵作为损失函数;其公式为:
[0089][0090]
其中p,q分别代表两个不同的分布,一个是真实分布,一个是预测分布;通过上式计算测试集上的分布和真实情况的相似性,从而判断模型在测试集的准确性。
[0091]
下面结合具体实施例对本发明的应用原理做进一步描述。
[0092]
实施例1:
[0093]
1、开发环境:
[0094]
笔记本电脑
[0095]
操作系统:win10系统
[0096]
开发平台:pycharm
[0097]
开发语言:python3.6
[0098]
计算框架:tensorflow 1.6
[0099]
2、使用的语料是以文本格式保存,每一行存储一个字符,总数有9131个字。
[0100]
3、界面展示:
[0101]
本发明实施例提供的界面比较简洁,由两个文本框和一个按钮构成。首先根据个人喜好在上联的文本框中输入一个上联,这个长度设计为1-50个字之间,可以满足绝大多数的对联需求。然后用户点击生成按钮,触发相应算法逻辑,随后系统会在下联的对话框内给出对联结果。
[0102]
4、系统测试
[0103]
(1)首先针对唐诗中的五言、七言绝句进行测试。
[0104]
输入传统唐诗中的的五言绝句和七言绝句,经过运行可以发现它都可以直接对出全新的下联,这与原诗中的结果截然不同,而且对仗工整。这说明seq2seq 模型会根据输入的语料进行学习和模仿。当然也应该看到,对联和诗歌是有显著区别的,诗歌不必严格遵循对偶的规则。例如当输入“窗前明月光”时,对出的结果是“山顶白云闲”。在这个例子中上下联的呼应效果就不好,相应位置上的每个词语没有形成合适的对仗,这是因为上联本来就不是一个严格的对偶句。
[0105]
(2)其次针对古代和现代对联分别进行测试。
[0106]
古代对联选用《笠翁对韵》中的句子,上句是“解醉知茶力”,系统给出的结果是“开怀见酒神”。而原文中的下联是“消愁识酒权”。不难看出下联虽然与原句不同,但是对仗出的效果却惟妙惟肖,恰如其分。
[0107]
选择现代对联进行测试。在上联输入“东海白鹤千秋寿”,下联的原文是“南岭春松万载春”。而对联系统给出的结果是“南国红梅万古香”。在每个相应的位置,词语和词性都是恰到好处。由此发现,对联系统无论是古代对联还是现代对联都可以从容应对,说明它有很强的健壮性。
[0108]
(3)边界测试:
[0109]
如果在上联框中什么都没有输入,即字数为零时,下联将给出文字提示“您的输入太短了”。这也符合人们日常的逻辑,如果上联没有内容,下联自然也不会有相应的结果。
[0110]
而当输入的字数超过50个字时,同样给出“您的输入太长了”的回复。这是因为系统设计逻辑时就对字数进行了限定:如果超过50个字就会出现这样的结果。常用的对联字数不会超过50字,超过50字的对联也没有实际应用价值。
[0111]
(4)叠词测试:
[0112]
叠词的测试对于对联来说很关键,是检验性能的一个重要指标。尝试输入从网络上随机查询的一个例子:“是是非非,非非是是,是非不分”,得出的结果就不太理想。第二句中的“黑黑黑白”显然出现了错误,本应是“白白黑黑”。显然系统在面对叠词时还不能很好识别,算法有待提高。
[0113]
(5)单字测试:
[0114]
进行了三组测试,在处理单字的任务时,系统多数情况下的表现是差强人意的。系统给出的下联通常不是意义相对的词,而是给出和上联可以共同构成一个词的结果。这说明当字比较少时,这个语言模型学习到的语义、词法还是比较有限,只是就近按照概率得出的结果。
[0115]
5、系统评估
[0116]
本发明中的对联系统采用了自然语言处理领域的统计方法,即基于机器学习的原理,需要对模型不断的训练。只有模型得到了优化,对联系统的性能才能更优。模型训练的目的在于参数和算法的优化,评估标准负责检验模型的优劣。损失函数就是这样一种评估函数。本发明选用交叉熵作为损失函数。交叉熵的数学定义如下:
[0117][0118]
其中p,q分别代表两个不同的分布,一个是真实分布,一个是预测分布。通过此公式可以计算出测试集上的分布和真实情况的相似性,从而判断模型在测试集的准确性。经过一段时间的训练,损失逐渐降低(横轴为迭代次数、纵轴为损失)。损失函数的图像如图7所示。
[0119]
实施例2:
[0120]
对联作为中文独特的一种文体和艺术形式,体现了中国人的一种精妙的思维认知方式。智能科学实验室从2013年起就开始了对联系统的研究和建设。选择对联系统作为本发明语言研究的一个落脚点和切入点,试图以对对联来最大程度地展现中文的对称性和拓扑性,这样理论和实践得到了有机结合,通过这种方式为中文自然语言处理开辟出一条蹊径。
[0121]
1、对联的特征
[0122]
对联具有自己的特征,使其与其他文体区别开来。对联有不同的文字长度,短一些
的对联仅有一到两个字;长的可达几百字。对联有各种各样的形式,有正对、反对、流水对、联球对、集句对等(刘利生,2011)。但不论是使用哪种形式的对联,它必须具有下面的特点:
[0123]
一要字数相等,断句一致。
[0124]
二要平仄相合,音调和谐。平仄声是基于四种声调,一般把四种声调分为两类,所以有“平仄”的说法。根据古音和今音的对照,大概是这样分的:现在拼音的一声、二声约相当于古代的平声,现在拼音的三声、四声相当于古代的仄声。一般上联的末尾字使用仄声,而下联的末尾字使用平声(董励,2011)。
[0125]
三要词性相对,位置相同。这要求相对应的词语词性必须是一致的,而且相对应的词语必须出现在同一个地方。
[0126]
四要内容相关,上下衔接。上下联的内容必须是紧密相关的,但是不能一样。而横批作为一副对联的灵魂,它是对联中心的总结,一定要起到提纲挈领的作用。
[0127]
五对联在一般情况下并不需要押韵,仅在律诗中的对偶句才有押韵的必要。
[0128]
2、对联的拓扑性
[0129]
语言具有拓扑性,而对联属于语言的范畴。据此展开联想,那么对联也应该具有拓扑的某些性质。根据对联的特点,不难想到拓扑学中同胚映射的概念。即如果拓扑空间之间的映射f:x

y是双射,并且f和f-1
都连续,那么称f是一个同胚。若存在从x到y的一个同胚映射,就称x与y同胚,常记为f:这个过程也被称为拓扑变换。而对联中的上联就相当于x,下联则相当于y。输入上联,然后生成下联。在这个对联生成的过程中,就是从上联到下联的一个拓扑映射。这里拓扑空间是语义空间,上下联的对仗规则对应于映射的函数关系。很显然对对联的过程就是拓扑变换,这其中上下联的字数、平仄、词性、语义关系并没有发生变化,所以对联系统具有拓扑不变性。对联具有了拓扑性,也就具有了空间感和画面感,那么对联所传达的中心思想得以立体化和饱满化。这正是语言家和文艺工作者所追求的。更加欣慰的是,运用数学的观点解读对联会有全新的体验,因为这样可以通过另外一个角度去体味对联的意境。在这一刻,科学与艺术得到了宝贵的融合。
[0130]
综上所述,对联作为一种习俗,是中国传统文化的重要组成部分,其中有良好的数学结构,对其解释和生成可以帮助本发明更好把握中文,对弘扬中华传统文化有其深远的意义。
[0131]
3、对联系统的构建
[0132]
根据对联上下联对称的特点进行对联系统的开发工作,这将是将理论应用到实践的一次尝试。而在此之前,有不少对联系统已经被研发出来,但是却只能根据数据库已有的上联进行对仗,多为基本属于数据库的一个查询过程。而为了实现对联的自动生成,就必须另辟蹊径,采取基于统计的语言模型和机器学习的算法。对联系统是计算语言学原理最合适的应用,计算语言学是通过建立形式化的数学模型,然后使用计算机程序来分析处理自然语言,从而可以利用机器模仿人的语言能力。同时计算语言学与机器学习密不可分,机器学习为其提供了方法。机器学习有三要素:算法、模型、数据。故设计对联系统也离不开这三个要素,需从这三方面着手去解决问题。
[0133]
4、语料库
[0134]
首先要解决的是数据的问题,在自然语言处理中也即是语料库的问题。没有语料库,即使有算法也不能单独解析语言;另一方面语料库的质量、规模等特征都对解析的结果
产生很重要的影响。由于电脑存储的的容量大,文本资料真实,信息提取快速、准确,语言学家可以使用电子语料以从多个角度、层面描述语言并验证各种语言理论和假设,甚至建立新的语言模型和语言概念。
[0135]
语料库(corpus,复数为corpora或corpus)被定义为:是存储在计算机中用于语言研究和应用的语言材料。而它的收集是由自然发生的书面或口头样本组成的,用来代表特定的语言或语言变体。
[0136]
语料库不是文字随意地堆放在一起,它拥有以下四个特点:
[0137]
(1)语料库中的内容应该来源于真实文本,需要具有代表性;
[0138]
(2)语料库应是机器可读的,具有被计算机技术处理的格式;
[0139]
(3)收录到语料库中的语料应该经过适当的标记和处理;
[0140]
(4)语料库的规模是有限的。
[0141]
这次对联系统采用的基础语料库是《笠翁对韵》。《笠翁对韵》是智能科学实验室很早就使用的的一个语料库,如果把它作为对联系统的语料有着天然的优势。《笠翁对韵》是过去人们学习写作诗词歌赋,熟悉对偶、韵律、词汇组织的启蒙书。它创作于明末清初时期,作者是李渔,号笠翁,因此书名为《笠翁对韵》。李渔是明末清初的著名戏曲家,曾创作过《闲情偶寄》。全书分为卷一和卷二,按照韵律分开编录,囊括了天文、地理、花木、鸟兽等各种门类的的对偶句。对联的长度从一个字到两个字、五个字、七个字、九个字乃至十一个字不等,韵律和谐,这样人们就可以获得语音、词汇、修辞等方面的锻练。
[0142]
如果语料库仅仅使用《笠翁对韵》是远远不够的,对联对仗的效果也不好。根据机器学习的算法思想,只有足够多的数据才能训练出更好的对联系统。这时扩充语料库就显得尤为必要。于是从互联网上搜集一些语料作为有机补充,以提升对联的效果。本发明选用了一些对偶句和中国经典的对联,力图丰富现有的语料库,到目前为止语料库已经搭建完毕。
[0143]
5、语言模型
[0144]
在机器学习中,模型代表要进行学习的条件概率分布或决策函数。这种基于机器学习的方法是根据训练集产生模型,根据模型分析新的实例。在此基础上,语言模型则是用来计算句子中某种语言出现概率的统计模型。一般自然语言的统计单位是句子,所以也可看做是句子的概率模型。语言模型有很多种,比如朴素贝叶斯模型、隐马尔科夫模型、最大熵模型、条件随机场模型、seq2seq (sequence to sequence)模型等。而具体到本发明中对联系统的特点,选用的是seq2seq模型。因为在对联系统中存在上联和下联两个部分,同时需要根据上联给出下联,上联和下联之间存在某种逻辑关系。这正好符合seq2seq模型的特点。顾名思义,sequence是序列的意思,seq2seq模型就是从一个序列到另一个序列。起初这个模型的提出是用于翻译的。seq2seq模型是在2014年,由 google brain(cho et al,2014)和yoshuabengio(sutskever et al,2014)两个团队各自独立提出来的,他们致力于机器翻译领域。
[0145]
这实际上是一个翻译模型,输入是一个序列,比如一个英文句子,输出也是一个序列,比如一个中文句子。运用模型的目的是把一种语言序列翻译成另一种语言序列。整个处理过程通过使用递归神经网络,将一个序列作为输入影射为另外一个输出序列。这种结构最重要的地方在于输入序列和输出序列的长度是可变的。在开始时这个模型多数用于机器
翻译,但随着技术的成熟,在自动对话机器人、文档摘要自动生成、图片描述自动生成等领域也逐渐得到了应用。虽然形式不同但本质都是一样的。因为它们都是端到端的模型,图片、文字都可以作为一个输入的序列。因此将seq2seq模型应用到对联系统中应该会起到不错的效果。
[0146]
6、seq2seq模型核心算法
[0147]
(1)人工神经网络
[0148]
神经网络和拓扑学一样,也是一种认知模型。神经网络既是构成深度学习技术的核心,也是seq2seq生成式模型的重要组成部分。本发明讨论的神经网络又称人工神经网络。见名知意,人工神经网络的灵感借鉴了人的大脑,是对于人的思维机制的模拟。众所周知,人脑是由1000亿左右的神经元构成,结构十分复杂。同理人工神经网络同样也需要有大量的“神经元”构成,每个“神经元”有一个激活函数。任意的两个神经元之间都有一个连接,它被称为一个加权值,即是对于输入的一个暂时记忆。针对输入,激活函数会进行相应的处理。神经网络的输出由权值和激活函数共同决定。一个最简单的神经网络只有一个神经元构成,如图8所示。
[0149]
神经元也可以称为感知器神经网络,任意一种复杂的神经网络都由它构成。一个神经元由加权的输入变量和激活函数两部分构成;
[0150]
1)加权的输入变量:
[0151][0152]
这个公式表示某一层的输入变量是由前一层的全部变量和加权的乘积,接着再进行求和。
[0153]
2)激活函数
[0154]
激活函数是一种输出函数,是对中间结果的二次处理。定义如下:
[0155]
yj=f(xj)
[0156]
而具体的激活函数则有很多种。常见的有logistic(回归),sigmoid,tanh (双曲正切),relu(线性修正单元),softmax等函数。最常见的激活函数是 logistic函数,因为其曲线是连续不间断的,同时具备了光滑性,利于后期的计算。
[0157]
复杂的神经网络结构是由两个层次之间的两个相互连接的神经元组成的网络体系结构。它的结构图如图9所示,
[0158]
多层次的神经网络结构。如果以向量的形式表达,那么其数学表达式为:
[0159]
net=w
t
x+b
[0160]
在表达式中w代表每一个节点的权重向量,而x则是每一层要输入的值, b是偏执向量,一般的起始值都是1。将所有数值简化为向量形式更为清晰直观地表达了人工神经网络的功能。
[0161]
(2)递归神经网络
[0162]
本发明所使用的seq2seq模型是sequence-to-sequence的缩写形式。顾名思义,这是从一个序列到另一个序列的转化。本发明中序列代表文字,比如一个词语。而在这两个序
列型之间的数据编码、解码的过程中,递归神经网络被当作处理工具。
[0163]
递归神经网络是在人工神经网络基础上的改进,结构更加复杂,适合处理序列性的数据。一个最简单的递归神经网络结构如图10所示。
[0164]
由图10可知,假设一个神经网络为a,需要获取某个状态的输入xt,接着输出一个值h
t
。由于有循环的使用,信息可以从现在的时间步传递到下一个时间步。更进一步地理解为:同一个网络在不同的时间状态下会进行无数次的循环,同时每一个神经元会把更新的结果传送给下一个时间点。
[0165]
一个完整的递归神经网络是由无数个上述简单递归神经网络构成的,实现了对序列数据的处理。通过分析其原理,网络中的圆形和矩形图案都代表向量。其中x,y分别代表输入和输出向量,也可以代表一个状态。在本发明中,x,y 向量代表文本发明字,即单个的字、词。递归神经网络最大的不同就是在中间加了一层隐含状态h,它的作用在于提取输入的数据特征,继而转化为输出。这是从纵向的角度观察,而从横向来看隐含状态之间也会按照序列顺序转移。如图11所示。
[0166]
每一个箭头代表了对向量的一步转移。其中的数学公式如下:
[0167]
1)横向转移
[0168]
h1=f(ux1+wh0+b)
[0169]
后面的状态都是对第一个过程的重复,参数仍然是u、w、b。以此类推。
[0170]
2)纵向转移
[0171]
y1=softmax(vh1+c)
[0172]
同理,后续的输出和第一个输出遵循同样的规律。每一个箭头都是一次变换过程,可以一直计算下去。具体到自然语言处理领域,c被定义为上下文向量,用于沟通编码和解码两个步骤。通过不断迭代的过程,最终将所有的输入序列都转化成了输出序列。
[0173]
softmax函数是激活函数的一种,主要应用在多分类问题,将输出的值归一化为概率值。它被用于递归神经网络输出部分的优化。假设c是要预测的类别个数,输出为a,其个数也为c,即a1,a2.......a
12
。那么对于某一个样本来说,它是类别i的概率就是softmax的函数值。其数学表达式为:
[0174][0175]
(3)seq2seq模型
[0176]
seq2seq模型是递归神经网络的变种。由于递归神经网络只能处理输入和输出序列相等的情况;作为对它的改进,seq2seq模型可以应对输入和输出长度不一致的情形。最基本的seq2seq模型包含了三个部分:encoder(编码器)、decoder (解码器)以及连接两者的中间状态向量,它被称作state vector,大小是固定的。这个模型中包含了两个递归神经网络,编码器是一个递归神经网络,而解码器是另一个递归神经网络。编码器接受输入的数据,并把它编码为大小不变的状态向量s,然后将s传递给解码器,解码器再对状态向量s进行一个学习的过程,最后将学习的结果输出。在介绍seq2seq模型之前需要定义以下概念:
[0177]
1)输入这个模型分为输入和输出两部分。seq2seq模型假设给定先行句为 a集合,
[0178]
a={x1,x2,....,xm},xi∈v,
[0179]
xi是一个字符,v代表词汇,然后就可以掌握先行句a的抽象表示。
[0180]
2)输出接着生成后续子句s={y1,y2,.....,ym}。根据集合a,这表明了语义是连贯的。同时又有yi∈v。更具体一点,每一个在s中的字符yi都与在a 中对应的字符xi相协调,这是由对联约束决定的。
[0181]
要将输入子句编码为隐藏向量,然后将向量解码为输出子句,使这两个子句实际上是一副对联。由于对联的产生有其特殊性,于是提出了不同的神经网络模型。对模型进行增量扩展,使最终模型能够解决对联生成的复杂问题。
[0182]
首先介绍最基本的模型:序列对联系统。这个模型接受输入子句。通过对字符使用递归神经网络(rnn)来捕捉该子句的含义。这样就获得了代表先行子句
[0183]
的单一向量。然后使用另一个递归神经网络,通过智能字符生成将输入向量解码到后续子句中。基本上这个过程是通过编码和解码生成序列的,这是基于全局层次的句子。图4显示了连续对偶生成的图。
[0184]
第二个模型是基于注意力机制的对联生成。事实上基本的seq2seq模型有很多缺点,首先编码器将输入编码为大小不变的状态向量。这个过程实质上就是一个“信息有损压缩”,假如信息的容量越大,那么将这个向量转换为信息的过程损失就越大。与此同时,序列的长度越大意味着时间维度中的序列很长,并且递归神经网络模型也将出现梯度分散。最后,编码器和解码器模块的基础模型连接组件只是一个大小不变的状态向量,这使得解码器不能直接了解到输入信息的许多细节。正是基于seq2seq模型存在不可避免的缺陷,随后引入了注意力机制的概念。
[0185]
通过分析可以发现:在一副对联中存在一个特殊的现象:前一个子句和后一个子句中相同位置的字符,即xi和yi,通常具有某种关系作为“联结”或“配对”。因此,应该模拟对联生成的神经模型中xi和yi之间的这种一对一的对应关系。最近,提出了注意力机制来允许解码器进行动态选择并线性化,将输入序列的不同部分与不同的权重组合在一起。注意力机制基本上模拟了输入和输出位置之间的对齐,因此可以将其视为局部匹配模型。此外,音调编码问题也可以通过成对的注意力机制来解决。图5显示了注意力机制对序列对联生成模型的扩展。
[0186]
针对对联生成的平滑算法。对联的生成是一种艺术形式,艺术通常需要打磨。与先前神经网络模型中的传统单通道生成器相比,这里提出的对联生成器将能够对生成的对联进行多次打磨,进行一次或多次的迭代,以改进措辞。该模型本质上与基于注意力机制的序列对联生成是相同的。除了先前生成的子句草案的信息表示将被再次用作输入,用作语义连贯的附加信息。原理如图6所示;从前一次迭代生成的草案将被纳入隐藏状态,在下一次迭代中生成经过打磨修改的一副对联。
[0187]
7、tensorflow
[0188]
现在的任务是实现这个算法模型,这就需要计算框架的支持。而tensorflow 就是这样一种执行机器学习算法的框架。或者说它既是一种人工智能学习系统,也是一个实现机器学习算法的接口。tensorflow是谷歌基于第一代人工智能系统distbelief进行研发的第二代人工智能系统,其命名来源于本身的运行原理。
[0189]
tensor中文意为张量,张量是n维数组,flow的中文意为流。而 tensorflow框架是
基于数据流图的计算,它可以实现张量从流图的一端流动到另一端的计算过程。tensorflow是一个将庞大的数据结构转换为数据流图并在神经网络中进行分析和处理的计算框架或者开源软件库。
[0190]
tensorflow在众多深度学习框架中独领风骚,很多科研工作者和程序员在工作中都首选它,这得益于其优异的性能和算法的执行效率。它的内部实现原理复杂而巧妙。tensorflow的计算可以表示为有向图,图中的每个节点代表图中的数学运算。节点和节点之间的连接称为边,它表示节点之间互连的多维数据数组,即张量。这个有向图描述了数据的计算流程,它也负责维护和更新状态,用户可以对有向图的分支进行条件控制或者循环操作。用户可以使用python、 c++、go、java等几种语言设计此数据计算的有向图。有向图中每个节点可以有任意数量的输入和输出,同时每个节点描述一种运算操作,一个节点可以是一个运算操作的实例化。tensorflow有一个重要的组件client,即客户端,它通过session接口连接到master和多个worker。每个worker都可以连接到许多硬件设备,必须有cpu(中央处理器)或gpu(图形处理器)的支持,而且它负责管理这些硬件。而master就负责指导所有worker依照流程执行有向图。
[0191]
图12是在系统中输入上联“致敬中文”,输出下联为:“化为大作”。看似平淡,对于本发明系统的进一步走向,就是准备把研究对象,进一步向文言文深入,准备整合更多的中文的方面进入到系统中的努力呼应。输入上联“著书唯剩颂红妆”,这句话是陈寅恪先生对自己写《柳如是别传》的概括。系统得到下联:“问句何妨弹碧纱”,此为图13;又以“问句何妨弹碧纱”为上联,系统对出下联为“临风何必问青莲”。为图14;又以“临风何必问青莲”为上联,系统对下联为“望月方能思故乡”。为图15。若又以“望月方能思故乡”为上联一直对下去,本发明测试了,到第24幅时循环了。本发明测过“一字”,“二字”和“多字”的对联。上面几幅截图为代表。
[0192]
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
[0193]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1