使用word2vec分析红楼梦中的人物

来源:互联网 发布:崖山之战 知乎 编辑:程序博客网 时间:2024/04/27 21:16

上周四给陈老大和几个研究生汇报工作,主要讲了word2vec的应用,陈老大他们觉得这个东西很牛逼,汇报结束之后陈老大让我拿红楼梦来训练,看看这样能不能发现红楼梦中的人物关系,目前清华有个实验室试图用机器学习的方法为红楼梦中人物建立联系,不知道他们有没有试过word2vec。

关于word2vec不会用的请看这里:http://blog.csdn.net/zhaoxinfan/article/details/11069485

下面简单说下使用word2vec对红楼梦进行分析的步骤。

1、获取数据

首先是获取相关数据,这里包括红楼梦的全文以及红楼梦中的人物列表,全文用来训练,人物列表作为字典在分词的时候使用,人物可以从这里找到:http://zh.wikipedia.org/wiki/%E7%BA%A2%E6%A5%BC%E6%A2%A6%E4%BA%BA%E7%89%A9%E5%88%97%E8%A1%A8

我这里直接把字典文件贴上:

贾演贾寅贾源贾法贾代化贾代善贾代儒贾代修贾敷贾敬贾赦贾政贾敏贾敕贾效贾敦贾珍贾琏贾珠贾母贾宝玉宝玉贾环贾瑞贾璜贾琮贾珩贾㻞贾珖贾琛贾琼贾璘贾元春贾迎春贾探春贾惜春贾蓉贾兰贾蔷贾菌贾芸贾芹贾萍贾菖贾菱贾蓁贾藻贾蘅贾芬贾芳贾芝贾荇贾芷贾葛贾巧姐巧姐儿史太君史鼐史鼎史湘云王子腾王子胜王夫人王仁王熙凤凤姐凤辣子薛姨妈薛蟠薛蝌薛宝钗薛宝琴林黛玉林妹妹邢夫人尤氏李纨秦可卿贾蓉之妻胡氏许氏香菱妙玉赵姨娘刘姥姥甄宝玉袭人媚人晴雯绮霰麝月檀云秋纹碧浪茜雪春燕坠儿四儿佳蕙抱琴司棋待书入画彩屏翠墨蝉姐莲花儿绣橘紫鹃雪雁春纤缕儿鸳鸯琥珀珍珠玻璃翡翠靛儿卐儿莺儿文杏平儿小红丰儿金钏玉钏绣鸾绣凤彩云彩霞素云同喜同贵翠缕宝珠瑞珠姣杏小螺善姐臻儿篆儿傻大姐小吉祥小鹊银碟炒豆儿小舍儿宝蟾茗烟焙茗焦大李贵锄药墨雨伴鹤扫花引泉挑芸双瑞双寿来旺兴儿王荣钱启张若锦赵亦华钱槐小玄儿隆儿昭儿喜儿住儿寿儿杏奴庆儿王信芳官龄官蕊官藕官豆官宝官文官茄官菂官艾官玉官葵官顽石茫茫大士渺渺真人空空道人甄士隐封氏小童神瑛侍者绛珠仙子警幻仙子贾雨村严老爷霍启封肃冷子兴林如海李嬷嬷王嬷嬷门子李守中冯渊拐子痴梦仙姑引愁金女种情大士度恨菩提王成刘氏板儿青儿周瑞周瑞家的智能余信余信家的秦钟赖二詹光戴良钱华单聘仁吴新登秦业胡氏金氏冯唐张友士戴权张材家的牛清牛继宗柳彪柳芳陈翼陈瑞文马魁马尚侯晓明侯孝康石光珠蒋子宁谢鲸戚建辉裘良冯紫英陈也俊卫若兰水溶二丫头净虚智善胡老爷金哥李公子云光夏守忠赖大赵嬷嬷吴天佑吴贵妃卜固修山子野林之孝程日兴昭容彩缤花母花自芳多官多浑虫多姑娘王嫂子周氏卜世仁银姐倪二王短腿林之孝家的方椿马道婆周姨娘胡斯来鲍太医王济仁蒋玉菡云儿张道士周奶娘傅试傅秋芳宋嬷嬷茗玉王君效赖大的母鲍二家的金彩金文翔嫣红柳湘莲赖尚荣邢岫烟邢忠李婶娘李纹李绮梅翰林胡君荣良儿乌进孝娄氏女先儿单大良赵国基单大娘祝妈田妈叶妈许氏何婆子小鸠儿夏婆子柳家的柳妈柳五儿秦显家的佩凤偕鸾尤二姐尤三姐尤老娘张华俞禄秋桐天文生喜鸾四姐潘又安朱大娘周太监小霞翠云来喜家的王善保家的张妈邢德全文花圆信智通孙绍祖夏金桂夏奶奶王一贴

上面应该是红楼梦中的全部人物,不过其中有些人物有简称,例如“宝玉”,“黛玉”,“宝钗”等等,经过试验发现加入这些简称对于结果影响不大

2、分词

分词依然采用我最喜欢的ANSJ,不懂可以看这里:http://blog.csdn.net/zhaoxinfan/article/details/11069485


分词速度很快,分好后大约有49万词,只有3万个不同的词

3、word2vec训练

最后使用word2vec训练,速度也是很快,得到vectors.bin,然后就可以用./distance进行分析了,下面给出一些例子:








从上面的输出可以看到,结果大体上还是说得过去的,和“宝玉”联系最紧的莫过于”黛玉“了,”宝钗“和”宝玉“的关系原来都不如”袭人“,这和大多数读者的想法应该相吻合吧,不过这里出现的的”探春“倒是毫无头绪。

不过,这里得到的结果依然有缺陷之处,主要原因我觉得有下面几点

1、训练语料太少,红楼梦全文大小只有2M,训练效果不会特别好

2、分词时依然有错误,尤其是对一些人物缩写,例如 史湘云偶 宝钗笑 黛玉道 等都被分成了一个词

3、有些没用的词可以过滤,例如一些语气词等等


总的来说,算是完成了陈老大布置的任务,其实每个红楼梦读者心中都能建立起一张人物关系网,根本无须专家学者们去细细阐述。

0 0
原创粉丝点击