言午

还在做数模的看这里:红楼梦词频统计工具

来西安已经有三天,一直被拖沓的学校速度和诡异的工商注册折腾的精疲力尽。好容易到五一,全西安都放假了,我索性给自己放一个假。看到学弟们正在弄数模,就拿来今年的题目看了看。数模我参加过一届,二等奖还是校级,说出来,有些丢人,2333。当时的题目,我还有些许印象,是图论里最短路径的一个应用。
原计划是把题目都做一遍,结果在西馆做了两小时,我爸就告诉我明天到西安视察工作,要我赶紧去收拾收拾。只能做个小工具给大家。

使用方法

在count.txt中写下需要统计词频的词语,然后运行【analyze.exe】或【analyze.py】,统计结果会保存在【result.csv】。

CSV文件可以用EXCEL等表单程序打开,第一列为统计词语,随后是该词语在第一回、第二回....第一百十二回出现频次。

其他文件

  1. hlm.txt, 红楼梦原文,请勿修改

  2. 红楼梦全文词频统计.csv  利用分词工具【jieba】,统计的分词词频  结果

  3. 红楼梦人物名单.txt 红楼梦出场人物

解题提示

  • 人物和人物的存在一对多的关系。例如【宝玉】、【贾宝玉】指同一人。
    统计人物出场次数的时候,需要合并。
    另外也可以根据对同一人物使用不同名字的偏好,证明作者的异同。

  • python的离线分词工具【jieba】等,对句子的切分不一定准确!!!!可能讲一个词切成两个或多个。所以用分词工具切分再统计,会存在误差。

  • 第三题,为词向量(Word2vec)的考察(我猜的)

  • 第四题,考察是否还有其他可用特征,第一二问利用词频,第三问用了词间关系,所以在第三问的基础上可以做句子情感分析、句子结构解析等等。

  • 个人比较推荐,以句子结构入手。主谓结构,主谓宾结构,可以根据文章对于句子结构使用的偏好作为统计指标。粗暴的做法就是把所有句子都进行句子结构拆解,然后进行统计,筛选出显著的几个。讨巧一点,就选择出现特定人物或者词语的句子,例如找出所有贾宝玉出现的句子,看看再前八十回和后八十回,他在句子中充当成分以及句子结构,是否在统计上存在不同。

代码解析

一共就两函数。一个讲原始文件切分成120个章节,另一个统计单个章节中,被统计词的频数。本来想做些算法上的优化,上个spark什么的,但是我发现直接用python的split,整个解析也不过几秒钟。所以大家凑合用着吧。

插播:广告时间

言午的公司,XX信息科技有限公司(不好意思,工商还没有给回复名字是否注册成功)招收暑假实习生啦~
有能做后端开发的童鞋,快用简历砸死我!!!
我们提供实习工作+住房补贴+无限量零食饮料+言午的淳淳教诲(叨叨逼逼),有没有很心动!!
地点就在西工大老校区!!!
微信联系:cplife(注明暑期实习)

领取方式

后台回复“五一数模”,即可收到下载链接。

参考资料

词向量:http://licstar.net/archives/328
词向量:https://zhuanlan.zhihu.com/p/26306795
用机器学习判定红楼梦后40回是否曹雪芹所写:https://zhuanlan.zhihu.com/p/21421723
NLP分词工具:https://github.com/fxsjy/jieba