导读:近年来,机器人写作的新闻都会不绝于耳。不少人对此会产生好奇,机器到底是如何写作的呢?在近期举办的中国计算机大会技术论坛之“自然语言生成:让机器掌握文字创作的本领”上,来自哈尔滨工业大学计算机学院社会计算与信息检索研究中心副主任秦兵教授分享了在机器写作方面的成果和案例。九州连线根据现场资料整理如下:
人工智能的发展阶段大概经历了三个阶段,计算智能、感知智能、认知智能。在这些阶段,人工智能分别具有能存会算、能看会读、能理解会表达的特征。到了认知智能这个阶段,我们都希望它可以有智商、有情商、能够进行自我表达,所以表达生成也是智能当中很重要的部分。
文本生成广受关注
文本生成是指期待未来有一天计算机能够像人类一样会表达,能够撰写出高质量的自然语言文本。在文本生成中,我们有很多任务。归结起来有,文本到文本、数据到文本、图像到文本三种任务。
文本到文本:文本到文本的生成主要指对给定文本进行理解、丰富、变换,从而获得新文本的技术。例如,一个长文本到短文本;亦或是对话的上一句到下一句等类似的文本生成。
数据到文本:数据到文本的生成指根据给定的数值数据生成相关文本。结构化数据例如,财经类新闻、比赛类新闻,就是数据到文本的生成。
图像到文本:图像到文本的生成是指根据给定的图像生成描述该图像内容的自然语言文本。
从近三年的统计结果来看,文本生成论文的分布是逐年上涨的。由此可见,从任务层面讲,文本生成任务是得到大家广泛关注的。
议论文生成需先理解题意
文本生成可以分为句子级文本生成和篇章级文本生成等。
句子级文本生成包括标题生成、对话生成、风格迁移;篇章级文本生成包括诗词生成、财报赛事、篇章议论文。
从文本的生成角度来看,大多数的人对诗歌、赛事、对话等形式或许已经司空见惯,因此我们主要以议论文为例。
从议论文的结构来讲,是由论点、论据、论证组成;从议论文的语言风格来讲,议论文是准确、严密的;并且具有概括性和简洁性。从议论文的逻辑来讲,议论文有清楚的逻辑关系,如总分、层进、并列等;所以,这些都对现有的生成模型提出挑战。例如,基于神经网络的模型生成的结果重复情况严重;存在语义偏移的问题。
因此,如果我们要产生议论文,首先需要生成议论文标题。例如,利用现有的题干进行立意分析之后,寻找论点,通过论点扩展论点句,通过句子的选择、排序,生成议论文。
虽然我们在做的是生成,但实际上我们需要先理解题意。从类型角度讲,题干一般有三种类型。例如,命题、半命题、题目自拟。
议论文如何抓住题意
如何抓住题意是在写议论文时最关键的一点,一般我们会遇到三种类型的题目。
第一种就是直接给定题目;第二种是半命题形式,比如以XX为题,直接将半命题的关键词提取即可;第三种是最难的一种,给出一段话,自己理解后写议论文。这种情况先要进行题意理解。
比如,“人生难免遇到挫折,没有经历过挫折的人生不是完整的人生”,通过这段话自拟题目时,需要首先生成话题词,对于这样的话题词是可以使用深度神经网络进行分析的。
利用一个层次化神经网络编码器来学习材料文本的表示向量,通过一个解码器来预测话题词的概率值,选择概率值较大的词做为这段材料的话题词。例如,生成的话题集合是“挫折”“方向”“命运”“进步”。
其实我们在进行深度学习训练时是需要大量的学习资料的,而议论文题目是有限的,得到的训练题也是有限的,一些真题等对于神经网络来说是远远不够的。
基于此,我们使用了一些知乎的语料,知乎经常有一些话题标签及段落,这些标签可以作为话题词,如此就可以将知乎作为一个训练集,之后再采用迁移学习的方法,使用材料议论文的题在最后一层做微调,这是目前在题意分析上的结果。
当然,可能这只是在获得议论文之后,过程大概是这样的。首先在议论文里获得立意。立意之后开始写文章,进行论点的扩充即扩充话题词,之后进行聚类,以便未来通过不同论点的种子寻找相关句子。
如何为文章填充“血和肉”
在议论文里最关键的就是如何进行句子的抽取和排序,仅仅依靠之前的立意、分析的完成、议论文中心的抓取等词是无法达到800字议论文要求的。
因此,通过这些话题词的扩充就可以找到许多词语集合,将扩充后的词语分别进行聚类,聚成不同段落的论点种子,每个论点种子找到之后,再从论点出发,做为文库里句子的选择和句子的排序这两个过程是尤为关键的。
那接下来如何进行句子的选择和排序呢?
首先我们要想到在做议论文时是有段落结构和句子结构的,也就是说我们在做议论文时,会给段落角色做了一系列标记,对几万篇议论文进行标注,发现可以划分为一些引论段,过渡段和中心论点、材料内容段等11个段落角色。同时在段落里还有句子角色,比如一些材料句、分论点的总结句、升华句等。这些句子本身也是有一定的角色。
当这些标注句子体系都做完之后,我们需要进行句子的选择。接下来的问题就是说,文章生成时,既要与论点相关又要保证它所处的位置,恰好是一个论证的事例句。所以,如何带入角色,一种是在选择时采用基于语义的句子抽取和基于LDA的选择方法,为个句的角色分别保留相似度较高的句子作为候选。
那么,问题来了,当我们选择句子之后,接着就开始进行排序。
排序时我们依旧需要考虑句子的排序问题。运用Learning to Rank(LTR)的方法,里面会有一些特征,同时我们需要统计,在一个句子里不同的段落有不同的转移。所以,对于不同段落的转移都有不同的转移矩阵,将这类句子作为角色特征。
如何评价机器生成的议论文
下面是一个例子。
这就是在刚才排序生成的论文,效果较好。这篇文章在刚开始就点明主题,中间引用事实论据,包括在分论点段落,最后采用排比句作总结升华主题,这是一个完全自动生成的议论文。
刚才有老师也提到,评价确实是一个问题,一个是通过语文老师评价;一个是使用作文自动评阅系统;打分时也会做一些点评,比如这一句是充满艺术魅力的话;某些句子有什么样的特色;这个句子有表现力等等;当然这是人工做的一些模板,给出的分数也是较高的。
最后,对于这篇机器写的议论文,人工阅卷老师给了高分,仔细分析它的优点,一般是主题比较明确、开门见山。缺点也会出现,就是他们之间的链接不够流畅,没有明显的联系及过渡。这也是在机器生成长篇论文时遇到的碎片化问题。这也是以后应该进行完善的地方。
总结
最后总结一下。议论文生成本身是文本生成的一种方式,对长文本的生成和逻辑要求较高,我们进行了一些初步的探索。其实文本生成的任务形式是非常多的。诗歌、对话、风格迁移等,所以需求还是非常广泛的。再就是对于长文本的生成,模仿人类的写作模式值得探索。
总之,议论文生成隶属于篇章级文本生成,与对话和机器翻译等句子级的生成相比,更侧重逻辑以及连贯性的研究,未来我们会进一步探索在知识图谱及事理图谱基础上的长文本生成的研究。