文本词频统计

本例是数组、字典、列表、jieba(第三方库)的综合应用,我们将对三国演义中出现次数前十的任务进行排名并统计出出现的次数。

程序1:

#CalThreeKingdomsV1.py
import jieba
txt = open("threekingdoms.txt", "r", encoding="utf-8").read()
words = jieba.lcut(txt) #利用jieba函数进行分词并返回列表类型
counts = {} #创建一个字典存储信息
for word in words:
  if len(word) == 1:
    continue
  else:
    counts[word] = counts.get(word,0) + 1
items = list(counts.items()) #强制列表转换(列表中以元组对的形式存放)
items.sort(key=lambda x:x[1], reverse=True) #排序,从大到小
for i in range(15):
  word, count = items[i]
  print("{0:<10}{1:>5}".format(word, count))

运行结果:

可以看出这个程序只是满足的要求,并未达到理想的效果,即结果中存在不是人名的词,对此我们要做出适当修改,修改后程序如下:

源程序2:

import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此","如何","商议","军士","左右","引兵","军马","次日","大喜","天下","东吴","于是","今日","不散","魏兵","不敢","陛下","一人"}
txt = open("threekingdoms.txt", "r", encoding=‘utf-8‘).read()
words = jieba.lcut(txt)
counts = {}
for word in words:
  if len(word) == 1:
    continue
  elif word == "诸葛亮" or word == "孔明曰":
    rword = "孔明"
  elif word == "关公" or word == "云长":
    rword = "关羽"
  elif word == "玄德" or word == "玄德曰" :
    rword = "刘备"
  elif word == "孟德" or word == "丞相":
    rword = "曹操"
  elif word == "都督" :
    rword = "周瑜"
  else:
    rword = word
counts[rword] = counts.get(rword,0) + 1 #将整理后的列表元素存入到字典中
for word in excludes:
  del counts[word]#删除不合理的非人名元素
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
  word, count = items[i]
  print ("{0:<10}{1:>5}".format(word, count))

注意,这里excludes里面的元素是我们在运行中逐步添加的,直至达到我们理想中的要求。(本例中为前十位,可结合实际问题修改)

这个例子讲解的是三国演义的词频统计,我们还可以进行其他的应用,比如自己喜欢的文学作品或者小说,总之是一件很好玩的事情!

版权声明:



本文中所有文字、图片版权均属本人所有,如需转载请注明来源。

原文地址:https://www.cnblogs.com/yufanxin/p/9134824.html

时间: 2024-10-10 08:17:24

文本词频统计的相关文章

perl 大文本词频统计.

思想是设置子文本最大长度,然后分割成多个子文本, 最后合并. 词频则是当前位置字和前一位置的字的组合  进入hash. 代码如下 use Encode; ##编码解码 system("time /t"); ##开始时间 $g_MaxBiNum=1000000; ##最大文本长度 BiCount("train.txt"); MergeBi(\@BiTmp,"bi.txt"); foreach (@BiTmp){ unlink($_); } syst

java实现文本词频统计

File f=new File(path); Map<String,Integer>map=new HashMap<>(); Version matchVersion = Version.LUCENE_31; Analyzer analyzer = new StopAnalyzer(matchVersion); BufferedReader br = new BufferedReader(new FileReader(f));//读取文件 TokenStream ts = anal

python学习 第十一个程序 汉语文本词频统计

# CalThreeKingdoms.pyimport jieba '''安装第三方库 中文分词jieba pip install jieba统计三国演义中出现次数最多的人''' txt = open("threekingdoms.txt", "rt", encoding="utf-8").read()# 排除出现频率较高的非人名exclude = ["却说", "二人", "不可",

201671010441徐浩杰 词频统计软件项目报告

实验二.软件工程个人项目 一.需求分析 尝试按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发.软件基本功能要求如下: •程序可读入任意英文文本文件,该文件中英文词数大于等于1个. •程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. •指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. •高频词统计功能:用户从键盘输入高

201671010431+词频统计软件项目报告

一.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发.软件基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行

201671010416 焦少梅 实验二 词频统计项目

实验二 软件工程个人项目 实验目的与要求 掌握软件项目开发流程 掌握Github上发布软件项目的操作方法. 实验内容和步骤 任务1: 需求分析: 尝试按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发 程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词运行程序的统计功能可显

201671030119 词频统计软件项目报告

项目名称:词频统计软件 源码 需求分析 - 使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发 - 软件基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中

201671010402 词频统计软件项目报告

需求分析 可以使用Java编程语言,独立完成一个英文文本词频统计的软件开发. 程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 测试环境 此次项目的测试机为Windows环境. 使用的JDK版本为 jdk8u161. 使用的JRE版本为jre8u161. 基本功能需求 用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数. 统计该文本所有单词数量及词频数,并能将

利用word分词来对文本进行词频统计

word分词中的 org.apdplat.word.WordFrequencyStatistics 类提供了词频统计的功能 命令行脚本的调用方法如下: 将需要统计词频的文本写入文件:text.txt chmod +x wfs.sh & wfs.sh -textFile=text.txt -statisticsResultFile=statistics-result.txt 程序运行结束后打开文件statistics-result.txt查看词频统计结果 在程序中的调用方法如下: //词频统计设置