基于深度学习LSTM的古代汉语切分标注算法及语料库研究(上)

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
简介: 基于深度学习LSTM的古代汉语切分标注算法及语料库研究

完整代码:https://download.csdn.net/download/qq_38735017/87382302


摘 要


近年来,深度学习的浪潮渗透在科研和生活领域的方方面面,本文主要研究深度学习在自然语言处理,尤其是古汉语自然语言处理方面的应用。本文旨在利用计算机帮助古文研究者对古汉语完成断代、断句、分词及词性标注等特殊而繁琐的任务,其中的断句、分词是不同于英文自然语言处理的,中文自然语言处理所特有的任务,尤其是断句任务更是古汉语自然语言处理所特有的任务。利用计算机处理古代汉语的各种任务有助于提高语言工作者的工作效率,避免人为主观因素误差,这将他们从繁重的古汉语基础任务中解脱出来,从使他们而将更多的精力投入到后续的授受、义理等内容方面上的研究。


本文使用长短期记忆神经网络作为主体,并针对不同的古汉语自然语言处理任务,设计不同的输入输出结构来搭建具体模型,训练集使用的是网络上公开下载的古汉语语料,并且我们对其中的部分上古汉语语料文本进行了手工标记。本文中设计的模型可对古汉语文本完成断代、断句、分词及词性标注的操作。本文涉及的的主要工作和创新点如下:


使用长短期记忆神经网络作为主体构建古代文本断代模型。在断代模型当中,文本中的每一个字被转换成一串高维向量,然后将文本包含的所有向量送入模型分析它们之间的非线性关系。最终,模型会输出一个该段文本的年代类别标签。实验结果表明利用 Bi-LSTM(Bi-directional Long Short-Term Memory, Bi-LSTM)神经网络构造的模型能够很好的完成断代任务,断代的正确率能达到 80% 以上。本文的断代模型提供了一种高效且准确的古文断代方法,这将节省古文研究工作者在文本断代过程中的时间。


针对某些古代汉语书籍原著中缺少标点符号的问题,本文提出一个断句模型。本部分我们通过深度神经网络对大量已经断句的古汉语文本进行学习,使断句模型自动学习到某一时期、某种题材的断句规则,从而在后面的古代汉语文献信息化过程中,可以将断句工作交给计算机来完成,减少部分古汉语工作者的任务量。


提出一个自动分词及词性标注一体化模型。由于目前尚没有公开的具有分词和词性标注的古汉语语料库,因此本文通过手工标记部分语料的方法得到了少量的数据集,将它们存入数据库作为训练集训练模型。实验表明本文提出的分词标注模型可以较好的完成古汉语分词标注任务。数据库也可通过模型加人工校准的方式进一步扩充。


论文以 Bi-LSTM 网络为主要结构,建立了一系列针对古代汉语文本不同任务的模型。实验证明,在现有有限的古汉语语料库中本文提出的模型已具备较好的效果,并可以应用到后续更大语料库的构建当中,作为辅助工具帮助古汉语工作者对文本的标记工作。新产生的语料库又可继续用来训练模型提高模型的精度,以此构成语料库和模型互相促进提高的局面,促进古汉语信息化及大型古汉语语料库的构建。


关键词: 古汉语,自然语言处理,断代,断句,分词,词性标注


Machine Learning-based Segmentation, Tagging


and Corpus Building for Ancient Chinese


三、Abstract


In recent years, deep learning has penetrated into every aspect of research and life. This paper mainly studies the application of deep learning in natural language processing, especially in ancient Chinese natural language processing. This paper aims to use computer to help ancient Chinese researchers to complete special and cumbersome tasks such as dating, sentence breaking, word segmentation and part-of-speech tagging in ancient Chinese. The sentence breaking and the word segmentation are the unique tasks of Chinese natural language processing, especially the sentence-breaking tasks are the unique tasks of ancient Chinese natural language processing. The use of computers to deal with the various tasks of ancient Chinese helps to improve the efficiency of language workers and avoid the subjective factors of human error, which frees them from the heavy basic tasks of ancient Chinese, so that they can put more energy into other aspects of research.


In this paper, we use Long short-term memory neural networks as the main body, and design different input and output structures to build specific models for different ancient Chinese natural language processing tasks. The training set is an ancient Chinese corpus that we have publicly downloaded from the Internet, and we have manually marked some of the ancient Chinese corpus texts. The model designed in this paper can complete tasks such as breaking the ancient Chinese text, breaking sentences, word segmentation and part-of-speech tagging. The main work and innovations covered in this article are as follows:


The Bi-LSTM was used as the main body to construct the ancient text dating model. In the age judging model, each word in the text is converted into a series of high-dimensional vectors, and then all the vectors contained in the text are sent to the model to analyze the nonlinear relationship between them. Finally, the model outputs a time category label for the text of the paragraph. Experiments show that the model constructed by Bi-LSTM can perform the task of age judging well, and the prediction accuracy can reach 80%. The model in this part provides an efficient and accurate method for ancient Chinese texts’ age judging, which will save the time consumption of ancient Chinese researchers in the process of textualization.


In view of the lack of punctuation in the original works of some ancient Chinese books, this paper proposes a sentences breaking model. In this part, we use the deep neural network to learn a large number of ancient Chinese texts that have already been sentenced, so that the sentences breaking model automatically learns the rules of sentences breaking in a certain period and a certain subject. So in the process of informationization of ancient Chinese literature, we can hand over the sentences breaking work to the computer to reduce the task of ancient Chinese workers.


An integrated model of automatic word segmentation and part-of-speech tagging is proposed. Since there is no public Chinese corpus with word segmentation and part-of-speech tagging, this paper obtains a small number of data sets by manually marking tag, and stores them in the database as a training set training model to verify the word segmentation proposed in this paper. Experiments show that the word segmentation and annotation model proposed in this paper can accomplish the task of marking ancient Chinese word segmentation well. The database can also be further expanded by model labeling and manual calibration.


Based on the Bi-LSTM network, the paper establishes a series of models for different tasks of ancient Chinese texts. The experiment proves that the model proposed in this paper has good effects in the existing limited ancient Chinese corpus. The model can be applied to the construction of the subsequent larger corpus as an auxiliary tool to help the ancient Chinese workers mark the text. The new corpus generated by the model can be used to train the model to improve the accuracy of the model, which constitutes a situation in which the corpus and the model promote each other, and promotes the informationization of ancient Chinese and the construction of a large ancient Chinese corpus.


Key Words: Ancient Chinese, Natural language processing, Judging the age, Punctuation, Word segmentation, Part of speech


四、课题研究背景及意义


随着科技不断发展,人工智能与各个领域的结合逐渐深入,人工智能领域目前是各大行业关注的焦点。“AI(Artificial Intelligence, AI)+”逐渐和“互联网 +”一起推动整个社会科技的发展。人工智能研究的目的是了解智能的实质,并生产出一种新的能以与人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别和自然语言处理(Natural Language Processing, NLP)等[1] 。其中自然语言处理是计算机科学,人工智能,语言学和人类(自然)语言之间的交叉领域。这一领域的研究将涉及对自然语言进行各种分析处理,所以它对于各种语言学的研究有着重要的意义。


自然语言处理研究是能实现人与计算机之间用自然语言进行有效通信的各种理论和方法[2] 。这一领域的研究涉及自然语言,即人类使用的语言,所以它与语言学的研究有着密切的联系,是将语言、文字进行信息化的基础。中文自然语言处理是自然语言处理的一个重要部分,中文相比于英文有历史更悠久、词边界较难鉴定、句法更灵活等众多特殊性[3] 。近年来,国内针对中文的自然语言处理的相关研究也逐渐受到重视。伴随着深度学习热潮兴起,中文分词[4] 、词性标注[5] 、命名实体识别[6] 和句子结构化表示[7] 等中文自然语言处理的研究也在深度学习技术的推动下获得了长足的发展。随着中文信息化的程度越来越深,我们越来越发现蕴含着中华民族千百年智慧的古汉语书籍更加需要我们利用现代化的技术进行妥善的保存、处理。对于古汉语文章书籍的组织、采录、收集、整理、纂修、审定也逐渐转移到了计算机上。古代汉语,是与现代汉语相对而言的,古代汉族群众的语言[8] 。在数千年的演变过程中,我们的现代汉语已和古汉语有很大的不同,未接受过专业教育的人一般较难读懂原始的古汉语书籍。由于古汉语的专业性,古汉语自然文本的采录、处理和分析过程大多由专业的古汉语研究者来操作,整个过程十分消耗人力物力。自然语言处理技术与古汉语处理的结合使人们可以利用机器处理复杂的古汉语任务,而无需再花大量的时间和精力去学习和检索不符合现代人习惯的古汉语语法。


对于实体古籍来说我们需要将其数字化、信息化,分门别类存档入库,这有利于我们传承传统文化和保护先人的思想精华。对于已经入库的电子书来说,我们需要利用现代中文自然语言处理技术对其进行更深层次的结构化处理和数据挖掘[9] 。这对于现有古汉语书籍的保存、知识提取和历史研究将具有重要意义,将促进我国的数字人文建设[10] 。然而现实是当前古汉语数字化进展大多停留在入库阶段,其后期的分词、词性标注、命名实体识别、文本结构化处理、文本分类等研究较少,目前所实现的一些方法其精度也不是很高。限制目前各类方法精确度的一部分原因是,中文有据可查的文字源自公元前 14 世纪的殷商后期,这时形成了初步的甲骨文,距今已三千多年,而这三千多年的演变过程中,中文的字义、词义和句法等也在不断的动态变化中。以古文翻译来说,“汤”,原指一切热水,现在仅指食物煮后所得的汁水或烹调后汁特别多的副食。又如“治”的本义是平治水患,所以字从“水”旁,后来扩大为泛指一切治理。由此可见不同时代的中文,会有不同时代的特色,并不是一成不变的。面对我们中文历史源远流长的情况,试图构造出一种普适于各种时代的模型是很难实现的。所以只有判定了古籍所在的大致时间,才可以更加有针对性的对古籍进行后续研究,提高研究的精度和效率。


清代以来中国文人也在古文断代领域进行不断的探索,包括刘师培、章太炎等在义理方面进行研究[11] ,之后还有高本汉、戴闻达和尤锐等利用现代汉语方法进行研究[12] 。以上方法无论是从内容上还是从词法上,都充分说明了古文的文本内容中含有足够用来断代和辨伪的信息量,这是利用机器学习解决该类问题的必要条件。本文利用深度学习的方法,通过对某些年代的古籍进行学习,使深度学习模型自动地学习到不同时期的古籍中的文法、词汇规律,得到可自动断代的深度学习模型。模型从古籍中自动提取出的高维信息中不仅包含某一种词类的词法信息,也包含了词与词构成的句法信息以及其他更高维的信息,以模型的预测结果作为参考再进行后续的研究将大大地解放学者们的时间和精力。本部分所研究的模型在文本断代方向将有重要的实践意义。


本文的第一部分主要内容试图从古籍时间判定的角度在中国古文自然语言处理领域进行一定的探索。从输入输出的关系来看,古文时间判定任务为一个文本分类任务。目前的文本分类模型,大致可分为两类,一类是基于规则或基于概率统计的传统机器学习方法,另一类是基于深度学习方法。其中,基于规则或概率的方法相对简单,易于实现,在特定领域能取得较好的效果。其优点是时间复杂度低、运算速度快。但是在基于规则和概率的方法中,需要考虑很多规则或特定条件来表述类别,因此需要通过领域专家定义和人工提取特征。结合深度学习方法来解决特定领域问题是近年来的一个趋势。基于注意力机制的模型最近表现的非常强势,注意力机制模型主要面向现代语言,其成功主要依赖于当下互联网时代的海量信息化的文本,例如 wiki 百科、各类新闻媒体以及网络评论留言等,通过大量的训练集才得以训练出模型中的大量参数,然而这一切在语料资源相对缺乏的古汉语领域并不适用。因此,本文提出使用 Bi-LSTM 深度学习网络模型实现自动化古籍时间断定即古汉语文本分类任务。在判断好年代的基础上,从而可以对古代汉语进行更有针对性、更深层次的处理和研究,例如后面要提到的中国古汉语特有的断句任务以及中文自然语言处理特有的分词任务等。


断句在古代叫“句读”。《辞海》解释:文辞语意已尽处为“句”,语意未尽的停顿处为“读”。古书是不加句读的,只是一个字一个字地排列,读者边读边断,直至终篇。句读涉及到整个古代汉语和古代文化知识领域。如果初学者缺乏句读训练,就谈不上读位古书了。正因为句读是一种综合性很强的知识技能,在研究领域中,句读的添加与校正全部是由古汉语工作者手工完成的,我们看到的已标点的古书是经反复点校后再印的,古汉语工作者利用他们夜以继日的调研,笔耕不辍,完成了大量的古籍句读工作,这给我们阅读古书带来了方便。但古代书籍浩如烟海,因此本文在第二部分所研究的针对古汉语的断句模型十分必要。


中文自然语言处理是对汉语的各级语言单位(字、词、语句、文章等)进行自动加工处理,使计算机可以分析和处理中文自然文本的技术[13] 。计算机在进行中文自然语言处理时一般是以词为最小单位的,更深层次的语言语义分析都是以中文分词技术为基础的。我们知道,在英文文本中,单词之间是以空格作为自然分界符的。中文和英文比起来,有着自身的特点,就是中文以字为基本书写单位,句子和段落通过分界符来划界,但是词语之间没有一个形式上分界符。也就是说,从形式上看,中文没有“词”这个单位[14] 。所以,中文分词技术是做中文自然语言处理必不可少的一项关键技术。本文的第三部分内容主要针对中文分词和词性标注进行论述。中文分词相关研究开始于 20 世纪 80 年代初,自 2003 年国际中文分词评测活动 Bakeoff 正式开展至今,中文自动分词技术有了长足的进步。中文分词技术发展到目前为止已经提出很多各具特色的方法,现代汉语中文分词技术已经进入了实用化阶段,广泛应用于机器翻译、信息检索、语义识别等领域[15] 。


古汉语分词研究可以服务于古汉语学术研究,是古汉语自然语言处理领域后续的机器翻译、情感分析和语义识别等工作的基础;与此同时,词语的标注是 NLP 任务预处理中的重要步骤,再进行句法分析就容易多了,对于字、词用法灵活的古代汉语来说词语标注也至关重要。古汉语分词、标注研究对于古文字学、出土文献以及古史等古汉语人文研究具有重要意义。不仅如此,针对古汉语的研究对于现代汉语处理也具有一定的帮助作用,因为在现代汉语中仍然存在不少古汉语语句词汇的存留,现代汉语文本中也会存在古代汉语的诗句、文章的引用,针对于现代汉语语言特点设计的自然语言处理系统在面对古汉语的诗句时处理有效性必将受到影响,因此古汉语分词及标注系统的研究也将是现代汉语研究的重要补充。


然而目前对于中文分词及标注系统的大量研究成果主要是针对现代汉语,在古汉语分词及标注领域的研究成果相对较少。因为古代汉语在文字、词法和句法等诸多方面与现代汉语有很大的不同,例如古汉语在文字上是使用繁体字,而现代汉语大多用简体字;词法上古汉语词类活用更为丰富,词类分工并不明确,现代汉语词汇意思大多固定,词类活用的例子并不多见;句法上,古汉语在判断句中大多以名词或名词短语作谓语,现代汉语的判断句中用‘是’做谓语;从词汇构成方面来看,现代汉语以 Bakeoff-2003 和 Bakeoff-2005 训练语料库为例,经统计发现,现代汉语中单音词和双音词占语料库的绝大部分,其中单音词占 54%,双音词占 39.3%[15] 。古汉语这边以上古、中古汉语训练集为例,其中单音节词占所有词的比例仅为 25%,但是其使用频率为 80%,远远高于双音节及其他多音节词。


基于古汉语与现代汉语的以上不同,尤其是词频、词类活用的问题,对古汉语分词标注系统增加了很大的难度,许多对现代汉语的大量研究成果不能直接应用于古代汉语处理领域中去。在古代汉语有关的领域中,如古汉语学术研究、古汉语文章检索与校对、自动翻译等,均以古汉语分词及标注为基础,若古汉语分词及标注正确率不能达到实际应用水平,则上述领域均寸步难行。所以本文决定针对古代汉语分词及标注系统做针对性的研究。


4.1基本功能介绍


网站首页如图 5-16 所示,网站的左侧为导航栏,可以选择相应的功能。下面我们将分别介绍网站的各项基本功能。按时代检索:用户在输入栏选择相应的时间,则网站输出对应时代所有书籍;原文检索:用户输入古籍原文中某字,网站展示所有带有该字的古文原文;释义检索:用户输入某字或一段文言文,网站输出该文本的翻译内容;断句辅助:用户可输入一段无标点文本,网站自动为该文本添加标点并进行展示。

116b04e2c97a1415df01680f04f58d9d.png

4.2 研究内容


本课题的研究目的是利用现有成熟的基于深度学习的自然语言处理技术对中国古汉语建立一系列模型,旨在完成古代汉语的自动断代、断句及分词标注任务,减轻部分古汉语工作者的繁琐劳动,将这部分繁琐工作让机器去完成,从而加速古汉语信息化过程。研究内容从课题研究目的入手,可分为以下几个方面:


为解决古代书籍断代的问题,本文提出使用双向长短期记忆神经网络作为主体构建古代文本断代模型。整理互联网上现有的已知年代的文本作为训练集对模型进行训练。利用 word2vec 模型将文本中的每一个字转换成一串高维向量,然后将文本包含的所有文字的字向量送入模型分析它们之间的非线性关系。最终,模型会输出一个该段文本的年代类别标签。实验结果表明利用 Bi-LSTM 神经网络构造的模型能够很好的完成断代任务,断代的正确率能达到 80% 以上。本文的断代模型提供了一种高效且准确的古文断代方法,这将节省古文研究工作者在文本断代过程中的时间。


针对某些古代汉语书籍原著中缺少标点符号的问题,本文提出一个断句模型。本部分我们通过深度神经网络对大量经过断句的古汉语文本进行学习,使断句模型自动学习到某一时期、某种题材的断句规则,从而达到输入一段无断句的文字序列,机器自动为其添加断句的效果。


针对古汉语分词及词性标注任务,我们需要解决训练集获取的问题,分词标注任务需要已经分好词、标注好词性的文本来做模型的训练集,但目前尚没有公开的具有分词和词性标注的古汉语语料库。因此我们通过手工标记部分语料的方法得到了少量的数据集对我们所设计的分词标注模型进行少量的实验,用以验证本文提出的分词标注模型可以较好的完成古汉语分词标注任务。


4.3 论文组织结构


论文的整体安排如下:


第一章作为绪论部分,首先对论文的研究意义及研究背景进行了简要的阐述。之后将研究中面临的主要问题和所做的工作内容进行简单的梳理,通过系统地归纳总结帮助读者了解论文中面临问题的本质和相对应的解决方法。最后对论文的大体结构进行简略介绍,方便读者了解整篇文章的体系架构。


第二章对课题相关的研究内容进行了详细介绍和总结。除了介绍中国古代汉语研究领域里古代文人关于著作年代的判断方法外,还介绍了自然语言方法在古汉语断代方面的应用;在古籍断句领域,本章介绍了一些传统常用的断句方法;此外还介绍了自然语言处理领域分词及词性标注任务的研究现状,并对分词及词性标注的常用方法、算法进行了总结和优劣分析。


第三章首先根据古汉语语料较少的特点,选择了双向长短期记忆神经网络结构作为模型的主体,并介绍了断代模型的总体结构框架。之后针对断代模型的多层结构,分层依次讲解了每一层的构成及作用。本章首次将双向长短期记忆神经网络应用到古代汉语的断代问题上去,通过两组实验分析了模型的性能,并简要分析出了同一时期内同一书籍中及不同书籍之间具有互相独立而统一的关系。


第四章对于古代汉语书籍没有标点符号的特点,利用字符标签的形式对输入的一句或多句古汉语文本进行标记,标记出应该含有标点符号的位置。本部分首先介绍了模型的数据来源和整体结构,然后介绍模型的代码实现,最后通过部分真实数据进行了一定的实验分析,分析证明模型的正确率较高,可以当做断句辅助工具供古汉语工作人员参考。


由于第五章模型任务的特殊性,第五章首先阐述了魔性训练集的数据来源及预处理,介绍了几种模型分类效果的评估标准。然后提出了本章的主要内容:基于双向长短期记忆神经网络的古代汉语分词及词性标注一体化系统。针对一体化系统,本部分创新性的提出了将两种标签进行一体化输出的编码方式,使得模型的输出可以同时带有分词及词性标注标签。关于模型分词及词性标注效果的评估,本文利用少量的手工标记的数据集对模型分别进行了分词实验和词性标注实验两部分实验,实验证明本部分提出的一体化系统在古代汉语分词及词性标注任务上有不错的效果,后期若有更加充足、准确的数据集后,该模型的准确率将可以达到更高。最后利用一体化模型,建立一个简单的上古语料库,并建设一个网站进行管理。


第六章对研究工作进行了总结分析,并对下一步的研究方向和计划进行阐述。


研究综述


本部分介绍了论文涉及的相关领域的研究综述。断代方面介绍中国古代汉语研究领域里文人关于著作年代的传统判断方法和近代以来现代语言学方法在古汉语断代方面的应用;断句方面简要介绍了传统的古汉语断句的常用方法;此外还介绍了分词及词性标注领域的研究现状。


4.4 古代文本断代方法


在古籍断代领域,自晚清以来,刘师培、章太炎等学者对古籍的断代停留在古文经学的视角,主要是以书面文献为资料的授受、义理研究,但在这些方向上对于断代的研究结果没有太多的信服力。二十世纪初,瑞典学者高本汉(Bernhard Karlgren)著《左传真伪考》[16] ,第一次将西方现代语言学的方法应用到中文古籍的断代问题。高本汉利用西方现代语言学方法,考察了《左传》的 7 组虚词,分析、归纳《左传》中的语法体系,并将其与先秦其它古籍的语法体系相对照,以此作为《左传》断代的依据。依据高本汉的语言学方法,美国汉学家李克考察了《管子》的虚词,除了某些篇章太短无法分析,其它篇章的分析与高本汉总结的“公元前 3 世纪的标准语”颇为契合。荷兰汉学家戴闻达(Duyvendak)也依据高本汉归纳的(先秦经典中)虚词的语法特征考察《商君书》的著作年代,发现断代的“标准”仅依赖高本汉归纳的那少数几组虚词还不能奏效,要完成《商君书》的断代,还需要考察更多的虚词[17] 。20 世纪六七十年代,杜百胜承继高本汉从虚词入手为古籍断代的方法,对虚词做了穷尽式的研究,从历史语言学的角度,描写、分析虚词的语法特征,以确定古籍的年代。在 2l 世纪初,尤锐继续从事古籍年代的考订[18] 。尤锐将先秦时期便存在的尚未完全定型的文本称为“著作底本”,这是先秦典籍的核心部分,汉以后有窜入,但是居于少数,而这个著作底本在文献成型过程中的里程碑作用不能被轻易忽视[19] 。他的研究从高本汉、杜百胜所从事的虚词语法研究转移到词汇的研究。他的论文《战国时期的词汇变化》(Lexical Changes in Zhanguo Texts)考察了公元前 5 世纪到 3 世纪的史书和子书中的词汇差异,共选择了 7 个有使用时间差异的词汇,用以确定各“著作底本”的年代[20] 。


以上现代语言学方法虽然不局限于义理和授受等思想内容上的研究,但仍受限于人力。大多数研究仅选择某几个关键的虚词文法或者有时间差异的词汇进行研究,其研究的可靠性受词汇选择的影响较大。杜百胜意识到不能仅取个别词汇进行研究,他利用穿孔卡片将文本所有的文句都抄录一遍,再逐句分析。即便如此也仅仅覆盖了古籍中的虚词部分。为追求可靠性的这种穷尽式地考察文本的语法、词汇,以现代语言学方法从事中国古籍的辨伪与断代,在现今仍然大有可为。


从技术角度来说,古文的时间判定就是指模型接收一段文本,模型自动计算并输出一个年代标签。因此,从输入输出的关系来看,古文时间判定任务即为一个文本分类任务。目前的文本分类模型,大致可分为两类,一类是基于规则[21-25]或基于概率统计[26-28] 的传统机器学习方法,另一类是基于 CNN(Convolutional Neural Networks, CNN)[29] [30] 、RNN(Recurrent Neural Networks, RNN)[31] [32] 、Self-Attention[33] 的深度学习方法。其中,基于规则或概率的方法相对简单,易于实现,在特定领域能取得较好的效果。其优点是时间复杂度低、运算速度快。但是需要考虑很多规则或特定条件来表述类别,因此需要通过领域专家定义和人工提取特征。


结合深度学习方法来解决特定领域问题是近年来的一个趋势,Collobert 和 Tang 分别将 CNN 和 RNN 应用到文本分类中,还有今年出现的以 Bert 模型[34] 为代表的基于 Attention 机制的大模模型,在不同的 NLP 任务中均有很好的表现。但是 Bert 模型等主要面向现代语言,其成功主要依赖于当下互联网时代的海量信息化的文本,例如 wiki 百科、各类新闻媒体以及网络评论留言等,通过数以 T 计的训练集才得以训练出 Bert 模型中 200M 的模型参数,然而这一切在语料资源相对缺乏的古汉语领域并不适用。因此,本文使用 LSTM 深度学习网络模型解决自动化古籍时间断定即古汉语文本分类任务,该模型主要有两个优点,一是不借助人工提取规则特征,二所需数据量比基于 Self-Attention 机制的模型相对较少。


4.5 古代文本断句方法


古代书籍没有标点符号,诵读时根据文章所作的停顿,或在古书上按停顿加的圈点,就叫“断句”。断句在古代叫“句读”。古人称文辞语意已尽处为“句”,语意未尽的停顿处为“读”。古书是不加句读的,只是一个字一个字地排列,读者边读边断,直至终篇。古代教育童蒙读书非常重视句读能力的训练。《礼记学记》说:“一年视离经辨志”。“ 离经”就是指断句,也就是现在所说的句读能力的训练。谚语说:“学问如何看点书”。意思是学问的大小可以从句读能力上看出,因为断句的正确与否,就看对书中文字懂不懂,文字懂了句也就晰对了。如果不位而硬断,自然出现问题,同一段文字就会文义迎异。比如古人描绘龙:其形有九似:头似驼,角似侄,冈似兔,耳似牛,项似蛇,匠似蜃,鳞似鲤,爪似鹰,掌似虎。如果断成:其形有九:似头,似角,似鹿限,似兔耳,似牛头…这样错误的断句,意思变成龙有九种形状,并且面目全非,显然是很可笑的。所以正确地句读是提高古汉语阅读能力、正确理解古书的基本。


研究一篇文言文,应该先通读这篇文章,大体上弄清这篇文章写了什么内容,思考它表达了什么意思,具有什么结构,它属于什么文体等,然后再来给文章断句。由于当前尚无成熟的古代文本自动断句方法,本部分下面将介绍传统的古文断句的常用方法:


弄通文意断句。给文言文断句,首先要阅读全文,了解文意,这是断句的先决条件,如果想当然地断下去,就容易发生错断。通读全文,搞清属于什么文体,写了什么内容,想表达什么意思。要注意文言文单音词占多数的特点,抓住几个关键的字词翻译以理解文段大意。


借助文言虚词断句。古人的文章没有标点符号,为了明辨句读,虚词就成了重要的标志。尤其是一些语气词和连词的前后往往是该断句的地方。文言文,多用虚词来表达语气或感情。句首发语词:夫、盖、至若、若夫、初、唯、斯、今、凡、且、窃、请、敬等常用于一句话的开头,在它们的前面一般要断开。句尾词:也、矣、焉、耳等经常用于陈述句尾;耶、与(欤)、邪(耶)等经常用于疑问句末尾;哉、夫等经常用于感叹句尾。其后面一般要断开。疑问语气词:何、胡、安、曷、奚、盍、焉、孰、孰与、何如、奈何、如之何、若之何等词或固定结构之后,一般可构成疑问句,只要贯通上下文意,就可断句。复句中的关联词:虽、虽然、纵、纵使、向使、假使、苟、故、是故、则、然则、或、况、而况、且、若夫、至于、至若、已而、于是、岂、岂非,在它们的前面一般要断开。其它的如:以、于、为、则、而,往往用于句中,在他们的前后一般就不断句;(“而”表转折而且后面为一个比较长和完整的句子时,“而”前面要断开)[35] 。


找出动词,明确句意。古汉语中,句子多以动词或形容词谓语为中心。找出了动词或形容词谓语,也就区分出独立的句子,明确了语句的意思,从而正确断句。比如:马无故亡而入胡/人皆吊之,句中动词有“亡”“入”“吊”,因此可区分出两个句子。其马将胡骏马而归/人皆贺之,句中动词有“将”“归”“贺”,可区分出两个句子。


借助名词(代词)断句。一般完整的句子都有主谓宾,而主语一般由名词或代词充当。名词一般为文章陈述、描写、说明或议论的对象,在它们的前后往往要进行断句。名词(代词)一般也常常用作句子的主语和宾语,因此,找出文中反复出现的名词或代词,就基本上可以断出句读了。常见代词有:吾、余(表示“我”),予、尔、汝(女)、公、卿、君、若(表示“你”)、彼、此、其、之(表示“他”)。


借助语法结构断句。文言语法中有一些固定结构,如:“……者,……也”、 “不亦……乎”、 “何……之有”, “孰与……乎”、 “为……所……”、“受……于……”等,根据这些结构也可断句。


利用总分关系断句。文言文中常用总说分承或分说总承的写法,掌握了这个写法对断句很有帮助。如《谋攻》的最后一段:“故知胜有五/知可以战与不战者胜/识众寡之用者胜/上下同欲者胜/以虞待不虞者胜/将能而君不御者胜。”这显然是总说分承的写法了。再如“老而无妻曰鳏/老而无夫曰寡/老而无子曰独/幼而无父曰孤/此四者天下之穷民而无告者”,这显然是分说总承的写法了。


借助对比、对偶、排比、顶真等修辞断句。文言中常有对偶句、排比句,抓住这个特点断句,常能收到断开一处、接着断开几处的效果。例:秦孝公据崤函之固拥雍州之地君臣固守以窥周室有席卷天下包举宇内囊括四海之意并吞八荒之心当是时也商君佐之内立法度务耕织修守战之具外连横而斗诸侯于是秦人拱手而取西河之外……这一段文字之中,“据崤函之固/拥雍州之地”是对偶;“席卷天下/包举宇内/囊括四海/并吞八荒”是排比;“内” “外”是对照。根据这样的语言特点,断句也就容易多了。顶真是文言文中常见的形式。句子前后相承,前一句做宾语的词,在后一句又作了主语。例如:“畏惧则存想,存想则目觑。”(王充《订鬼》)根据这一特点,我们也可以确定句读。“名不正则言不顺/言不顺则事不成/事不成则礼乐不兴/礼乐不兴则刑罚不中/刑罚不中则民无所措手足”。


利用对称句式。注意古文讲究整齐对称、行文中上下句常用相同的字数和相同的结构的特点。如“故福之为祸/祸之为福/化不可极/深不可测也”,句式工整,都为四字一句,据此可正确断句。


虚词断句法。古人的文章没有标点符号,为了明辨句读,虚词就成了重要的标志。尤其是一些语气词和连词的前后,往往是应该断句的地方。我们只要抓住了这些虚词,了解它们在句中的位置,断句也就准确迅速了。


发语词和句首助词常出现于句首,有领起全句的作用,其前自可断句。复句中的关联词一般也用在句首,在这些关联词前可点断。句末语气词等常用在句末,其 后往往能断句。连词如“以、于、为、而、则”等经常出现在句中,后面不能断开。


“曰”字断句法。文言文中对话、引文常常用“曰”、“ 云”、“ 言”为标志,一般情况下碰到它们都要停顿,且大多用冒号顿开,后面“曰”的内容一般要加双引号。如果两人对话,一般在第一次问答出现人名,以后就只用“曰”, 而把主语省略。例如:“太宗谓太子少师萧禹曰/朕少好弓矢/得良弓十数/自谓无以加/近以示弓工/乃曰/皆非良材/朕问其故/工曰/木心不直/则脉理皆邪/弓虽劲/而发矢不直”。这个文言语段是转述一段对话,三次“曰”的出现、两问两答的过程都可成为断句的参考。


除此之外,断句的方法还有很多,如根据押韵规律断句、根据间隔反复断句、特殊句式等断句,要想断句准确度更高,就要综合运用这些方法。


综上所述,句读涉及到整个古代汉语和古代文化知识领域。如果初学者缺乏句读训练,就谈不上读位古书了。正因为句读是一种综合性很强的知识技能,在研究领域中,句读的添加与校正全部是由古汉语工作者使用手工完成的,我们看到的已标点的古书是经反复点校后再印的,古汉语工作者利用他们夜以继日的调研,笔耕不辍,完成了大量的古籍句读工作,这给我们阅读古书带来了方便。但古代书籍浩如烟海,因此需要研究一种针对古汉语的断句模型。


4.6 古代文本分词方法


分词算法方面,早先的算法大致可分为以下几类:基于字符串匹配的分词方法、基于统计的分词方法、基于规则的分词方法。随后机器学习方法兴起,机器学习的各种模型也被逐渐引入到中文分词应用当中。应该看到,不管是基于词表的切分方法,还是基于统计、基于规则或基于机器学习的切分方法,每一种方法都有自己的优点和一定的局限性。


4.6.1 基于字符串匹配的分词方法


基于字符串匹配[36-38] 的方法又叫做机械分词法,这种方法要事先准备一个“充分大的”词典,然后将待切分的句子按照一定的扫描规则与词典中的词条进行匹配,如果匹配成功,则将这个词切分出来,否则进行其他相关处理,如图 2-1 所示。按照扫描方向的不同分为正向匹配和逆向匹配;按照不同长度优先分配的情况,分为最大匹配和最小匹配;按照与词性标注过程是否相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的基于字符串匹配的方法有正向最大匹配分词法、逆向最大匹配分词法、最少切分分词法、双向匹配法四种。在基于字符串匹配法中,算法的运行速度快,程序复杂度低,成本较低。但算法的性能很大程度上取决于字典,然而因为总会有新词出现,所以字典不能包含所有的词语,对于存在大量未登录词的情况,字典匹配法效果并不好。


8d3ca98aaf4b91ff2df2c238913b1181.png



图 2-1 字典法分词流程图


4.6.2 基于统计的分词方法


基于统计[39-42] 的分词方法是从概率的角度出发,单个字出现在词组中的联合概率比较大,因此当相邻的字越经常出现,则越有可能是一个词组。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。因此可对语料中相邻共现的各个字的组合的频度进行统计,计算它们的相关度。这种方法首先切分与词典能匹配成功的所有可能的词,即找出所有候选词条,然后运用统计语言模型和决策算法得出最优的切分结果。由于纯粹从统计的角度出发,因此在统计意义上某些经常出现在一起的字并不能构成完整的词语,例如“上的”、“下的”、“ 这一”等在文本中会大量的互邻同现,但他们却分属于不同的词;并且统计语言模型和决策算法在很大程度上决定了解决歧义的方法,需要大量的标注语料,并且分词速度也因搜索空间的增大而有所减慢。基于统计的分词方法所应用的主要的统计量或统计模型有:互信息[43] 、N 元文法统计模型[44-46] 、隐马尔科夫模型[47-49] 和最大熵模型[50] [51] 等。这些统计模型主要是利用词与词之间的联合出现概率作为分词判断的信息。基于统计的方法利用可能性或者评分机制来判断是否将词进行分割,而不是仅依赖于字典匹配。这种基于统计进行分割的做法主要有三个缺点:一、这些方法仅识别未登录词而不判断这些词的种类;二、这些基于统计的方法多不结合语法信息和语言知识,因此在统计意义上某些经常出现在一起的字并不能构成完整的词语,导致分词出错,这就需要在识别之后再耗费人力去验证。三、未登录词识别在很多系统中是和分词系统分开的,例如文献[15]假设未登录词大多被识别为单字,所以他采用在基本分词后,添加级联层来检测未登录词。


4.6.3 基于规则的分词方法


该方法主要基于句法、语法分析,并结合语义分析[52-54] 。通过对上下文内容所提供信息的分析对词进行定界,它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息,用来对分词歧义进行判断。例如文献[52]尝试了将分词与句法分析技术融为一体的方法,用整个句子的句法结构来消除不正确的切分。这种方法对消解组合型歧义比较有效,但组合型歧义在切分歧义中毕竟占少数,而在频繁出现的交集型歧义的消解方面,使用句子分析器并没有明显优势。而且这类方法试图让机器具有人类的理解能力,需要使用大量的语言知识和信息。由于汉语的复杂性,难以将各种语言信息和规则组织成机器可直接读取的形式,需要消耗大量的人力整理规则。


4.6.4 组合分词方法


文献[55] [56] 提出了更加完善的基于字典和统计的系统。他们将未登录词的识别和分词系统结合到一个统一的系统中。其中[55]系统是利用基于加权有限状态传感器,文献[56]是基于线性混合模型,线性模型是源于广泛用于模式分类的线性判别函数并由 Collins 等人引入到自然语言处理中[57] ,线性混合模型可以更灵活的利用字库中的统计信息,这也使[56]在未登录词识别性能上优于[55]。除此之外,最大熵模型、条件随机场模型[58-60] 也都将分词和未登录词识别结合在一起进行。然而这些所有基于统计和规则的方法,在生成模型的时候还是依赖于手工提取的特征,耗费大量的时间和人力资源,且算法的正确率极大的取决于规则的准确性与完整性。


4.6.5 基于机器学习的方法

年之后,随着神经网络的兴起,自然语言处理也开始利用神经网络模型进一步发展,大量基于神经网络的中文分词系统开始被提出。利用门控制递归神经网络并对 N-gram 特征进行建模(GRNN)的方法[61] ;长短期记忆神经网络方法(LSTM)[62] ;结合 GRNN 和 LSTM 提取深层特征信息的方法[63] ;基于过渡(Transition-based)模型的方法[64] 等。系统的不断完善,分词性能一直在不断提升,基于 MSRA、AS、PKU 等主流测试集的分词准确率均已突破 95%[65] 。在一些通用的书面文本上,如新闻语料,领域内测试(训练语料和测试语料来自同一个领域)的性能已经达到相当高的水平。但是,跨领域测试的性能仍然很不理想,例如用计算机领域或者医学领域的测试集测试用新闻领域的数据训练出来的模型。由于目前具有较好性能的分词系统都是基于有监督的学习方法训练出来的,需要大量有标注数据的支撑,而标注各个不同领域的语料需要耗费大量的人力和时间。因此,古汉语的自动分词及词性标注技术仍是中文自然语言处理的一项重要难题。


4.7 词性标注综述


汉语词性标注同样面临许多棘手的问题, 其主要难点可以归纳为三个方面:1、汉语是一种缺乏词形态变化的语言,词的类别不能像印欧语那样, 直接从词的形态变化上来判别;2、常用词兼类现象严重;3、研究者主观原因造成的困难。汉语词性标注与分词一样,是中文信息处理面临的重要的基础性问题,而且两者有着密切的关系。


4.7.1 基于统计模型的词性标注方法


Marshall 建立的 LOB 语料库词性标注系统 CLAWS 是基于 HMM 模型的词性标注方法的典型代表[66] ,该系统通过对 n 元语法概率的统计优化,实现 133 个词类标记的合理标注。实现基于 HMM 的词性标注方法时,模型的参数估计是其中的关键问题。算法随机地初始化 HMM 的所有参数,这将使词性标注问题过于缺乏限制。还有另外一个问题需要注意,就是模型参数对训练语料的适应性。由于不同领域语料的概率有所差异,HMM 的参数也应随着语料的变化而变化。因此当对原有的训练语料增加新的语料以后,模型的参数需要重新调整;而且在经典 HMM 理论框架下,利用标注过的语料对模型初始化以后,已标注的语料就难以再发挥作用。


4.7.2 基于规则的词性标注方法


基于规则的词性标注方法是人们提出较早的一种词性标注方法,其基本思想是按兼类词搭配关系和上下文语境建造词类消歧规则。早期的词类标注规则一般由人工构造,如美国布朗大学开发的 TAGGIT 词类标注系统。刘开瑛[67] 曾按兼类词搭配关系构造了词类识别规则库,针对动名词兼类现象,归纳出了 9 条词性鉴别规则,包括:并列鉴别、同境鉴别、区别词鉴别和唯名形容词鉴别规则等,并结合词类同现概率实现了汉语词性标注系统。随着标注语料库规模的逐步增大,可利用资源越来越多,以人工提取规则的方式越来越难以实现,规则的提取越来越难。


4.7.3 统计与规则相结合的词性标注方法


理性主义方法与经验主义方法相结合的处理策略一直是自然语言处理领域的专家们不断研究和探索的问题,对于词性标注问题也不例外。周强[14] 给出了一种规则方法与统计方法相结合的词性标注算法,其基本思想是,对汉语句子的初始标注结果(每个词带有所有可能的词类标记), 首先经过规则排歧,排除那些最常见的、语言现象比较明显的歧义现象,然后通过统计排歧,处理那些剩余的多类词并进行未登录词的词性推断,最后再进行人工校对,得到正确的标注结果。这样做有两个好处:一方面利用标注语料对统计模型进行参数训练,可以得到统计排歧所需要的不同参数;另一方面,通过将机器自动标注的结果(规则排歧的或统计排歧的)与人工校对结果进行比较,可以发现自动处理的错误所在,从中总结出大量有用的信息以补充和调整规则库的内容。但是,该方法中容易产生规则与统计的作用域不明确的问题。


虽然中文自然语言处理发展迅速,但如前面所说的,古代汉语在文字、词汇和语法等诸多方面与现代汉语有所不同,现代汉语的先进研究成果不能直接应用于古代汉语处理领域中去。在数据集、分词标准等问题并没有形成共识,没有一个类似于现代汉语中 Bakeoff 数据库一样的作为统一测试集的数据库。且现代计算机方面研究者大多并不熟悉古汉语,缺乏相应的古汉语常识和知识,对于古汉语的语言习惯、语言规则并不如现代汉语这样熟悉,也造成研究者无法深入到古汉语处理研究当中去。


4.8 本章小结


本章针对古代汉语尤其是上古汉语自然语言处理的一些特殊问题,选取三个具有代表性的方向利用现代自然语言处理技术进行了深入研究,它们分别是古汉语书籍断代问题、非平衡数据分类的研究现状和特征选择的研究现状。


古代文本断代模型


断代是指判断古代文本大致年代的过程,本部分使用 Bi-LSTM 神经网络分析输入文本的深层语言结构,从而实现古代文本断代的目的。本部分将详细介绍断代模型的实验数据来源、各部分结构组成,并做实验进行性能分析。


4.9 数据来源及预处理


实验所用的数据集为从网络的开放数据库下载的不同年代的古籍。根据古籍所处具体时期的不同,我们从各个时期中选择了部分书籍进行实验。将其分为成了不连续的几个时间段:春秋战国时期、后汉时期、南北朝时期、宋朝时期及明清时期五个时间段并分别使用 T1、T2、T3、T4 以及 T5 表示,对应关系如下表所示。


表 3-1 时间标签与年代对应表

image.png


在上述的每个时期中,我们分别选择著成于当前时代的古籍作为训练集,各个时期具体书目如下表所示,总计 348 万字。

表 3-2 各时期书目表


image.png


4.10 模型结构


本部分要解决古代文本时间判定的问题,首先是获取待判定的一部书籍或者书籍中的一段文本,其字符序列表示为 S,将此文本送入模型 M,模型进行计算并输出一个年代标签 T。


fe2179c502923b62f8e11fa24384becd.png



图 3-1 古代文本断代模型结构框图


这个过程中有以下几点关键技术需要注意,文本序列的向量化表示[68] 、模型总体结构和以及长短期记忆神经网络记忆单元结构。古代文本断代模型的结构框图如图 3-1 所示。


古籍断代模型接收一段古代文本作为输入送入模型,文本首先被送入嵌入层使模型获得该段文本的向量化表示。然后字符的嵌入向量被逐字送入双层 LSTM 神经网络层中分别计算正向和反向的隐藏向量。最终将两个隐藏向量串联送入输出层计算出最终的预测结果。模型的细节如图 3-2 所示:



6fc1d89dae2d980f6faf1650d3edfe9b.png



图 3-2 古籍断代模型结构图


模型主要分为三层,嵌入层、LSTM 神经网络层和输出层。其中嵌入层使用的是 word2vec 中的 CBOW 模型,即通过文本上下文预测中间字的方式实现中间字的向量表示;神经网络层使用双层反向的 LSTM 作为主体,第一层接受文本的正向输入,输出一个隐藏层向量


e1bf01e53d79beeb43109631f833112c.png

,第二层接受文本的逆向输入,输出一个隐藏层向量


,然后将两个向量串联,由于 LSTM 具有记忆上文信息的能力,因此两个隐藏向量相当于将全文信息编码成一个向量表示;输出层为一个全连接网络,用于将上层得到的向量进行解码、计算,输出相应的预测年代。下面本文将对模型的三层结构进行详细的介绍。


4.10.1 嵌入层


在式 1 中,文本字符序列


ff533b84d9e985209104633187105483.png

仍是人类所能阅读的文字形式,

e61ef12db45622a3a3485489ba2daaf4.png


等为一系列汉字的有序组合,式 2 中

c7652ef83b258d62e1c932c4b802ef0a.png


映射的作用是将人类所能理解的文字序列形式的


50c8cdf95a91451269929648a1021ad3.png

转化成计算机所能理解的向量化表示


7407950c7923e3eb448a6c8adfb4317c.png

fdb1d983c819351066cf37f127492a7f.png


其中

ca08afedf43b62640fe1b7f26d4fd0f9.png


分别为

301f2faae63dda1701464e25d62dd953.png


对应的每个字的向量化表示,这个将文字映射为向量表示的过程就叫做字嵌入。


目前字嵌入方式有两种,一种是对所有字符进行 one-hot 编码,但 one-hot 编码有编码过长,不同字之间向量相互垂直,没有语义联系,不能表示位置信息等缺点,因此我们不使用 one-hot 编码;另一种是稠密的低维向量表示(Dristributed representation),它的思路是通过训练,将每个词都映射到一个较短的词向量上来,一方面可以解决 One-hot 编码过长的问题,另一方面向量也可携带一定的语义信息。Google 在 2013 年提出的 word2vec[69] 是一种利用神经网络进行字嵌入训练的一个语言模型。他假设字向量是服从分布式假设的,如果两个词的上下文时相似的,那么他们语义也是相似的。word2vec 模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量,如图所示。训练完毕后,输入层的每个单词与矩阵 W 相乘得到的向量的就是我们想要的词向量(word embedding),这个矩阵也叫做查询表(look-up table)。


f2afb89b801aace0f0b954af3718c718.png




图 3-3 word2vec 网络结构示意图


Word2vec 模型是非监督的,资料获取不需要很大的成本,我们可以通过 word2vec 模型在大量的未标注的语料上学习,就可以学习到比较好的向量表示,可以学习到词语之间的一些关系。比如男性和女性的关系距离,时态的关系,学到这种关系之后我们就可以把它作为特征用于后续的任务,从而提高模型的泛化能力。


同文字的向量化道理相同,时间标签同样需要考虑人类标签和机器理解的问题,本文使用的时间标签为年代标签,如汉代、唐代中期,首先将此各种时间标签

843e4e964c13f867bbdceaef5994a59f.png


按时间顺序排序

8c9b34a18ca30d9df06b2c611bc44be9.png


,由于年代数相对较少,因此可以将朝代标签进一步表示为 one-hot 编码,方便模型通过 Softmax 评估出某一朝代。


4.10.2 长短期记忆神经网络层


LSTM 神经网络通过输入门、输出门和遗忘门这些门结构来控制长期记忆的遗忘与保存,LSTM 记忆单元在时间维度上展开的结构图如图所示。


0f44c39c497e3eac85a0d0107a7cfef6.png



图 3-4 LSTM 记忆单元在时间维度展开结构图

LSTM 记忆神经元中控制信息的门结构公式如下:


d952437e13f7430f444670baa41c78b1.png


d952437e13f7430f444670baa41c78b1.png


80f2242f9ba8032ffc12f11b7ae8ccd9.png


5d969a05d7c221d0b4ac377f0640c0e0.png


cc8a622d8233a7de20cd5c05b7c32049.png


公式中,



为输入门,



是 sigmoid 函数,sigmoid 函数的值域为[0,1],起到将输入门向量中的每个元素限制在 0 到 1 之间。因此,输入门向量和另一个向量的哈达玛乘积就是对向量的每个维度进行一定的缩放,即可理解为保存或者遗忘向量中的某些信息。

7aacc095568ab0fe57ea649e750710bb.png


是 tanh 函数,用来将向量的每个元素映射到[-1,1]之间。

bc65d40a51ba6e5691b308b7bc4c4f72.png


是长期信息,用来保留距离当前时刻较远处的有用信息,


5ec27a3bcb1a579020341585f8578549.png

是遗忘门,二者相乘可以用来控制长期信息中的某些信息是否继续保存到下一时刻,结合当前时刻的输入可以得到新的

f78c7d92a06f921526bed58914383ede.png


,此外还有


490c1508b47767864aaa56bdc50c3085.png

输出门,用来控制输出信息,从而影响到当前时刻的输出

9453437a521f01fef1566088dbd92569.png


以及下一时刻的输入。正是这些门结构使得 LSTM 可以有效的保留前文有用信息、遗忘前文中的无用信息,从而能做出更好预测。


4.10.3 输出层


输出层是一个全连接网络,结构如图所示:


4badedae2cabf5c4a0acb4aaed15eb7f.png



图 3-5 输出层网络结构图


他接受一个上层传入的


a889e0c9e69d0e8f862042661cb8dabf.png

维度的向量

fce44475ac05170ae812a621cb09ad33.png


,其中

1f93111b08babfb34367a22552d96115.png


为 LSTM 神经网络输出的隐藏层向量维度。输出层包括一个



维度的

8c547a76cb3782b2a062167a1683e050.png


权重矩阵以及一个

99bc38f848ec8c2d73cada17f9e29335.png


维度的偏置矩阵,其中


b69513f77e7f8c8191d955a7eae414ed.png

为所有分类的类别数,输出层的输出为

8feb9ef8e0d75a63634c9b23d315e006.png


8ff49d02bc9fe9536d78576f421fe30b.png


是一个

c15416631bcc5649e0a3af8b24bcb9d4.png


维的向量,最后通过 Softmax 函数对其进行输出归一化,归一化后的某一维度的数值即可视作该维度所表示年代的预测概率。Softmax 公式如下。


1995c7ea393ace84f05d6550adfde0ac.png


4.11 实验


模型有两个评估指标:一个是单句分类正确率 Ps;另一个是书籍分类正确率 Pb:


Ps=N 时间判定正确的句子条数/总句子条数


Pb=时间判定正确的书籍数/总书籍数


其中一本书籍时间判定的决策取决于书籍内部所有句子决策的投票结果,统计所有句子判定结果后,投票数最多的时间分类即判定为该书的时间段。在实现方面,模型通过 Python 的 TensorFlow-GPU 框架实现,所用的硬件配置为 8G-cpu 1080Ti 显卡。


训练流程图如下图所示:



1d7add63eb72f08596036d8da93500d0.png


图 3-6 断代模型训练流程图


4.11.1 参数选择


模型涉及到一些超参数的选择,我们分别在训练集和测试集上进行了实验,来比较不同超参数情况下模型的训练过程。本文中我们选择对不同维度的隐藏层(Hidden Layer Dimension, HLD)和单词嵌入向量(Embedding Layer Dimension, ELD)进行比较。


下面四副曲线图为在不同超参情况下训练过程的训练精度曲线。可见,当 ELD 为 64(图中黄色点划线)时,模型在两组实验中上均能在训练 50 代左右处开始稳定在较高水平。此外,每组图中我们保持 ELD 不变,利用两组 HLD 进行比较,比较发现在每个实验图中,ELD=16 的曲线(蓝色虚线)都比较平滑,有稳定上升的趋势。因此从收敛速度的角度来看,我们应选择 HLD 为 64 的参数进行实验,从模型的稳定程度来说,应选择 ELD=16 的模型参数。但是 HLD=64 时,模型的复杂度较高,虽然模型可以收敛到准确率很高的水平,但是却有过拟合的风险,下面我们将在训练集上进行实验来进一步进行参数选择。

2c6933b34e71d8cacd1f5699ff100672.png



图 3-7 HLD=32 不同 ELD 情况下训练精度曲线

a8d8f1a3fb3b86a3ced4eba6a04984b1.png


图 3-8 HLD=32 不同 ELD 情况下训练代价曲线

de8bd4c45711113bdd57f6597b07492b.png


图 3-9 HLD=64 不同 ELD 情况下训练精度曲线


814e1cf4e715aa85e8936e8de439c211.png

图 3-10 HLD=64 不同 ELD 情况下训练代价曲线


下面我们比较不同参数时模型在测试集上的表现,实验结果如表 3-3 所示。表中可见,虽然 HLD 为 64,ELD 为 64 的参数在训练集中收敛速度表现较好,但是在测试集中其表现却不够优秀,而 HLD 为 64,ELD 为 16 时在训练集上虽然在收敛速度上略逊于 HLD=64,ELD=64 的参数设置的模型,但其在测试集上的正确率高于 HLD=64,ELD=64 的模型。这种情况证明了模型在 HLD=64,ELD=64 的时候训练过程中产生了过拟合的现象,模型对训练集拟合程度过高,而对于其他数据集其表现将有所欠缺。因此,我们后面的实验将统一使用在训练集上表现更好的 HDL=64、ELD=16 的模型参数,一方面兼顾收敛速度,一方面 ELD=16 可以简化网络结构,防止过拟合。


表 3-3 不同超参情况下模型在部分测试集上的表现情况


image.png


4.11.2 断代实验


在第一个实验中,各个时期的每本书中都选出 70% 的章节作为训练集,保留每本书的其余 30% 章节不参与训练作为最后的测试集,以此来保证某个时期内的所有书籍均有部分语句用于训练。如图所示:


e70f11da5f6fc452eae4da50c27210f3.png


图 3-11 实验一中训练集和测试集的获取方法示意图


然后我们将测试集中的文本送入模型,来预测他们的年代。下表为实验结果。表中的每一行表示输入为某时代的古籍文本时,模型的预测为不同时代的结果的句子条数。同时我们还将结果以热力图的形式呈现,如图 3-12 所示。从图中非常清楚的可以看到热力图的对角线有一条颜色很深的连线,这说明模型将输入样本做出正确判断的概率非常大,模型的输出和正确结果之间有着很强的相关性。这说明当所有书籍均有部分语句用于训练时,判断一个句子为正确时期的概率很大。证明了某一时代内同一本书中的句法语法结构基本一致,模型学习了部分章节的结构信息后,可以较好的适用于同本书的其他章节中。


表 3-4 实验一结果


image.png

d8fa52d69fe24e5b0b624f1e402747cb.png



图 3-12 断代模型输入输出关系热力图

我们也做了另外一个实验,在该实验中我们在每个时期中都挑选约 30% 的整本书作为测试集不参与训练,用该时期剩下 70% 的书籍文本训练模型,如图 3-13,去观察模型对训练集之外的书籍的断代效果。

209154443137ff4e0fb4ac0f717cedc0.png


图 3-13 实验二中训练集和测试集的获取方法示意图


我们在春秋战国、后汉、南北朝、宋、明清时期分别选择《左传》、《素问》、《世说新语》、《全相平话》和《西游记》共 5 本书为测试集进行了实验。在训练集没有输入该五本书任何文本的情况下,我们输入这五本书的文本,让模型预测其年代。模型的预测结果如图 3-14。以《左传》为例,在所有《左传》的句子中,模型将其中 1508 句预测为春秋战国时期,将 663 句判断为后汉时期,556 句判断为南北朝时期,369 句判断为宋朝时期,126 句判断为明清时期,其他年代书籍也有近似的分布规律。在训练集中不包含测试集书籍的情况下,模型对该书的单句断代正确率(47% 左右)相比实验一降低了不少,可见一本书籍在词法、句法上有一定的独立性,在模型学习了同一时期的其他书籍之后,不能十分精确的将该时期另外书籍的文本正确分类。而从整体上看,我们利用一本书中的所有句子断代结果为该本书进行投票,投票占比最多的时代即判断为该书的时代。在这种情况下,图中可见,《左传》预测结果最多的标签为 T1 标签,即模型最终判断《左传》是春秋战国时期的书籍,此结果与中国古籍研究领域目前的共识是一致的,也印证了我们模式的正确性。该实验证明了同一时期内的某一本书虽然同其他书籍在词法句法上有一定的独立性,但是总体而言同一时期内的书籍之间也是有潜在联系的,也有一定的统一性,因此模型可通过学习同一时期内一定量的书籍来判断其他书籍的信息。


此外,我们展示了模型对这 5 本书预测结果的热力图,如图 3-15,图中横坐标为年代标签,纵坐标为某书籍,图中交叉块的颜色深度为模型预测某本书为某年代的概率是多少,颜色越深,概率越大。我们发现图像的整体分布为左上角到右下角的对角线颜色最深,同时向两侧逐渐减淡。我们观察模型的错误输出,错误最多的是将书籍判断为书籍所在时代的临近时代,并随着距离正确时代越远,判断错误的情况越少。这是主要因为中国古汉语演变至今不是突变导致的,而是实验展示的那样逐步一点一点演变的,古汉语在时代和时代之间是有相似性的,这种相似性随着时代之间相隔年份的增加而减小,而这种相似性会使我们的模型产生判断错误。这也从侧面说明了我们的模型学习到了古代文本中的潜在的语法、语义信息。


f96278ca4a1961a96588d5c45427b548.png

图 3-14 模型对各年代书籍的输出结果条形图

f1332fd190addb92a8f383bb5787d8a1.png


图 3-15 模型对各年代书籍的输出结果热力图


实验结果表明,如果选取某一时期所有古籍的部分文本作为训练集,其余文本作为测试集(实验一),该模型的实验正确率可以达到 90%。但是,若测试集的文本所属的书籍未参与模型的训练(实验二),古籍句子的正确率会降低,但综合某本古籍的所有句子来看,仍然可以通过投票原则正确判断古籍的年代。以上两个实验可以看出,同一部古籍的词汇和语法规则相对统一,同一历史时期不同古籍之间既互相独立,又一定程度上统一、互相联系。我们的模型成功学习到了不同时代古籍之间的内在联系和区别。

相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的优化算法及其应用
【10月更文挑战第8天】 本文将探讨深度学习中常用的优化算法,包括梯度下降法、Adam和RMSProp等,介绍这些算法的基本原理与应用场景。通过实例分析,帮助读者更好地理解和应用这些优化算法,提高深度学习模型的训练效率与性能。
140 63
|
25天前
|
机器学习/深度学习 调度 计算机视觉
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
本文探讨了多种学习率调度策略在神经网络训练中的应用,强调了选择合适学习率的重要性。文章介绍了阶梯式衰减、余弦退火、循环学习率等策略,并分析了它们在不同实验设置下的表现。研究表明,循环学习率和SGDR等策略在提高模型性能和加快训练速度方面表现出色,而REX调度则在不同预算条件下表现稳定。这些策略为深度学习实践者提供了实用的指导。
33 2
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
5天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
5天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
25 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
21天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 数据采集 算法
如何在一夜之间成为模型微调大师?——从零开始的深度学习修炼之旅,让你的算法功力飙升!
【10月更文挑战第5天】在机器学习领域,预训练模型具有强大的泛化能力,但直接使用可能效果不佳,尤其在特定任务上。此时,模型微调显得尤为重要。本文通过图像分类任务,详细介绍如何利用PyTorch对ResNet-50模型进行微调,包括环境搭建、数据预处理、模型加载与训练等步骤,并提供完整Python代码。通过调整超参数和采用早停策略等技巧,可进一步优化模型性能。适合初学者快速上手模型微调。
91 8
|
1月前
|
机器学习/深度学习 JSON 搜索推荐
深度学习的协同过滤的推荐算法-毕设神器
深度学习的协同过滤的推荐算法-毕设神器
41 4
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
55 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
30天前
|
机器学习/深度学习 搜索推荐 算法
深度学习-点击率预估-研究论文2024-09-14速读
深度学习-点击率预估-研究论文2024-09-14速读
45 0

热门文章

最新文章