Python中⽂分词及词频统计# 导⼊扩展库
import re                          # 正则表达式库
import jieba                        # 结巴分词
import jieba.posseg                # 词性获取
import collections                  # 词频统计库
import numpy                        # numpy数据处理库
from PIL import Image              # 图像处理库
import wordcloud                    # 词云展⽰库
import matplotlib.pyplot as plt    # 图像展⽰库(这⾥以plt代表库的全称)
import utils
# 主要功能⾃定义设置
userdict = '⽤户词典.txt'# ⽤户词典
StopWords = './'# 停⽤词库
number = 10000                          # 统计个数
background = './a.png'# 词频背景
def test():
# 读取⽂件
fn = open(Analysis_text, 'r', encoding='UTF-8')  # 打开⽂件
string_data = fn.read()  # 读出整个⽂件
fn.close()
# ⽂本预处理
pattern = repile(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 = []
# 去除停⽤词(去掉⼀些意义不⼤的词,如标点符号、嗯、啊等)
python 正则表达式 空格with open(StopWords, 'r', encoding='UTF-8') as meaninglessFile:
stopwords = ad().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 = st_common(number)  # 获取前number个最⾼频的词
# 输出⾄⼯作台,并导出“词频.txt”⽂件
# print('\n词语\t词频\t词性')
# print('——————————')
# fileOut = open(Output, 'w', encoding='UTF-8')  # 创建⽂本⽂件;若已存在,则进⾏覆盖
# fileOut.write('词语\t词频\t词性\n')
# fileOut.write('——————————\n')
return word_counts_top
if__name__ == '__main__':
list = ['x_train']
# list = ['lvyou','tiyu','jiaoyu','shishang','keji','caijing','yule','lishi','chongwu','jiankang']
for v in list:
Analysis_text = './xinwen/'+v+'.txt'# 分析⽂档
Output = './cipin/'+v+'.txt'# 输出⽂件
word_counts_top = test()
for TopWord, Frequency in word_counts_top:  # 获取词语和词频
print(TopWord + '\t', str(Frequency) + '\t',v)  # 逐⾏输出数据
print(type(Frequency))
# fileOut.write(TopWord + '\t' + str(Frequency) + '\t' + '\n')  # 逐⾏写⼊str格式数据
utils.insert(TopWord,Frequency,v)
# fileOut.close()  # 关闭⽂件
这个是根据我的需求写的循环⼗个⽂本并存⼊数据库的分词,统计了⼀万个词频