胡韧奋等|让AI一口气读完《四库全书》会怎样?
来源:张黄国学
2019-08-21 14:00
【文|胡韧奋、李绅、诸雨辰】
近年来, 人工智能技术与人文历史研究碰撞出不少火花,上个月MIT与谷歌大脑团队的研究者们发布了一项最新研究,利用AI技术破解了失传的古文字,这也使我们不禁好奇,AI对于古代汉语的理解能力怎么样?近日,北京师范大学的研究团队尝试让机器从头学习文言知识,并开始像古人一样练习句读。
每当问起语文老师,如何提升文言文阅读能力?
一定会被告知:阅读能力的提升,不是一朝一夕……
如果我们让最擅长记忆和积累的计算机来阅读古文,它是不是可以做得很棒?
日前,北师大中文信息处理与古典文献学专业的研究者们尝试训练一个“饱读诗书”的语言模型,并让TA来参与古籍整理的工作。模型学习的对象包括《四库全书》与殆知阁语料库(规模约33亿字),而学习的方法则来自语言智能领域最新的深层语言模型。
2018年,谷歌公司推出了深层语言模型BERT,在阅读理解等11项语言理解任务中刷新记录,随后,CMU、百度、OpenAI、Facebook等机构也在其基础上推出了改进版本。和之前的方法相比,深层语言模型究竟有什么优势呢?一是可以吞吐超大量的数据,二是有很强的记忆和理解能力。
现有的深层语言模型覆盖了英文和中文,但却不具备理解古汉语的能力。于是,研究者们希望通过上述海量的古汉语数据来让机器“感受”一下博大精深的诗书礼乐文化。在多块计算卡上并行训练了约一周时间后,古汉语BERT初出江湖,TA可以像人一样联系上下文理解字词含义,并将其以数学向量表示。为了检测其理解效果,研究者们引入了句读任务。
在古典文史学习过程中,句读通常是必备的基本功。古文句读不仅需要考虑当前文本的语义和语境信息,还需要综合历史文化常识,对古汉语知识有较高要求。宋代大儒朱熹读韩愈文章,便有“然不知此句当如何读”之惑,近代经学大师黄侃在致陆宗达的信中也表示“侃所点书,句读颇有误处,望随时改正。”
在句读的过程中,有三项重要的技能点:
· 利用古汉语特有的节奏和韵律感;
· 联系上下文语境信息推敲求解;
· 调用文本之外的历史文化知识。
试看对应的三例:
1.梅花发寒梢挂著瑶台月瑶台月和羹心事履霜时节野桥流水声呜咽行人立马空愁绝空愁绝为谁凝伫为谁攀折 (朱熹《忆秦娥》)
2.李十一郎行修初娶江西廉史王仲舒女贞懿贤淑行修敬之如宾王女有幼妹尝挈以自随行修亦深所鞠爱 (冯梦龙《情史类略》)
3.此即昔人所谓东坡诗如大家妇女大踏步走出山谷便不免花面丫头屏角窥人扭捏作态之意 (柳亚子《磨剑室杂拉话》)
第1例为宋词,其开头很容易误断成“梅花发寒梢,挂著瑶台月”,而事实上“发”和“月”古音押韵,“瑶台月”与“空愁绝”则利用重复表示咏叹效果,故应断为:
梅花发 〇 寒梢挂著瑶台月 〇 瑶台月 〇 和羹心事 〇 履霜时节 〇 野桥流水声呜咽 〇 行人立马空愁绝 〇 空愁绝 〇 为谁凝伫 〇 为谁攀折
对于第2例来说,“王仲舒女贞懿贤淑行修”处很容易断错,原因是未理解“行修”是人名,或把“贞懿”误当人名。其句读重点为联系前文理解“行修”为夫君,其所娶妻子“贞懿贤淑”,“行修”对其十分尊敬,故应断为:
李十一郎行修 〇 初娶江西廉史王仲舒女 〇 贞懿贤淑 〇 行修敬之如宾 〇 王女有幼妹 〇 尝挈以自随 〇 行修亦深所鞠爱
第3例出自清华大学解志熙老师文章《断句背后的知与识——以三则诗文评为例》,该例曾用于清华大学研究生入学考试,《柳亚子文集·磨剑室文录》与参加考试的大部分学子均将其误断成:
此即昔人所谓东坡诗如大家妇女,大踏步走出山谷,便不免花面丫头,屏角窥人,扭捏作态之意。
此处句读关键在于“山谷”指黄庭坚(文本之外的知识),柳亚子意在比较苏东坡和黄庭坚两人的诗风,故应断作:
此即昔人所谓东坡诗如大家妇女,大踏步走出,山谷便不免花面丫头,屏角窥人,扭捏作态之意。
虽然现在很多古代经典都有了标点本,但其中常常包含错误,上述《柳亚子文集》即是一例。并且,在现有的古籍数据中,大部分文献仍未实现句读。据统计,殆知阁古代文献藏书2.0版语料库规模约33亿字,其中仅25%左右数据包含标点。
如果依靠人工继续整理这些古籍,则不知何年何月才能整理到头。如果依靠计算机,现有的技术方法却普遍只能达到60-70%的准确率,还很难为人所用。
深层语言模型在各种语言理解任务中都取得了大放异彩的效果,能不能GET上述三项技能,帮助我们解决句读难题呢?
为了让计算机在理解文义的基础上具备句读功能,研究者们准备了大量带标点的数据,包括超过30万首古诗,2万余首词,800多万段古文,模型还引入了处理标签序列的机制来专门学习句读方法。
由于诗词具有较为明显的格律特征,如大部分古诗为四五七言,而词牌名可以提示断句规则,为了帮助模型更好地学习语义和韵律信息,在预处理数据时保留了古诗题目,并去除词牌名。
在多块计算卡上并行学习了数天句读后,模型终于可以“出山”。在测试环节,研究者们引入了两轮难度不同的实验:
普通版测试对象为一批模型从来没见过的诗词古文数据(古诗5000首,词2000首,古文5000段),试验中,模型在诗、词、古文的句读准确率上分别达到了99%、95%和92%以上,较之已有的自动断句方法取得了巨大提升。
升级版测试对象为已出版古籍中的句读疑难案例。根据司马朝军、颜春峰、汪少华等学者研究,从中华书局出版的《钦定四库全书总目》、《周礼正义》中抽取出了60则句读误例(排除了模型训练时见过的数据)。这两本古籍均由该领域专家完成整理和句读标点,并经多次校对,其中的误例可谓句读任务的难点所在。
《钦定四库全书总目》(1997年版)由李学勤作序,是今人重要的古籍整理成果。从司马朝军的研究中找出了《总目》中11则与句读相关的错误,发现模型可以完全做对8则,试举正误例各一如下:
①
原文:柏何人,斯敢奋笔而进退孔子哉?(《诗疑》第216页)
模型:柏何人斯 〇 敢奋笔而进退孔子哉 (模型正确)
作者按:“斯”字上属。“何人斯”为上古习语。
②
原文:其中如“大衍”类蓍卦发微,欲以新术改《周易》揲蓍之法,殊乖古义。古历会稽题数既误,且为设问,以明大衍之理。(《数学九章》第1406页)
模型:其中如大衍类蓍卦发微 〇 欲以新术改 〇 周易 〇 揲蓍之法 〇 殊乖古义 〇 古历会稽题数既误 〇 且为设问 〇 以明大衍之理
模型句读与原文在一处犯了同样的错误,当作:
……《周易》揲蓍之法,殊乖古义、古历。会稽题数既误,且为设问,以明大衍之理。
虑到上古语言与中古语言的差异,为了验证模型在处理上古语言时的效果,又选择了王文锦、陈玉霞点校的《周礼正义》一书,将颜春峰、汪少华整理的49则断句误例送入模型测试。其中,模型能完全正确断句27则,断句存在问题的有22则。
原文:《公羊说》曰:“师出曰祠,兵入曰振旅。”(1485页)
模型:公羊说 〇 曰 〇 师出曰祠兵 〇 入曰振旅 (模型正确)
《周礼正义》的模型断句误例中,较为集中的是对字义的考证,尤其是引《说文》时的错误,比如 “服,牝服,车之材”误断作“服牝,服车之材”。“服”作为《说文》中的字头,其用法与其他古文表达有较大区别。此外,因盟誓、考课、葬礼等礼仪制度不明而致误亦有数例。
从经典古籍中的断句疑难案例可以看出,基于深层语言模型的句读方法在处理古籍一般句式表达时有明显优势。而在处理《说文》、古代制度等专业性较强的数据时尚存在问题,这与该类型学习数据相对较少有关。总的来说,模型在已出版古籍的断句疑难误例上取得了很好的效果,测试共计60例(均为专家标点错误,并经多次校对未查出),而模型竟能完全正确断句35例,可以说达到了较为实用的水平。
看来,让AI一口气读完四库全书,取得的效果还不错——
“我是中文系毕业的,实话说,模型的阅读和句读能力肯定比我强,看测试case的时候,常常感叹,它做得真的挺不错的。”——研发团队成员李绅
“有时候甚至强过博士后,模型断句效果超出了我的预期,在我们文献整理的项目中已经开始用它来做预处理。”——研发团队成员诸雨辰(古典文献学博士、历史学博士后)
从应用角度看,这里的句读方法既可以用于大规模古籍整理中预断句工作,大大减轻专家负担,也可用于校对环节,帮助检测人工断句或标点的错误。
在后续工作中,除了提升已有的句读模型,还希望将基于深层语言模型的古汉语知识表示方法应用到古文翻译、古诗文创作等其他古汉语信息处理任务中。
参考文献:
[1] 朱熹. 韩文考异. 影印文渊阁四库全书(第1073册). 台湾商务印书馆, 1986.
[2] 黄侃. 黄侃手批白文十三经. 上海古籍出版社, 1983.
[3] 解志熙. 断句背后的知与识——以三则诗文评为例, 文史知识, 2017(5).
[4] 王博立,史晓东,苏劲松.一种基于循环神经网络的古文断句方法.北京大学学报(自然科学版),2017,53(02).
[5] 张开旭,夏云庆,宇航.基于条件随机场的古文自动断句与标点方法.清华大学学报(自然科学版)网络.预览,2009,49(10).
[6] Devlin Jacob et al. Bert: Pre-training of deep bidirectional transformers for language under-standing. NAACL 2019.
[7] 司马朝军.中华书局《钦定四库全书总目》整理本校记.人文论丛, 2013(00).
[8] 颜春峰,汪少华.从《周礼正义》点校本谈避免破句的方法.古汉语研究, 2014(02).