python文本词频统计是什么_python 大批量文本分词 以及词频统计 (高效处理案例)...

环境:python3.6

库:jieba,xlwt,xlwings,collections

前两天有个需求要对一张表里的中文语句进行分词,并统计每个词语出现的次数。

表格1231.xlsx大致内容如下:

由于表格内容过大,约有100W条数据,普通读取表格的方式效率非常慢,所以这次用的方法是xlwings,

xlwings是目前看来操作excel最快速、做的比较完善的一个库,优化很好,调用方式非常灵活。对读取大表格的有很高的效率

以下是完整的代码:

import jieba

import xlwt, xlrd

import xlwings as xw

from collections import Counter

# 定义一个空列表

all_word_list = []

# 分词

def trans_CN(text):

# 接收分词的字符串

word_list = jieba.cut(text)

# 分词后在单独个体之间加上空格

result = " ".join(word_list)

# 转换成list

result = result.split(" ")

return result

# 判断词是否为中文

def is_Chinese(word):

for ch in word:

if '\u4e00' <= ch <= '\u9fff':

return True

return False

start_row = 2 # 处理Excel文件开始行

end_row = 1000000 # 处理Excel结束行

# 指定不显示地打开Excel,读取Excel文件

app = xw.App(visible=False, add_book=False)

wb = app.books.open(r"./1231.xlsx") # 打开Excel文件

sheet = wb.sheets[9] # 选择第0个表单

# 读取Excel表单前1000000行的数据,读取Excel表单前1000000行的数据

for row in range(start_row, end_row):

print(row)

row_str = str(row)

# 循环中引用Excel的sheet和range的对象,读取C列的每一行的值

content_text = sheet.range('C' + row_str).value

# print(content_text)

if not content_text:

continue

if not isinstance(content_text, str):

continue

# 长度小于4的语句 过滤

if len(content_text) > 3:

word_list = trans_CN(content_text)

print("分词后", word_list)

# 判断列表元素是否为中文,将非中文词移除

for s in word_list:

if not is_Chinese(s):

word_list.remove(s)

all_word_list += word_list

# 统计列表中元素出现的频率

counter = Counter(all_word_list)

print("统计频率完成")

# 将列表中的元素按照频率大小排序

result_list = sorted(counter.items(), key=lambda x: x[1], reverse=True)

# 将结果写入表格

print("开始写入表格")

myWorkbook = xlwt.Workbook()

mySheet = myWorkbook.add_sheet('Sheet1', cell_overwrite_ok=True)

rows = 0

for i in result_list:

mySheet.write(rows, 0, i[0])

mySheet.write(rows, 1, i[1])

rows += 1

myWorkbook.save('result.xls')

# 保存并关闭Excel文件

wb.save()

wb.close()

运行完成后,保存为result.xls,查看结果:

A列为分词,B列为该词出现的次数

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值