Python 3.6 利用NLTK 统计多个文本中的词频

#!/usr/bin/env python
# encoding: utf-8

"""
@author: wg
@software: PyCharm
@file: word_frequency_statistics.py
@time: 2017/3/16 0016 10:46
"""

import os
import nltk

'''
利用NLTK 统计多个文本中的词频
'''

dirs = os.listdir('../../data/大秦帝国/') # 获取根目录
dictionary = {} # 空词典,用于保存最终的词频
stopwords = ['、','(',')',',','。',':','“','”','\n\u3000','\u3000','的','‘','’'] # 停用词

'''
def process():
    for d in dirs: #遍历根目录下的文件夹
        subdir = os.listdir('../../data/大秦帝国/')
        for f in subdir: # 遍历文件夹下的文件
            text = open('', 'r', encoding='utf-8').read() # 读取文本内容
            print('D:/sogouOutput/'+d+'/'+f)
            fredist = nltk.FreqDist(text.split(' ')) # 获取单文件词频

            for localkey in fredist.keys(): # 所有词频合并。 如果存在词频相加,否则添加
                if localkey in stopwords: # 检查是否为停用词
                    print('-->停用词:', localkey)
                    continue
                if localkey in dictionary.keys(): # 检查当前词频是否在字典中存在
                    dictionary[localkey] = dictionary[localkey] + fredist[localkey] # 如果存在,将词频累加,并更新字典值
                    print('--> 重复值:', localkey, dictionary[localkey])
                else: # 如果字典中不存在
                    dictionary[localkey] = fredist[localkey] # 将当前词频添加到字典中
                    print('--> 新增值:', localkey, dictionary[localkey])
        print('===================================================')
    print(sorted(dictionary.items(), key = lambda  x:x[1])) # 根据词频字典值排序,并打印
'''

def process():
    subdir = os.listdir('../../data/wordcloud/')
    for f in subdir: # 遍历文件夹下的文件
        text = open('../../data/wordcloud/'+f, 'r', encoding='utf-8').read() # 读取文本内容
        print('../../data/wordcloud/'+f)
        fredist = nltk.FreqDist(text.split(' ')) # 获取单文件词频

        for localkey in fredist.keys(): # 所有词频合并。 如果存在词频相加,否则添加
            if localkey in stopwords: # 检查是否为停用词
                print('-->停用词:', localkey)
                continue
            if localkey in dictionary.keys(): # 检查当前词频是否在字典中存在
                dictionary[localkey] = dictionary[localkey] + fredist[localkey] # 如果存在,将词频累加,并更新字典值
                print('--> 重复值:', localkey, dictionary[localkey])
            else: # 如果字典中不存在
                dictionary[localkey] = fredist[localkey] # 将当前词频添加到字典中
                print('--> 新增值:', localkey, dictionary[localkey])
    print('===================================================')
    print(sorted(dictionary.items(), key = lambda  x:x[1])) # 根据词频字典值排序,并打印

if __name__ == '__main__':
    process()
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值