• 大小: 12KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-07-11
  • 语言: Python
  • 标签: python  词频  词云  

资源简介

代码的详解在我的博客中有所介绍,或者也可以看我的知乎文章:https://zhuanlan.zhihu.com/p/103080917。
这个是.py文件,可以直接进行调试。我是在python3.7版本下进行调试的,不同版本的python语法可能会略有不同。调试前需要安装一些库,在.py文件的开头有所说明。调试的一些所需文件、部分说明,可以在这个链接中进行下载:https://pan.baidu.com/s/19oFMA0Aa2kAJRJMM8ZO6Vg;提取码:lf38。
有疑问可以评论说哈~

资源截图

代码片段和文件信息

‘‘‘
运行前:
1.将 分析文档、用户词典、停用词库、词频背景 放在这一程序的同一目录下,并更改相应变量名称。
其中,分析文档为必须项,其余功能用户可根据个人需求进行选用(不用的话可以注释掉)
2.先通过cmd安装相关库(部分可能已系统内置),格式如:
pip install re
pip install jieba
pip install collections
pip install numpy
pip install PIL
pip install wordcloud
pip install matplotlib.pyplot
(当然也可以用其他方式安装啦,这里只是举个例子)
‘‘‘



# 提示当前状态
print(‘正在处理,请稍等…… :D\n‘)


# 主要功能自定义设置
Analysis_text = ‘分析文档.txt‘        # 分析文档
userdict = ‘用户词典.txt‘             # 用户词典
StopWords = ‘停用词库.txt‘            # 停用词库
number = 100                          # 统计个数
Output = ‘词频.txt‘                   # 输出文件
background = ‘词频背景.jpg‘           # 词频背景


# 导入扩展库
import re                           # 正则表达式库
import jieba                        # 结巴分词
import jieba.posseg                 # 词性获取
import collections                  # 词频统计库
import numpy                        # numpy数据处理库
from PIL import Image               # 图像处理库
import wordcloud                    # 词云展示库
import matplotlib.pyplot as plt     # 图像展示库(这里以plt代表库的全称)


# 读取文件
fn = open(Analysis_text‘r‘encoding = ‘UTF-8‘)  # 打开文件
string_data = fn.read()                          # 读出整个文件
fn.close()                                       # 关闭文件


# 文本预处理
pattern = re.compile(u‘\t|\n|\.|-|:|;|\)|\(|\?|“‘) # 定义正则表达式匹配模式(空格等)
string_data = re.sub(pattern ‘‘ string_data)     # 将符合模式的字符去除


# 动态调整词典
jieba.suggest_freq(‘小小花‘ True)     #True表示该词不能被分割,False表示该词能被分割


# 添加用户词典
jieba.load_userdict(userdict)


# 文本分词
seg_list_exact = jieba.cut(string_data cut_all=False HMM=True)    # 精确模式分词+HMM
object_list = []


# 去除停用词(去掉一些意义不大的词,如标点符号、嗯、啊等)
with open(StopWords ‘r‘ encoding=‘UTF-8‘) as meaninglessFile:
    stopwords = set(meaninglessFile.read().split(‘\n‘))
stopwords.add(‘ ‘)
for word in seg_list_exact:         # 循环读出每个分词
    if word not in stopwords:       # 如果不在去除词库中
        object_list.append(word)    # 分词追加到列表


# 词频统计
word_counts = collections.Counter(object_list)       # 对分词做词频统计
word_counts_top = word_counts.most_common(number)    # 获取前number个最高频的词


# 英文词性转中文词性字典:简洁版
En2Cn = {
    ‘a‘    : ‘形容词‘
    ‘ad‘   : ‘形容词‘
    ‘ag‘   : ‘形容词‘
    ‘al‘   : ‘形容词‘
    ‘an‘   : ‘形容词‘
    ‘b‘    : ‘区别词‘
    ‘bl‘   : ‘区别词‘
    ‘c‘    : ‘连词‘
    ‘cc‘   : ‘连词‘
    ‘d‘    : ‘副词‘
    ‘e‘    : ‘叹词‘
    ‘eng‘  : ‘英文‘
    ‘f‘    : ‘方位词‘
    ‘g‘    : ‘语素‘
    ‘h‘    : ‘前缀‘
    ‘i‘    : ‘成语‘
    ‘j‘    : ‘简称略语‘
    ‘k‘    : ‘后缀‘
    ‘l‘    : ‘习用语‘
    ‘m‘    : ‘数词‘
    ‘mq‘   : ‘数量词‘
    ‘n‘    : ‘名词‘
    ‘ng‘   : ‘名词‘
    ‘nl‘   : ‘名词‘
    ‘nr‘   : ‘名词‘
    ‘nr1‘  : ‘名词‘
    ‘nr2‘  : ‘名词‘
    ‘nrf‘  : ‘名词‘
    ‘nrfg‘ : ‘名词‘    
    ‘nrj‘  : ‘名词‘
    ‘ns‘   : ‘名词‘
    ‘nsf‘  : ‘名词‘
    ‘nt‘   : ‘名词‘
    ‘nz‘   : ‘名词‘
    ‘o‘    : ‘拟声词‘
    ‘p‘    : ‘介词‘
    ‘pba‘  : ‘介词‘
    ‘pbei‘ : ‘介词‘
    ‘q‘    : ‘量词‘
    ‘qt‘   : ‘量词‘
    ‘qv‘   : ‘量词‘
    ‘r‘    : ‘代词‘
    ‘rg‘   : ‘代词‘
    ‘rr‘   : ‘代词‘
    ‘

评论

共有 条评论