Python 统计词频

122 阅读1分钟

我在看英文书的时候,会先去统计一下词频,看看哪些是比较单词是出现比较多的。

另外就是,把出现最多的那一批单词优先搞懂的话,那么你再去阅读的时候,就会轻松很多了 —— 因为高频出现的单词你几乎已经全扫清了。

WX20231003-141614@2x.png

具体的 Python 代码如下:

import jieba
import nltk
import xlwt

# 读取 txt 文档
with open('a.txt', 'r', encoding='utf-8') as f:
    text = f.read()
    
# 排除掉不想要统计次数的单词
excludes = {"I","love","java"}

#去除特殊符号
def getText():
    # 读取文件,返回 txt
    txt = open("a.txt", "r", encoding='utf-8').read()   
    # 转为小写
    txt = txt.lower()      
    #将文本中特殊字符替换为空格
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt = txt.replace(ch, " ")   
    return txt


# 使用 jieba 库进行分词
words = jieba.lcut(getText())

# 去除单词长度在 7 个以下的,去除之前定义的,统计其他单词的数量
counts = {}
for word in words:
    if len(word) < 5:
        continue
    elif word in excludes:
        continue
    elif word.isdigit() == True:
        continue
    else:
        rword = word
    counts[rword] = counts.get(rword, 0) + 1
    
    
# 写入 Excel 文档
wb = xlwt.Workbook()
sheet = wb.add_sheet('词频统计')

# 写入表头
sheet.write(0, 0, '词')
sheet.write(0, 1, '频率')

# 写入数据
i = 1
for word, count in counts.items():
    sheet.write(i, 0, word)
    sheet.write(i, 1, count)
    i += 1

# 保存 Excel 文档
wb.save('word_counts.xls')