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() # 关闭⽂件
这个是根据我的需求写的循环⼗个⽂本并存⼊数据库的分词,统计了⼀万个词频
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论