《2016年两会政府工作报告》词频统计实现

来源:互联网 发布:中国教育网络电视台 编辑:程序博客网 时间:2024/04/26 06:59

引言: 在不了解分词技术之前,甚至以为只有英文才可以分词,中文没有。后来接触发现,原来已经有很多基于统计的成熟的中文分词技术。在这些开源分词的”肩“上,想实现分词统计也就变得非常容易。
以下借助《2016年两会政府报告》为源文件,统计李克强总理的讲话词频。

1、输入:给定一篇不固定长度的.txt文本文件,文件内容不限于:短信记录、报告。
输出:1)、词、频率;2)、形成词云。(借助工具实现即可)

2、需要技术:
1)分词技术
本文选用:Friso分词开源技术。Friso是使用C语言开发的一款高性能中文分词器,使用流行的mmseg算法实现。
(以下两行摘自Friso官网)Friso是使用C语言开发的一款高性能中文分词器,使用流行的mmseg算法实现。
完全基于模块化设计和实现,可以很方便的植入到其他程序中,例如:MySQL,PHP等。同时支持对UTF-8/GBK编码的切分。

2)Shell脚本排序、统计

3、流程梳理
Step1:使用Friso开源代码实现读文件分词,源报告文件存入dict_test.txt中,并将结果输出到rst.txt结果文件。(源代码src中,没有该实现,需要自己实现)
Step2:Shell脚本统计分词结果,并将结果以”词 词频”的形式输出到统计文件divided_rst_all.txt。
Step3:对词进行人工干预特殊处理(如“单个字符 等、要 意义不大 可以去掉,不统计”),形成top20.txt最终结果文件。

4、源码
源码下载地址:https://github.com/laoyang360/word_divide/
1)分词实现
原有接口只提供了输入buffer逐行进行分词。现需要新增如下两个接口:

/***@param:[out]文件buffer,输出。**@param:lpszFilename:文件名**@brief:读取文件,写入buffer**@return:1,成功;其他代表失败。***/int ReadFile(char **FileStr,const char* lpszFilename)/***@param:pszRst:待写入文件;**@param:nRstLen:待写入长度。**@brief:分词结果写入文件**@return:空***/void writeFile(const char* pszRst, int nRstLen)

2)脚本实现

#!/bin/bashOUT_ALL_FILE=./divided_rst_all.txtOUT_TOP20_FILE=./top20.txt#清空处理echo /dev/null > $OUT_TOP20_FILEecho /dev/null > $OUT_TOP20_FILEprintf "WORDS\t COUNT\n" > $OUT_ALL_FILEcat rst.txt | awk '{ list[$1]++ } \END{for(i in list){printf("%s\t %d\n", i, list[i]); }}' | sort -nrk 2 | head -n 30 > $OUT_ALL_FILE#wordlen=system("echo $i | wc -L")# if (($wordlen -gt 4))# thencat $OUT_ALL_FILE | while read linedo#echo $line;left=`echo $line | awk '{print $1}'`leftlen=`echo $left | wc -L`if [ $leftlen -gt 2 ];thenecho $line >> $OUT_TOP20_FILEfidone#最终输出结果cat $OUT_TOP20_FILE | sort -nrk 2 | head -n 20 > $OUT_TOP20_FILE

5、统计结果
这里写图片描述
这里写图片描述
“`

6、小结
1)可以用作各种类型的文件的词频统计,如:短信、邮件信息等。
2)若想精确的分词,需要用最新的词库。
3)可以借助“词云”友好界面展示结果。

附:
1、Friso下载地址:
http://git.oschina.net/lionsoul/friso/attach_files
http://www.oschina.net/p/friso
2、常见分词技术分类:
http://witmax.cn/4-open-source-cws.html
3、全面分词技术介绍:
http://www.scholat.com/vpost.html?pid=22647
4、最大匹配中文分词算法
http://blog.csdn.net/deit_aaron/article/details/7554632

作者:铭毅天下
转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51203755
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

1 0
原创粉丝点击