基于词向量的《笑傲江湖》的文本分析论文_徐瑞辰, 李安然

徐瑞辰 北京化工大学理学院 金融 数学 100000

李安然 中华女子学院 人力资源管理

摘要:本篇文章的探究方向为两个两面:其一为词向量在神经语言系统中的概念,应用,用cos距离刻画其相差程度和相关关系,最终得到一套较为完善的应用词向量解决文本聚类问题的方法;其二为对《笑傲江湖》这部小说进行分析,应用上述的词向量的聚类办法,得出其主要角色的相互关系,最终小说联系现实,找出个人前进方向。

关键词:霍夫曼树;循环神经网络;cos距离聚类

一、描述性分析

在这个部分,主角专门指的是令狐冲,林平之,任盈盈,岳灵珊等有情感纠葛人。

首先,统计出这四位角色在文章中的所有称呼(方法考上述的人工操作),统计结果见下表:

图1 四位角色在文章中称呼

注:上述统计的角色姓名仅为最大多出现的姓名,其有非常少量的称呼没有统计到,比方说开篇时林平之的母亲将其称之为平儿,因为仅仅开篇出现过,数量非常有限,所有我就因此忽略其称呼。

出场次数统计方法,这里的出场次数我使用人物名字所出现的段落来刻画,比方说1009(段落),意味着这个角色姓名在文章中有1009段均出现过——特别需要说明的时,如果同一段出现两次角色姓名,我在这里为了逻辑严密只计算一次,如果同一角色的不同称呼出现,或者角色姓名是被其他人引用出现,我在这里依然将其统计到角色出现次数之中。

首先计算出每个角色的出场次数,然后根据其在文章中出现的顺序得出其密度估计——显然是一个很好绘制角色出场密度的工具,通过分析可以得出,林平之在前期戏份比较多,中期沉溺了一段时间之后,在大约3400段加戏,随后便销声匿迹。对应原文情节便是:《笑傲江湖》这部小说是以福远镖局灭门惨案为起始点爆发的,在灭门之前林平之生活阔绰,在灭门惨案之后其委曲求全,比方说化装成为乞丐,甚至认木高峰为爷爷,最终拜入觊觎自己林家辟邪剑法的华山派岳不群门下。此后便是大师兄令狐冲的故事,中期大约3400段讲的是,林平之发现岳不群的阴谋后自宫修炼辟邪剑法,杀死灭门凶手青城派余沧海,侮辱自己的木高峰等人,随后平弟为了向左冷禅盟主表现忠心,一剑刺死岳灵珊,因为此事被令狐冲锁入地牢结束了自己的江

湖生涯。

而岳灵珊更显得痴情,其前期出场可以看出其是伴随着林平之的出场而出场,而后期拜堂成亲之后便相伴出现,随着被一剑刺死之后,在令狐冲的怀中结束了自己的一生(死亡的段落3600段左右,描绘过于伤感,我复述如下,在昏暗的林子便,岳灵珊在令狐冲怀中叮嘱大师哥照顾好平弟,然后在死前的几十息之中哼唱着平弟教给她的闽南民歌)。

令狐冲从出场密度来讲,其不是那种开门见山的主角,其出场依靠着大量的铺垫,尤其是华山派师弟师妹们的口耳相述,尤其是后面的仪琳小师妹在大厅中对定逸师太的叙述中将令狐冲这个角色推入高潮,让人们产生无限的遐想随后才缓缓出场。其后出场较为平缓,在3000段左右的密度下降是因为,此时金庸先生主要描绘的是五岳剑派之中的以岳不群和左冷禅为代表的争斗,所以对于令狐冲的描绘就稍微变得少一点点。

盈盈的出场非常地突兀,在绿柳山庄因为王元霸岳不群令狐冲的拜访,这位“圣姑”就出现到了故事当中。不得不说任盈盈是我度过小说中最接近于人们幻想的女主角,有智慧狠辣家境丰厚江湖声望非常高且深爱着男主角(比方说反控制上官云等人,制服岳不群,但却可以为了令狐冲之身前往少林寺为无辜死于自己手中的少林弟子赎罪)。

二、方法说明——词向量

注:这部分引用参考文献的POLL的微博笔记,加我的理解。

(一)词向量

如果机器要处理自然语言问题,那么第一步一定是要想办法将自然语言数学化。

NLP (神经语言系统)中最直观,也是到目前为止最常用的词表示方法是 One-hot Representation,这种方法把每个词表示为一个很长的向量。这种 One-hot Representation 如果采用稀疏方式存储,会是非常的简洁:也就是给每个词分配一个数字ID。比如刚才的例子中,话筒记为3,麦克记为8(假设从 0 开始记)。如果要编程实现的话,用 Hash 表给每个词分配一个编号就可以了。这么简洁的表示方法配合上最大熵、SVM、CRF等等算法已经很好地完成了NLP领域的各种主流任务。

当然这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的。仅从这两个向量中看不出两个词是否有关系,哪怕是话筒和麦克这样的同义词也不能幸免于难。此外,这种表示方法还容易发生维数灾难,尤其是在Deep Learning相关的一些应用中。

(二)Distributed representation 词向量模式

Distributed representation 最大的贡献就是让语言意义的刻画变得更加容易。向量的距离可以用最传统的欧氏距离来衡量,也可以用 cos 夹角来衡量。用这种方式表示的向量,“麦克”和“话筒”的距离会远远小于“麦克”和“天气”。可能理想情况下“麦克”和“话筒”的表示应该是完全一样的,但是由于有些人会把英文名“迈克”也写成“麦克”,导致“麦克”一词带上了一些人名的语义,因此不会和“话筒”完全一致。

(三)词向量模型——word2vector算法思想

什么是word2vec?word2vec就是将词表征为实数值向量的一种高效的算法模型,其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为 K 维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似。

Word2vec输出的词向量可以被用来做很多 NLP 相关的工作,比如聚类、找同义词、词性分析等等。如果换个思路,把词当做特征,那么Word2vec就可以把特征映射到 K 维向量空间,可以为文本数据寻求更加深层次的特征表示。

Word2vec 使用的词向量不是我们上述提到的One-hot Representation那种词向量,而是 Distributed representation 的词向量表示方式。其基本思想是通过训练将每个词映射成 K 维实数向量(K一般为模型中的超参数),通过词之间的距离(比如 cosine 相似度、欧氏距离等)来判断它们之间的语义相似度.其采用一个三层的神经网络,输入层-隐层-输出层。有个核心的技术是根据词频用Huffman编码,使得所有词频相似的词隐藏层激活的内容基本一致,出现频率越高的词语,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度。而Word2vec大受欢迎的一个原因正是其高效性,Mikolov 在论文中指出,一个优化的单机版本一天可训练上千亿词。

这个三层神经网络本身是对语言模型进行建模,但也同时获得一种单词在向量空间上的表示,而这个副作用才是Word2vec的真正目标。Word2Vec实际上是两种不同的方法:Continuous Bag of Words (CBOW) 和 Skip-gram。CBOW的目标是根据上下文来预测当前词语的概率。Skip-gram刚好相反:根据当前词语来预测上下文的概率(如下图所示)。这两种方法都利用人工神经网络作为它们的分类算法。起初,每个单词都是一个随机 N 维向量。经过训练之后,该算法利用 CBOW 或者 Skip-gram 的方法获得了每个单词的最优向量。

现在这些词向量已经捕捉到上下文的信息。我们可以利用基本代数公式来发现单词之间的关系(比如,“国王”-“男人”+“女人”=“王后”)。这些词向量可以代替词用来预测未知数据的情感状况。该模型的优点在于不仅考虑了语境信息还压缩了数据规模。因为神经网络可以替我们提取出这些特征的信息,所以我们仅需要做很少的手动工作。但是由于文本的长度各异,我们可能需要利用所有词向量的平均值作为分类算法的输入值,从而对整个文本文档进行分类处理。

三、模型建立

(一)分词

用Jieba对文章每一段落进行分词,分词的时候有两个需要注重注意的点:

1.在分词的时候需要额外输入Key words(主要功能是用来表明那些词语是连在一起的不可以被分开)。因为,我在模型中主要分析的是《笑傲江湖》中人与人之间的关系,所以主角的姓名明显是不能被分开的词语,所以为了简化从操作我输入的Key words 就是我所输入的主角名单。

2.在分词的时候也要注意输入Stop words , 比方说 “的,呢,地之类”,当分词遇到这些词语的时候必须强制分开,因为根据中文习惯,这些词语很少会表达连贯的意思,而且因为这些无意义的词语出现次数过多,会降低计算机运行效率,增加工作时间。分词所用到的分词文件我记录到了TXT文档“stop.TXT”中。

(二)用R语言的Wordvector2包进行训练

这个包是最近某位不知名的大神改进李舰老师的word2vector包,所制作的更加方便高效的包,安装过程比较繁琐,我以记录在附录的文件中。

我所采用的词向量维数为105维,选用理由,这是我从50到200这个范围之内,以21为因子实验后得出的最符合预期的维数。

四、结论与建议

(一)结论分为两方面,一方面是针对词向量,另一方面针对小说的分析。

词向量:词向量这个工具实测在研究文字之间的相似度真的非常有用,在选取适当的维数之后研究结果,以及聚类结论与原作者意图接近,但是我没有进行词汇的代数运算,无法计算其代数运算结论。

文本分析:张目为真,闭目为假。这句话的意思是,无论你是否愿意接受真假一直都环绕在你的身边。就像岳不群,真假对于其来说没有区别,令狐冲求其的忠心耿耿在他眼里便是假,一统五岳剑派在其眼里为真;任我行也是一样,眼里只有一统江湖,所谓的下属、心腹,包括女儿都是可以牺牲的对象;林平之更是一样,在报了灭门之仇之后抛弃了深爱自己的岳灵珊,而去投靠自身难保的左冷禅,在其心里的真假之道与我们或许便有所差别吧。

如果说真是社会现实,那么假便是内心的向往与追求。或者相反。你能说林平之眼前的岳灵珊是真实的,而自身的血海深仇是假吗?比方就我们自身来讲,基本每个人内心都会有几个不切合实际的小目标,那么指导我们前进的究竟是内心的忠实信念,还是眼前的现实。仁者见仁,智者见智。

当然我也不能去批判谈它们,对于它们来说所谓的真假都是建立自身的主观感受上的。或许看淡江湖,忘去真假,追求内心所向往的真实便是我们将要前行的道路吧。(二)建议

对于应用词向量来进行最基本的分析,在我这篇文章中已经阐明。但是更高阶的应用还需要继续学习;

对于《笑傲江湖》小说的解读我认为应该带着真假之道,在自己的生活中要能分辨出自己所认为的真假,找到最适合自己的道路。

参考文献:

[1]我叫郭小蕙-用R语言进行文本分析《红楼梦》-( https://www.cnblogs.com/zzhzhao/p/5299876.html)

[2]R语言之都-R语言文本分析第三期-作者朱学宁

[3] PoLL的笔记—[Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型(https://www.cnblogs.com/maybe2030/p/5427148.html)

[4]知乎提问——词向量的数学原理

[5] CDSN博客-Deep Learning in NLP (一)词向量和语言模型——(http://blog.csdn.net/zr459927180/article/details/65447861)

[6] Chaosimple的博客——余弦距离、欧氏距离和杰卡德相似性度量的对比分析*(https://www.cnblogs.com/chaosimple/archive/2013/06/28/3160839.html)

论文作者:徐瑞辰, 李安然

论文发表刊物:《成长读本》2018年4月总第29期

论文发表时间:2018/5/10

标签:;  ;  ;  ;  ;  ;  ;  ;  

基于词向量的《笑傲江湖》的文本分析论文_徐瑞辰, 李安然
下载Doc文档

猜你喜欢