近期,《中国诗词大会》《朗读者》《中华好诗词》等节目热播,掀起又一波传统文化浪潮。互联网语境的时代,“飞花令”这样听起来复古、文雅的词汇刷屏了朋友圈,唐诗宋词的美再次进入人们视野,重新唤起国人的诗心和对文学的温柔记忆。本文用机器学习的方式来挖掘《全宋词》带您一起领略宋词之美。 作者 | 小雨微澜 编辑 | 数小妹 近期,《中国诗词大会》《朗读者》《中华好诗词》等节目热播,掀起又一波传统文化浪潮。互联网语境的时代,“飞花令”这样听起来复古、文雅的词汇刷屏了朋友圈,唐诗宋词的美再次进入人们视野,重新唤起国人的诗心和对文学的温柔记忆。 如今人工智能是最高科技技术之一,人工智能技术与各领域相融合的探索,生活、工作智能化俨然成为一个新的趋势。那么,诗歌与人工智能能碰撞出怎样的火花呢?本次,小雨将以自然语言处理的方式和工具来挖掘剖析《全宋词》,用计算机来完成以对宋词的信息抽取、摘要,聚类分类、相似性分析等。 文本预处理 由于诗词与现代汉语的语法和结构的差异,不能采用常用的针对现代汉语的分词工具,如Jieba,HanLP等,本文是将全宋词逐字切分,用python编写的代码如下: 得到分词结果后,要进行第二步的操作,去停用词。停用词是一些完全没有用或者没有意义的词,例如助词、语气词、标点符号等。本文的停用词表是笔者首先从网上下载的哈工大停用词表: 将经过分词和去停用词的《全宋词》文本保存下来,便可以进行下一步的字频分析了。 字频分析 整个《全宋词》中共有797242行词,合计有18101842字。通过字频统计发现,出现次数最多的十个字是:人,山,风,天,日,生,云,中,时,年,其中人出现了7万多次,说明宋词很好的秉承了“以人为本”的中华文化;山,风,天,日,云则是描写自然风光的主要意象;生,时,年是对光阴的表达。这说明人物,景色,时光是宋词的三大主题,下文中我们将深入探索诗歌的聚类分析。 题目与作者 将184977首宋词的题目进行统计,绘制词云。题目频数较多的有山居杂诗,偶成,宫词,杂诗,华阳吟,题扇,上丞相寿,雨,梅花,海棠,感事,春日等 由于《全宋词》中的词作者众多,小雨统计了较为喜欢的诗人的作词数。如:苏轼,柳永,欧阳修,贺铸,黄庭坚等人。而作为宋词两大派系—“豪放派”与“婉约派”代表人的苏轼与柳永,词作数无疑是相对较多的。 文本相似度计算 宋词之妙,常在于其灵动性。同是写思念,有温庭筠的“梧桐树,三更雨,不道离情正苦。一叶叶,一声声,空阶滴到明”;有冯延巳的“锦壶催画箭,玉佩天涯远。和泪试严妆,落梅飞夜霜”;也有韦庄的“琵琶金翠羽,弦上黄莺语。劝我早还家,绿窗人似花”。作为从小在诗词熏陶下的中华儿女,我们可能很容易判断诗的主旨及不同的诗词之间是否具有相似处,但对计算机来说这些似乎没那么简单。因此我们探索用机器学习的方法去判断诗词的相似性。 本次采用的是IF-IDF权重计算与余弦相似度(cosine similarity)相结合的方法,使用于向量空间模型中。我们都知道文本是一种高维的语义空间,IF-IDF权重计算方法可将文本向量化。向量实际上是多维空间中有方向的线段。如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角了。余弦值越大,证明夹角越小,两个向量越相似。 小雨将用余弦相似度算法计算的结果与《用文本挖掘剖析近5万首<全唐诗>》一文中基于WMD(Earth Movers Distance)的语义相似度算法的结果进行对比,发现两种算法的对诗词相似度判断的趋势基本相似。在“黄沙百战穿金甲,不破楼兰终不还”与其相似诗句的相似度判断中,cosine similarity算法对不同诗词的区分度更大;“人生代代无穷已,江月年年只相似”等诗句的相似度计算中,两种算法在个别诗句的判断中差异较大,如:能在人代中,遂将人隔代,人间知几代,今曰见河南。 通过对诗词之间的相似度进行建模计算。文本之间的相似性对大规模语料进行去重预处理,或者找寻某一实体名称的相关名称(模糊匹配),接着,我们便可以利用划分法K-means、基于密度的DBSCAN或者是基于模型的概率方法进行文本之间的聚类分析。本文主要基于Word2Vec算法对全宋词进行聚类分析。 文本聚类分析 近几年,Google 开发了名为 Word2Vec 新方法,既能获取词的语境,同时又减少了数据大小。Word2Vec 实际上有两种不一样的方法:CBOW(Continuous Bag of Words,连续词袋)和 Skip-gram。两个方法都使用人工神经网络(Artificial Neural Networks)来作为它们的分类算法。本文主要用Skip-gram方法,通过给定一个单独的词来预测某个范围的词。首先,词汇表中的每个单词都是随机的N维向量。在训练过程中,算法会Skip-gram 来学习每个词的最优向量,关键代码如下: 我们发现,与酒关联度较大的词有柳,亭,道,送,雁,阳,鹃,水,故等;这类字正好构成了送别类诗词。古代由于交通不便,通讯极不发达,亲人朋友之间往往一别数载难以相见,故古人特别看重离别。常用意象:长亭饮酒、古道相送、折柳赠别、夕阳挥手、芳草离情,柳、浮萍、孤蓬、杜鹃、鸿雁等。李叔同的《送别》是非常著名的一首送别词,其中“长亭外,古道边,芳草碧连天,问君此去几时还,来时莫徘徊,天之涯,地之角,知交半零落,一壶浊洒尽余欢,今宵别梦寒”中就包含酒,亭,道等字。 闺怨类的关键字有:月、梦、泪、寒、灯、烛、帘、被、镜、人等。这类词以女子为的主要描写对象,以女子的身份表达作者内心的感叹、哀怨等情感。 古人或久宦在外,或长期流离漂泊,或久戍边关,总会引起浓浓的思乡怀人之情,所以行旅类词作就特别多,这类词的关键字有风、月、霜、雁、楼、云、鸟、烟、日、暮等。 咏物类的词或流露出作者的人生态度,或寄寓美好的愿望,或包涵生活的哲理,或表现作者的生活情趣。意向有岁寒三友:松、竹、梅(高洁);菊花(隐逸、高洁、脱俗);莲(出淤泥而不染、高洁);兰(高洁、君子之德);柳(离情别恨;摇摆不定;春天的美好);动雁(思乡怀亲、羁旅伤感);蝉(悲凉;高洁);鹃(哀怨、凄恻、思归)等。 山水田园类以描写自然风光、农村景物以及安逸恬淡的隐居生活见长,诗境隽永优美,风格恬静淡雅,语言清丽洗练。关键字有山、月、溪、花、泉、渔、隐、鸟、燕、烟等。 本文用机器学习的方式来挖掘《全宋词》,通过词频统计分析发现人物,景色,时光是宋词的三大主题;山居杂诗是词人最喜欢的题目,“豪放派”与“婉约派”代表人的苏轼与柳永,被《全宋词》收录的词作数是最多的;通过是IF-IDF权重计算与余弦相似度(cosine similarity)相结合的方法计算两句诗词的相似性,并于WMD(Earth Movers Distance)算法的结果进行对比,发现两种算法的对诗词相似度判断的趋势基本相同;使用Word2Vec算法中的Skip-gram方法进行聚类分析,通过关键字提取,将宋词中字分为送别类,闺怨类,行旅类等五大类。 小雨目前还处于初学阶段,不尽之处,欢迎广大机器学习爱好者在评论区留言与小雨一起交流探讨哦。 · end · |
|