第一次任务词频统计边界:
边界内的:
- 根据指定文档路径按行读取文本文件。
- 对每行进行基本处理,并按空格分词并统计词频。
- 对结果排序并显示矩形图和曲线图。
边界外的:
- 处理多篇文档。
- 结果图的保存。
修改后词频统计边界:
边界内的:
- 根据指定文档路径按行读取文本文件,支持分别对多篇文档的词频统计。
- 对每行进行基本处理,并按空格分词并统计词频。
- 根据档统计的多篇文词频得出在多篇文档中经常出现的词并做展示。
边界外的:
- 结果图的保存
本周在上一周实现对单篇文档进行词频统计的基础上进行了改进,老师提出了常用词是通过什么样的量化指标来决定的这个问题。我思考过后决定使用以下的标准来衡量一个词是否为常用词:
其实这是将计算词tf-idf的方法稍作了一下修改,我们知道使用tf-idf加权的动机就是使一篇文档中重要的词被保留,并将文档集中常用的词过滤掉。在tf-idf计算中,相对词频代表了词在这篇文档中的重要程度,而词的反向文档频率则衡量了词是不是在每篇文档中都出现,把两者相乘就得到了最简单的tf-idf加权公式。
而我们现在需要的是统计整个文档集中的常用词,什么是常用词?从直观上可以这样考虑:
1.在一篇文档中经常出现的词是这篇文档的常用词(对应相对词频)
2.在多篇文档中都出现的词也许是常用词(对应相对词频)
基于以上两点考虑,把tf-idf公式改一下就得出了上图最后的公式,通过该公式为文档集中所有的词计算一个代表常用程度权重,然后根据这个权重排序来得到文档集的常用词。
程序流程大概分为以下几步:
- 读入文档集,词频统计。
- 根据各文档词频统计结果计算每个词的权重。
- 对所有词按权重从大到小排序,取前100个画图展示。
我对作图所示的几部小说进行了处理,结果如右图所示,不出所料the,of,a一类的词还是占据了榜首,这也反应了一些常用词对我们理解文档意思的帮助并不会很大,往往是那些特殊的词可能更能体现文档的意思。
代码已经上传到https://github.com/pppppY/Work。
最后附上工作量表
代码行数 | 博客字数 | 知识点 | |
第一周 | 51 | git使用,matplotlib.pyplot库的使用,python基础数据结构 | |
第二周 | 42 | 2148 | 改进词频统计,对比了三种框架 |
psp表: