词频统计是自然语言处理的基本任务,针对一段句子、一篇文章或一组文章,统计文章中每个单词出现的次数,在此基础上发现文章的主题词、热词。

1. 单句的词频统计

思路:首先定义一个空字典my_dict,然后遍历文章(或句子),针对每个单词判断是否在字典my_dictkey中,不存在就将该单词当作my_dictkey,并设置对应的value值为1;若已存在,则将对应的value值+1。

#统计单句中每个单词出现的次数
news = "Xi, also general secretary of the Communist Party of China (CPC) Central Committee and chairman of the Central Military Commission, made the remarks while attending a voluntary tree-planting activity in the Chinese capital's southern district of Daxing."
def couWord(news_list): ##定义计数函数  输入:句子的单词列表 输出:单词-次数 的字典my_dict = {}  #空字典 来保存单词出现的次数for v in news_list:if my_dict.get(v):my_dict[v] += 1else:my_dict[v] = 1return my_dict
print(couWord(news.split ()))

输出

{‘Xi,’: 1, ‘also’: 1, ‘general’: 1, ‘secretary’: 1, ‘of’: 4, ‘the’: 4, ‘Communist’: 1, ‘Party’: 1, ‘China’: 1, ‘(CPC)’: 1, ‘Central’: 2, ‘Committee’: 1, ‘and’: 1, ‘chairman’: 1, ‘Military’: 1, ‘Commission,’: 1, ‘made’: 1, ‘remarks’: 1, ‘while’: 1, ‘attending’: 1, ‘a’: 1, ‘voluntary’: 1, ‘tree-planting’: 1, ‘activity’: 1, ‘in’: 1, ‘Chinese’: 1, “capital’s”: 1, ‘southern’: 1, ‘district’: 1, ‘Daxing.’: 1}

以上通过couWord方法实现了词频的统计,但是存在以下两个问题。

(1)未去除stopword

输出结果中保护’also’、‘and’、'in’等stopword(停止词),停止词语与文章主题关系不大,需要在词频统计等各类处理中将其过滤掉。

(2)未根据出现次数进行排序

根据每个单词出现次数进行排序后,可以直观而有效的发现文章主题词或热词。

改进后的couWord函数如下:

def couWord(news_list,word_list,N):#输入 文章单词的列表 停止词列表  输出:Top N的单词my_dict = {}  #空字典 来保存单词出现的次数for v in news_list:if (v not in word_list): # 判断是否在停止词列表中if my_dict.get(v):my_dict[v] += 1else:my_dict[v] = 1topWord = sorted(zip(my_dict.values(),my_dict.keys()),reverse=True)[:N] return topWord

加载英文停止词列表:

stopPath = r'Data/stopword.txt'
with open(stopPath,encoding = 'utf-8') as file:word_list = file.read().split()      #通过read()返回一个字符串函数,再将其转换成列表
print(couWord(news.split(),word_list,5))

输出

[(2, ‘Central’), (1, ‘voluntary’), (1, ‘tree-planting’), (1, ‘southern’), (1, ‘secretary’)]

2. 文章的词频统计

(1)单篇文章词频统计

通过定义读取文章的函数,对其进行大小写转换等处理,形成输入文章的单词列表。

def readFile(filePath): #输入: 文件路径  输出:字符串列表with open(filePath,encoding = 'utf-8') as file:txt = file.read().lower() #返回一个字符串,都是小写myTxt = txt.split()      #转换成列表 return myTxt
filePath = r'Data/news/1.txt'
new_list = readFile(filePath)  #读取文件
print(couWord(new_list,word_list,5))

输出

[(17, ‘rights’), (14, ‘human’), (8, ‘united’), (7, ‘china’), (6, ‘resolution’)]

(2)多篇文章词频统计

需要使用os.listdir方法读取文件夹下的文件列表,然后对文件逐一进行处理。

import os
folderPath = r'Data/news' #文件夹路径
tmpFile = os.listdir(folderPath)
allNews = []
for file in tmpFile:  #读取文件newsfile = folderPath + '//' + file #拼接完整的文件路径  \\ 转义字符allNews += readFile(newsfile)   #把所有的字符串列表拼接到allText中print(couWord(allNews,word_list,5))

输出

[(465, ‘china’), (323, ‘chinese’), (227, ‘xi’), (196, “china’s”), (134, ‘global’)]

(3)中文文章的处理

对于中文文章的词频统计,首先要使用jieba等分词器对文章进行分词,并且加载中文的停止词列表,再进行词频统计。

Python实现词频统计相关推荐

  1. python 英语词频统计软件_Python数据挖掘——文本分析

    作者 | zhouyue65 来源 | 君泉计量 文本挖掘:从大量文本数据中抽取出有价值的知识,并且利用这些知识重新组织信息的过程. 一.语料库(Corpus) 语料库是我们要分析的所有文档的集合. ...

  2. Python英文词频统计(哈姆雷特)程序示例

    今天继续给大家介绍Python相关知识,本文主要内容是Python英文词频统计程序示例,主要是对英文文本--<哈姆雷特>进行分词. 一.英文文本词频统计思路 想要对<哈姆雷特> ...

  3. python英文词频统计代码_python实现中文和英文的词频统计功能方法汇总

    python的思维就是让我们用尽可能少的代码来解决问题.对于词频的统计,就代码层面而言,实现的方式也是有很多种的.之所以单独谈到统计词频这个问题,是因为它在统计和数据挖掘方面经常会用到,尤其是处理分类 ...

  4. python特定词频统计_词频统计方案与具体实现-elasticsearch、spark、python

    方案一.基于ElasticSearch方式 方案二.基于Spark方式 方案三.基于Python方式 方案一.基于ElasticSearch方式 详见文章,里面列举了各种ElasticSearch的实 ...

  5. Python数据挖掘-词频统计-实现

    词频:某个词在该文档中出现的内容 1.语料库搭建 import jieba jieba.load_userdict("D:\\Python\\Python数据挖掘\\Python数据挖掘实战 ...

  6. Python实现词频统计的两种方法

    词频统计是指在文本中计算每个单词出现的次数,是文本处理中一个最基本的任务.在Python中,可以使用多种方法实现词频统计,包括使用字典.列表.Counter类等数据结构. 一.使用字典 其中,使用字典 ...

  7. python 小说词频统计_Python中文分词及词频统计

    中文分词 中文分词(Chinese Word Segmentation),将中文语句切割成单独的词组.英文使用空格来分开每个单词的,而中文单独一个汉字跟词有时候完全不是同个含义,因此,中文分词相比英文 ...

  8. 【文本处理 词频统计】python 实现词频统计

    自定义词频统计函数:wordcount # -*- encoding=utf-8 -*-import string import pandas as pdword_list=[] freq_list= ...

  9. python进行词频统计_如何利用Python进行文本词频统计

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 问题描述 Python在自然语言处理这个方面,有其天然的优势: ...

  10. Python新闻联播词频统计

    http://www.judymax.com/archives/1033 在本文中,我们将编写这样一个 Python 程序:从网络上抓取前一日<新闻联播>的文本稿,利用分词技术将它们拆散成 ...

最新文章

  1. java basicstroke_使用java.awt.BasicStroke动画化虚线
  2. 4G EPS 中建立 UE 和 MME 之间的 NAS(非接入服务)信令连接
  3. mysql定义外键_MySQL定义外键的方法
  4. 数字加字符串用,隔开
  5. Java中switch语句支持的类型
  6. mysql练习_创建库与列表、增加列表信息、列表查询(包含多列表查询)_月隐学python第23课
  7. 三角形一点到三边距离最小_初中数学:相似三角形以及重心、向量问题考点整理...
  8. Python利用matplotlib.animation和matplotlib.pyplot和ffmpeg录制动画并保存为MP4文件
  9. python并行for循环_Python并行执行for循环
  10. python画子图_Python使用add_subplot与subplot画子图操作示例
  11. php分解字符串_php怎么把字符串分解成字符
  12. teechart绘制实时曲线_关于PIII曲线
  13. 【实践】阿里妈妈流量反作弊算法实践
  14. 三菱伺服调试软件_【精品】三菱MR-J4系列伺服驱动器一键自整定操作流程
  15. ubuntu修改静态IP地址
  16. upc 6605 所罗门王的宝藏
  17. 这3个方法帮你终结拖延症,过轻快人生
  18. 【电源设计】11变压器在开关电源中的应用
  19. Failed to load module “canberra-gtk-module“
  20. 存储和虚拟化服务器的对接,储存虚拟化

热门文章

  1. Isolated and Exhausted:Attacking Operating Systems via Site Isolation in the Browser论文阅读笔记
  2. 一文讲透数据治理体系
  3. 结构体 计算平均成绩
  4. 一个IT从业者的课外读物
  5. php 正则匹配11位数字,php正则匹配数字
  6. 网购新条例是“打假”还是“打压”?
  7. java循环读取ftp服务器上面的文件
  8. less函数库(function)
  9. 分析一下西游记世界的地图
  10. html5 flask json文件读取,python – 使用d3和flask访问json文件很困难