天天看点

vscode python jieba 词频统计

用到了几个库

import re # 正则表达式库

import collections # 词频统计库

import jieba # 结巴分词

用之前在命令行执行:pip install 库名称。现在包/库管理基本是一种通用的模式。Node.js的npm,VS里面的nuget,这个跟我们从苹果或安卓应用市场下载应用一样。应该市场面对最终用户,包管理面对程序员。比原来那种,在浏览器里面先搜,然后下载,再引入方便了不少。

npm和nuget通常是基于项目的,在每个项目文件夹下有对应的类似package.json文件管理包。pip是通常是全局的。有介绍用Anaconda的。提到全局和虚拟环境。具体后面再看吧

基本步骤是:

1、文本预处理:用正则把特殊符号去掉,如果不处理,可能逗号的词频非常高

2、文本分词:用jieba进行分词

3、去停用词:根据停用词库,停用词就是对我们没意义的词,比如:的。统计出100个“的”来,没啥意义

4、词频统计:用collections统计词频

代码如下:

import re # 正则表达式库
import collections # 词频统计库
# import numpy as np # numpy数据处理库
import jieba # 结巴分词

# import nltk
# nltk.download()
# from nltk.corpus import stopwords

def wordcloud(string_data):
    # 1、文本预处理
    pattern = re.compile(u'\t|\n|\.|\\|-|:|;|\)|\(|\?|"') # 定义正则表达式匹配模式
    string_data = re.sub(pattern, '', string_data) # 将符合模式的字符去除
    # 2、文本分词
    seg_list_exact = jieba.cut(string_data, cut_all = False) # 精确模式分词
    object_list = []
    remove_words = [u'的', u',',u'和', u'是', u'随着', u'对于', u'对',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',
                    u'通常',u'如果',u'我们',u'需要',u',',u'the',u'/'] # 自定义去除词库
    # remove_words.append(stopwords.words('english'))
    # 3、去停用词
    for word in seg_list_exact: # 循环读出每个分词
        if word not in remove_words: # 如果不在去除词库中
            object_list.append(word) # 分词追加到列表
    # 4、词频统计
    word_counts = collections.Counter(object_list) # 对分词做词频统计
    word_counts_top = word_counts.most_common(50) # 获取前10最高频的词
    return word_counts_top
           

执行后,把词频打印出来:

vscode python jieba 词频统计

 停用词我们可以直接使用已经存在的库,比如用nltk,网上还有维护好的中英文停用词2000来个

确实:用了不多的代码实现了功能。特别是这句代码:if word not in remove_words,简单粗暴。这么白话文呢。网上下载了一个16万字的英文小说,测了下,速度还挺快。打印了一下时间。从读取文件到计算出词频。用时6秒。算是超预期了

vscode python jieba 词频统计

后面python是可以根据词频生成词云图片的,我们项目前端使用vue,后端是java,爬虫和分析用到了python。所以统计出词频就可以了。前端用echarts来显示:参考:https://blog.csdn.net/leoppeng/article/details/119004137

python有web框架,可以完成java后端的工作。因为没用过,相对于java比较完善的技术栈如:spring这一套,也不好对比。像django这种框架。已非常完善了:mvc,orm,路由,表单,权限。能用到的基本都有。

接下来准备把词频统计功能作为WebAPI公开调用。用java发送post请求返回json格式的词频