机器学习,如何利用CountVectorizer来做词频统计?
发布于 作者:苏南大叔 来源:程序如此灵动~

在python
代码中,如何做词频统计呢?如果做的是中文词频统计呢?有哪些地方需要做设置?本文中利用python
的CountVectorizer
来做词频统计,可以统计英文(以空格分割),也可以统计中文(用逗号分割)。

你现在的看的是苏南大叔的博客,这个博客记录计算机代码的故事。本文描述如何利用CountVectorizer
来做中文词频统计。测试环境:win10
,python@3.6.8
,sklearn@0.24.2
。
安装sklearn
词频统计功能CountVectorizer
来自于sklearn
。安装sklearn
的方式是:
最新的版本号是sklearn@0.24.2
。可以用下面的代码来获得版本号:
测试代码
输出内容:

准备文档
这个词频统计的过程,可以对一条条文档进行词语统计。所以,在进行词频统计之前,需要对要分析的文档,进行整理。
texts
就是分词过的文档组合,分词的标准可以是空格,或者中英文标点符号等。- 如果这条文档是使用空格进行分割的话,则不用特殊处理。但是对于中文这类不使用空格分割的语言来说的话,就需要先使用结巴分词类似的工具进行分词处理。
结巴分词的使用,可以参考下面的链接:
停用词
CountVectorizer
可以传入很多参数,其中最重要的是:可以传入停用词参数stop_words
,格式是个list
。这个list
内的单词,在统计的时候,会被忽略掉,不进行统计。
值的特别说明的是,在使用结巴分词的时候,官方没有stop_words
参数。如果要设置停用词的话,是自定义代码,循环剔除相关词语的。所以,如果使用了结巴分词,又使用了CountVectorizer
做词频统计的话。可能面临着停用词两次过滤的可能性。
如果自己没有啥想法,又要设置停用词的话,github
上面有些停用词模版。比如下面的这个:
可以通过下面的代码,读取到相关的停用词:
进行分词【核心】
分词的过程,可以使用方法fit_transform()
。
也可以分开写代码:
执行这些分词后,就可以获得一些后续的变量了。
获得停用词
获得停用词,代码如下:
不过,好像是也米有啥用的函数。
获得字词表【重要】
这个就是获得被统计的字词,测试代码:
文档中所有被分词的词儿,经过停用词的过滤,剩下的词儿。
- 编辑成字典属性
vocabulary_
。这个字典变量看起来有些奇怪,编号在value位置,词儿在key的位置,而且顺序是打乱的。 - 如果想获得顺序正常的列表的话,可以使用
get_feature_names()
函数。
词频统计结果
分词结果的格式是:
===============================================================
这个结果的格式是:
===============================================================
这个的结果,其实就是cv_fit.toarray()
在x
轴方向的投影之和。格式是:
相关文档
- https://newsn.net/say/python-def.html
- https://newsn.net/say/python-dir.html
- https://newsn.net/say/python-set-diff.html
- https://newsn.net/say/jieba-cut.html
- https://newsn.net/say/jieba-lcut.html
综述
本文中,主要讲述如何利用CountVectorizer
来做词频统计。主要是对中文进行分析的时候,需要提取对文档进行分词处理。分好词之后,然后根据需要设置停用词。


