梅花易数原文射覆 用文本挖掘剖析近5万首《全唐诗》-- 一文学会NLP数种基础任务
梅花易数原文射覆 用文本挖掘剖析近5万首《全唐诗》-- 一文学会NLP数种基础任务
原文链接:
已经得到授权人的授权
楔形
近年来,“汉字听写大会”、“汉语成语大会”、“汉语谜语大会”、“汉语诗歌大会”等弘扬中华传统文化的现象级综艺节目层出不穷。人们崇拜中国文化中最精致的文字。虽然沉浸在无穷无尽的互联网词汇中,但他们始终面临着“语言沙漠”的困境,依然向往。
以上节目中,笔者最感兴趣的“中国诗歌大会”——通过诗歌知识的竞赛和鉴赏,带领全民重温所学的古诗词,分享美好感受诗的情趣,汲取古人的智慧情怀,陶冶心灵。
因为我在新浪微博做语义分析产品,所以我通常会使用很多文本挖掘的方法。因此,作者想从文本(数据)挖掘的角度来“探索”整个唐诗,挑战一些不同场景(现代汉语和古代汉语)下文本处理分析的异同,磨练自己的分析能力。 但我想做的更多是的,将数据的美与诗的优雅结合起来,用跨界思维去发现一些有趣的东西。
这里,笔者分析的语料为《全唐诗》,清康熙四十四年(1705年)编修,诗集48900余首。
接下来,笔者将采用多种文本挖掘方法,对《全唐诗》进行分析。以下是本文的上下文:
0 文本预处理
现代汉语有许多开源/免费的分词解决方案或工具。解霸、HanLp等开源解决方案,“傻瓜式”免费操作工具还包括新浪微博文本挖掘工具。用这些现代汉语分词工具对古诗词进行分词,结果如下:
但是,对于古汉语(文言文),尤其是诗歌的分词处理,就没有这么简单了,因为单字词占古汉语词汇统计信息的80%以上,而古汉语有微妙的意义和伟大的意义。现代汉语的分词技术往往不适用于它。针对这种情况,作者采用了逐词切分的方法,同时去掉了一些常见的虚词,如“zhi”、“hu”、“who”、“also”。分词和停用词去除如下:
文本预处理后,可以进行文本挖掘中最常规的分析——词频统计,看看哪些词在《全唐诗》中出现次数最多。
一、词频分析:唐诗常用词分析
1.1
全球高频词
首先我们来看看去除这些虚词后的全局高频词。作者在这里展示了它们。 “仁”字居首位,体现了《说文解字》中“人为天地之性”的说法,说明唐诗很好地坚持了“以人为本”的中华文化。 ”。随后的“山”、“风”、“月”、“日”、“天”、“云”、“春”,都是山水诗中经常出现的意象。
1.2
典型图片分析
所谓“意象”,是客观意象通过创作主体独特的情感活动所创造的艺术形象。简单的说,形象就是一个蕴含“意义”的“形象”,是用来表达主观感受的客观形象。在比较文学中,形象的名词解释是---所谓的“形象”,简而言之,可以说是主观“意义”和客观“形象”的结合,即“客观形象”。融入诗人的思想感情。具有特殊意义和文学意义的特定形象。简单来说就是借歌词。
例如古诗“月”中常见的形象有以下内涵:
我在这里选择的图像是关于季节和颜色的。
几度秋——《全唐诗》中的季节
根据《全唐诗》中“春”、“夏/夏”、“秋”、“冬”四个字出现的频率,“春”字居首位,“秋”字居前第二,“夏天”和“冬天”出现的频率少了一个数量级。在唐诗中,伤春、惜春是春诗的共同主题。代表作有朱淑珍的《赏春》和杜甫的《立春》。 、韩愈的《春雪》、张若虚的《春江花月夜》等,难怪商朝和西周初期,一年只分春秋两季。 ,后人常以春秋为年号。 .
一千紫一千红一绿——《全唐诗》中的颜色
在这里找到了51个古汉语常用的颜色词(注意是古汉语语境中的颜色称谓),其中红色系列(红、丹、朱、红、紫等),黑色系列(Dark、神秘、黑色、深色、墨水等)、绿色系列(绿色、绿色、绿色、蓝色等)和白色系列(白色、素色、亮色、亮色等),这些颜色及其对应的词频如下所示:
“白”这个词用得最多,本义是“日出和日落之间的天空”。作者中常见的有“白发”、“白云”、“白雪”,常常渲染出一种青春的美。昙花一现的忧伤气氛,“白头搔短,簪子脱不掉”、“春天白雪来不及,她戴花园树做飞花”等名句。不见你,高堂明镜忧愁白发,晨如晚青丝。雪结”,“白云悠悠远去,清风江愁愁。 "
综合统计以上主要色系,得到如下圆形比例图:
其中,绿色占多数。 “绿”、“碧”、“苍”、“翠”多用于山水画,“绿树”、“碧水”、“青松”、“绿柳”等,这些高频词反映唐诗中大量描写景物的诗词,流露出一种从容、清新、悠闲的感觉。
二、词汇检测:唐诗中常见的二字词发现
刚才笔者分析的是一个单字,而大部分汉语语素都是用一个单音节(字)来表示的,也就是所谓的“一音一义”。当这些单音节词素可以独立应用时梅花易数原文射覆 用文本挖掘剖析近5万首《全唐诗》-- 一文学会NLP数种基础任务,它们就是词。古汉语中的单音节词较多,这也是为什么在古汉语翻译中,现代汉语中的一个词经常被翻译成两音节词。
但有些单音节语素,不能独立使用,不是词,只能是语素,如“国-”、“踌-”、“-我们”。
有鉴于此,笔者想在唐诗中发现一些常用的二字词,看看构词的规律是什么。作者选取同现10次以上的词,列出同现的二字词。关键步骤如下:
以下是同时出现的二元组:
从以上二词检测结果,作者可以发现以下六种构词规则:
(1)复合词(A+B等于C):由两个词组成,代表意义,形成两个音节词。这些词出现频率最高。例如,兄弟,砧和杵,吉帮派、牺牲、巡逻、吠叫。
(2)重叠(AA等于A):郎朗、苏苏、欣欣、卓卓。
(3)重复(AA不等于A):(隔开不能形成其他词)、zhi(隔开词的词义不同)等
(4)双声调(声母相同):踌躇(声母都是c,不能单独组成词)、交错(声母都是c)、埋葬(声母都是m)。
(5)蝶云(尾音同):噫he(尾音i)、缠绵(尾音ao)、妖娆(尾音ao)等
(6)双音节拟声词:打哈欠、喃喃自语等
三、语义网络分析:发现唐诗中常见的“词”
在这部分,作者提取了上述高频词中词的共现关系。详细的原理介绍可以参考作者之前写的博文《以虎修网4W+文章的文本挖掘为例,展示数据分析的一套完整流程》和《举个例子说说大数据舆情分析与文本挖掘”。
可以看出,上述语义网络可以分为3个簇,分别是橙色、紫色和绿色。在高频词中,近40个词在字体中清晰可见。圆圈的大小表示词在语义网络中的影响,即“(中介核心)”,学术术语是“两个不相邻的成员之间的交互依赖于网络中的其他成员,尤其是那些成员在两个成员之间的路径上,它们对两个不相邻的成员的交互有一定的控制和约束”。在诗歌中,这些字往往以“字”的形式呈现,是诗中必不可少的字。第 3 课:
橙色:北方、溪流、马、草、闲、寂、会、云等;
紫色:行、树、雨、背、笑、言、幽、清、白、野、线等。
绿色:知识、黄金、柳树、困难、悲伤、古老、不朽、希望、客人。
其中,从人物构成来看梅花易数原文射覆 用文本挖掘剖析近5万首《全唐诗》-- 一文学会NLP数种基础任务,绿色簇中的人物大多与告别(朋友)有关。
四、词向量分析:基于关联词分析
由于前面的文本预处理是按词分词的,所以这里进行基于词向量分析的词向量分析。
基于词向量,可以从大量未标注的普通文本数据中无监督地学习词向量,而这些词向量包含词之间的语义关系,就像组点一样,词可以由周围的词来定义。
基于词的嵌入原则上是指将一个包含所有词数的高维空间嵌入到一个维数低得多的连续向量空间中,每个词都映射到实数字段。向量。将每个单词变成向量的目的是为了方便计算。例如“找到单词A的同义词”,可以通过“在cos距离下找到与单词A最相似的向量”来完成。相关案例请参考《作为一名合格的“成长黑客”,还要注意对外部数据的分析!》。下面是基于词向量模型的原理示意图。
下面,作者选取了一些词进行词向量相关性分析,如下图:
与“梅”有关的词大致可分为两类:同属植物,如胡芦巴、杏、梨、桃、石榴、杨树、柳树、印楝等;以及与“梅”相关的图像,如春(梅)、酒(酒)、(梅)花、(梅)枝、残(梅)、(梅)枝等。最相关的是“春”,这在唐诗中很常见。贤相丞相宋敬在东川官邸的榛莽中看到梅花盛开。 ,自圆其说”梅花易数原文射覆,赞叹早春梅花独盛,知足寒花的宿命。
“京”字与其同音“京”(与繁体结合,共出现3次,分别为“京”、“京”、“京”)”,结合“坐” 、“院”等字,可与“净渊”(佛寺,又称“净语”)、净觉(意为心中不妄想,不惑于境)、或在寺院相联系。修禅,领悟佛法。
我也想看看唐诗中经常出现的情绪,即“悲”、“忧”、“忧”、“怒”、“怕”,看看它们的相关词是什么。此处请读者自行分析,笔者不再赘述。
注意这里得到的与情感相关的词,作者会收集整理,制作情感词典,用于后面的诗歌情感分类。
五、多维情感分析:发掘唐诗“七情”
王国维曾在《世外桃源》中提到:“境界不仅是景,更是人心中的境界。所以,能形容景物和真情的,才叫境界。” .”,说重要的是“境”和“境”是共通的——风景也可以是境界,浪漫也可以是境界,因为风景是外在的世界,情感是内心的世界。因此,在这里,笔者想分析一下整个唐诗所表达的内心境界,也就是内心的情感。它是7种细粒度情绪的分类,分别是悲伤、恐惧、喜悦、愤怒、思考、喜悦和担忧。
根据上面得到的词向量,经过人工选择,得到一个可以用于训练的“情感词典”。根据诗歌中常见的主题类别,情感类别分为:
悲伤:悲伤、悲伤、痛苦、丧偶、悲痛、悲伤、叹息……
恐惧:诽谤、诽谤、麻烦、罪恶、欺骗、恐惧、诬告……
音乐:喜、欣、乐、易、恰、常、乐……
愤怒:愤怒,雷声,怒吼,雷声,雷声,凶猛,砰……
思考:思考、回忆、珍惜、憎恨、念诵、相遇、期待……
快乐:快乐、健康、倩、恭喜、好、好、好……
担心:同情,担心,尴尬,担心,困难,更不用说,不幸......
作者这里使用的是基于LSTM(-Term,长短期记忆网络)的情感分析模型。
这里,我们将文本传递给嵌入层(Layer),因为有上万个单词,所以我们需要比单一编码向量(One-Hot)更高效的表示来输入数据。在这里,作者将使用上面训练的词向量模型,并使用预训练的词嵌入(Word)引入的外部语义信息来做迁移学习()。
以下是简要示意图:
为了达到更好的效果,作者使用最新+深度学习模型进行情感判断,可以更好地提取文本中的特征和词序信息,记住更长的语义依赖,做出相对准确的情感判断。其网络结构如下:
接下来,我们来试试实际效果:
作者随机测试了100个句子,发现其中86个是准确的。粗略准确率估计为86%。当然,这只是一个不太严谨的小尝试。在真实的业务场景中梅花易数原文射覆,优化和提高模型的准确性需要花费大量时间。
以下是《全唐诗》近5万首诗的情感分析结果,如下图:
代表大唐风气的唐诗竟然以积极昂扬的情绪为主,可能出乎很多人的意料。而“快乐”、“愉悦”等情绪占据了最后一波?
接下来,笔者将重点分析情绪“悲伤”占据主流的原因。
从唐诗创作的共同题材来看,以“悲”字为基调的唐诗有很多,名诗也不少,比如唐诗中常见的几种情结,比如“悲秋情结” 、“离别情结”、“暮色情结”、“悲痛情结”,都体现出强烈的“悲伤”色彩。
古人云:“诗人悲愤而出”,指出一个人的成就与其所处的环境和心境有一定的关系。正如司马迁所说:“《诗》《书》含糊不清,欲成其志。昔伯苦于里演《易经》;孔子二臣、蔡写《春秋》。 ..这是圣人一怒之下所做的。此人一脸阴沉,找不到方向……” 回顾古今著名的诗人和作家,几乎都被排斥、诽谤,不情愿和逆境。有些经历甚至是悲惨的。正是在这种悲惨而严酷的环境中,才让它努力工作。
重要的是,唐诗中的“慈悲”,不仅是一种“童心”的悲哀,更是一种超越时空、同情苍生、同情最美好的爱情的大慈悲。如下:
六、 诗歌生成:使用深度循环神经网络自动编写唐诗
与上面情感分析模型使用的内部原理一致,这里使用的是LSTM,一个2层网络。
上图是文本生成的简要示意图。模型构建是基于字符(字母、标点符号等单个字符串,以下统称字符),也就是说我们的输入和输出都是字符。例如,如果我们有一首诗“胸部稳定的地方是我的家乡”,并且我们想基于这首诗构建一个LSTM,那么期望的结果是输入“胸部”并预测下一个字符是“中”。 "; 输入“中”时,下一个字符预测为“稳”……输入“wu”,下一个字符预测为“祥”,以此类推。
由于原理过于复杂,涉及大量代码和数学公式,笔者只展示生成的结果,训练语料为预处理后的“全唐诗”。
从《春雨》开始,生成一首500字的诗。结果如下:
可以看出大部分的诗都是围绕着“春天”展开的,也就是前两个词引导了后续结果的生成,这要归功于LSTM超强的“记忆能力”---记住诗时空依赖在文本序列中。
在生成的诗句中,有些诗句相当有趣,上下链接的意象有很强的相关性。
以下是一些优秀的诗句(当然,这是作者自己的想法),其中部分学到了高级对抗技巧,如下:
白鹭惊岛,红旗晚出。
我最喜欢的是这两句话,整齐地对立起来:“白鹭”-“朱奇”,“顾岛”-“万六”,“震惊”-“出”。这体现了《人辞华》中的“无我境界”:“无我境界,我们以物看物,不知何为我,何为物”,即是意境和物与我融为一体的美好境界。其中,“惊讶”和“出局”都可以称得上是词,很有活力,很精彩!
七、 相似文本搜索:查找与 WMD 相似的诗歌
最后我们来看看诗歌的信息检索问题,即作者随机输入一首诗,然后机器会根据语义相似度。
说到这里,笔者不禁想到了一个词——“射击”。射击游戏早期的招数主要是做谜语和猜谜语,并用锅、碗等提前隐藏一些东西,让人们猜测。这两个技巧都相对简单。后来,在此基础上,出现了一种间接曲折的以语言和文字的形式进行的射击和掩护游戏。当射手猜测时,他们将受到饮酒的惩罚。唐昊明小说《张之洞》对射击游戏有精彩描写:
鲍珠坡突然对大家说:“我有枪,谁都可以打我。”没带大家说话,他立即说道,《左传》说:博极属于宋朝。拍一首中国诗。所有人都低下了头。
...
张之东平静地朗诵,白居易一首诗说:老大嫁为商妇。
如果你不熟悉古籍,可能很难将这两句话联系起来,但《张之洞》中有解谜的描述:
杨锐说:“伯仲叔姬,这是中国兄弟姐妹的等级顺序。伯姬是鲁国的长公主,也是排位中的老大。经过周公义的吩咐武庚之乱,商旧都周边一带被封锁,赐给纣王齐妃,国名宋,所以宋国是商贾后裔聚集的地方。嫁入宋国,不就是‘老板嫁为商妇’吗?”
你可能会想,如果你自己想一想,你不仅需要渊博的知识,还需要闪电般的反应能力,这一定是一个非常聪明的人!
试想,用机器做,能做好吗?如果是这样梅花易数原文射覆,它将如何工作?
这里,作者介绍了基于WMD(Earth Mover's)的语义相似度算法,和上面的情感分析类似,同样使用了之前训练的词向量模型,利用外部语义信息处理不同的词不同的同义词。
WMD('s) 是一种使机器能够以有意义的方式(结合文本的语义特征)评估两个文本之间的“距离(即文本之间的相似性)”的方法,即使2 作者不包含共同的词汇。它使用基于 的词向量,这已被证明在 k 最近邻分类中优于许多最先进的方法。以下是基于WMD“射击掩护”的机器解决方案:
上面的两个句子没有共同的词汇,但是通过匹配相关的词,WMD 能够准确地衡量两个句子之间的(非)相似度。该方法还使用了一种基于词袋的文本表示方法(简单地说,就是词在文本中出现的频率),如下图所示。这种方法的直觉是最小化2段文本之间的“旅行距离( p>
在简单解释了相关原理之后,作者再展示最终的分析效果。由于对《妖猫传》中的线索式“清平乐”印象深刻,笔者让机器在“全唐诗”+“全”中找到与其最相关的TOP9诗宋词”。结果如下:
第一个搜索结果是原句,但是一个词有区别(其实古语中的“花”和“花”是可以互换的。相似度不是1.0。第二个类似的诗是宋代的一首歌曲,林正大的《权江月》(七)),其实这整首诗可以作为对李白《清平乐》的评注,因为整篇文章是一个对它的改造:《清平乐》中的句子和段落被拆开,加入新的联想,重新组合,灵活运用,在情感上提升了原诗的表达。以下两首诗的情况类似。只是相似度略有不同。
接下来,就是刚才机器生成的诗句,看看有哪些诗句有类似的内涵:
我们来看看作者欣赏的两个名句。机器很好地捕捉到了它们之间相似的语义关系。即使词汇不同,它仍然可以在语义上检索相似的诗歌。
写到这里,《全唐诗》的单独文本挖掘已经完成,但作者想到了一个有趣的分析维度——比较《全唐诗》、《全宋词》和《全宋词》从文本挖掘的角度分析元曲在字的使用上的差异,并以文字的基本符号来分析其文学艺术特征。
八、文字对比:《全唐诗》、《全宋词》、《全元曲》与
的比较
由于分析涉及三个对象,用常规的二元比较分析方法很难得出有效的结论。因此,作者跨界采用符号学领域的研究成果。
“(作者译为‘符号广场’)”,由著名符号学大师和作家发明,是一种精炼的比较分析( )方法,通过结合两个给定的相反概念/案例(如“ “生”和“死”)(通过“或”、“与”、“非”的逻辑)扩展到4类(如“生”、“死”)、“生死交替(也就是活死人,The Dead)”,“不死不灭(天使,)”,有时可以扩展到 8 或 10 个分析维度。下面是符号方块的结构示意图:
说明:“+”号将2个词组合成一个“元词()”(复合词,Term),例如5是1和2的复合结果。
组件
主要包含以下2个元素(我们在回避块的构成关系:对立、矛盾、互补或包容):
(1)条款:
由 4 个术语组成::
Term A 和 TermB 是两个相反的概念。他们是对立的。这是“符号广场”的基础。其他两项是通过将项 A 和项 B 取反得到的。
(2)元素项()
包含 6 个元术语。这些元词由上述4个基本术语组成,其中大部分已被命名。
以下是“男”和“女”的相对概念的例子,注意错综复杂的逻辑关系/类型。
说完分析的大体原理,笔者就到这里实战了。与上面的原始模型不同,作者除了基本的二元对立分析之外,还增加了一个新的分析维度。全唐诗、全宋词、全元曲三元文本比较分析。
预处理前的文字是这样的:
预处理后如下图:
分析结果如下图(点击放大):
从上面呈现的TOP10高频词和象限块(左上角“唐诗”,右上角“宋词”,右上角“元曲”)中,独特的唐诗、宋词、元歌中出现的高频字词序:
从以上关键词来看,唐诗、宋诗、元乐的特点十分鲜明:
另外,在顶部的“复合”中,表示了三者常用的字符,即共同特征,主要涉及风景的刻画(如“清”、“你”、“流”、“舟”、“霜”、“蒲”、“鲁”、“碧”、“帆”、“风”等)和抒情(如《忧郁》、《回忆》 、“沉默”、“你”等)。
下面的两个象限,“非唐诗”和“非宋词”分别代表“宋词+元曲”、“唐诗+元曲”,三个常见高频词中的两个,其中两个也是以此类推,笔者在此不再赘述,请广大读者朋友们挖掘其中的奥秘。
结论
作者不是专业的诗歌研究者,以上分析未必准确。如有分析不当之处,敬请指正。但是,作者想通过对唐诗的分析来表达他对文本(数据)挖掘的看法:
在数据分析中,得到的数据结果只是“介绍”和“线索”。最重要的是依靠人脑来分析结果。借助背景/业务知识和分析模型,从文本表层深入到其深处,去发现那些浅读无法掌握的深层含义,挖掘其价值。
参考资料: