python实例:三国演义TXT文本词频分析

0x00 前言

找不到要写什么东西了!今天有个潭州大牛讲师  说了个  文本词频分析

我基本上就照抄了一遍

中间遇到一些小小的问题 自我百度 填坑补全了  如下 :

效果演示

0x01   准备环境及介绍

python3.x版本   随意

安装jieba库

pip install jieba

jieba三种模式:

  1.精准模式 lcut函数,返回一个分词列表

  2.全模式

  3.搜索引擎模式

词频:

  <单词>:<出现次数>的键值对

  IPO描述 imput output process

  输入 :从文件读取三国演义的内容

  处理 :采用jiedb进行分词,字典数据结构统计词语出现的频率

  输出 :文章中出现最对的前10个词

代码:

  第一步:读取文件

  第二步:分词

  第三步:统计

  第四步:排序

介绍完毕了!那么进入实战吧!

0x02 实战

完整代码如下:

 1 import jieba
 2
 3 content = open(‘三国演义.txt‘, ‘r‘,encoding=‘utf-8‘).read()
 4 words =jieba.lcut(content)#分词
 5 excludes={"将军","却说","二人","后主","上马","不知","天子","大叫","众将","不可","主公","蜀兵","只见","如何","商议","都督","一人","汉中","不敢","人马","陛下","魏兵","天下","今日","左右","东吴","于是","荆州","不能","如此","大喜","引兵","次日","军士","军马"}#排除的词汇
 6 words=jieba.lcut(content)
 7 counts={}
 8
 9 for word in words:
10     if len(word) == 1: # 排除单个字符的分词结果
11         continue
12     elif word == ‘孔明‘ or word == ‘孔明曰‘:
13        real_word = ‘孔明‘
14     elif word == ‘关公‘ or word == ‘云长‘:
15        real_word = ‘关羽‘
16     elif word == ‘孟德‘ or word == ‘丞相‘:
17        real_word = ‘曹操‘
18     elif word == ‘玄德‘ or word == ‘玄德曰‘:
19        real_word = ‘刘备‘
20     else:
21         real_word =word
22         counts[word] = counts.get(word, 0) + 1
23
24
25
26 for word in excludes:
27     del(counts[word])
28 items=list(counts.items())
29 items.sort(key=lambda x:x[1],reverse=True)
30 for i in range(10):
31     word,count=items[i]
32     print("{0:<10}{1:>5}".format(word,count))

0x03 注意事项

 ① 在执行的过程中遇到:‘gbk‘ codec can‘t decode byte 0x82 in position 20: illegal multibyte sequence           编码错误:content = open("C:\\Users\\geek\\Desktop\\python.txt", "r",encoding= ‘utf-8‘)

  这里是我下载的txt文件 《三国演义》是ASCII,怎么办呢!搜索过后得知,要正常运行就得把TXT的编码改为UTF-8的形式才能运行成功,怎么做呢!

  首先:打开TXT文本→文件→另存为→编码→UTF-8 →确定    完成第一个坑。  到这里呢!配合以上代码你成功了,但是我遇到的远远要多2个的所以我准备一并写出来。

 ②  坑②,这里呢!就是他在在线讲课啊 ,没有TXT三国演义文件怎办呢!没办法 自己找个三国演义文本  附上下载地址: http://vdisk.weibo.com/s/AfY-rVkr38Gg

  ③  下载好以后就可以就可以愉快的玩耍了,但是我要说但是了,要问我为什么?容我一一道来! 15个字组太多会出现什么呢!我截图

运行后会出现很多不相干的词汇,行,没办法只能清理 ,但是我清理大多数还是有 ,实在没办法了,本为了练手所用所以我降到10个词组,不错,那么想要完整的名字词组呢?就需要排除的词汇增多,所以这个玩法就到此结束。

0x04 谢幕

原文地址:https://www.cnblogs.com/A9kl/p/9311246.html

时间: 2024-11-07 00:20:35

python实例:三国演义TXT文本词频分析的相关文章

Python中读取txt文本出现:SyntaxError: (unicode error) &#39;unicodeescape&#39; codec can&#39;t decode bytes in position 2-3: truncated \UXXXXXXXX escape问题解决

windows中的路径是反斜杠\,然而反斜杠\在python中有着转义字符的意义,所以在py文件中写windows文件路径的时候,要特别注意反斜杠\的使用. 下面有三种解决方式: 1 # 方式一:转义的方式 2 'c:\\users\xxx\desktop\a.txt' 3 #方式二:显式声明字符串不用转义 4 r'c:\users\xxx\desktop\a.txt' 5 #方式三:使用linux的路径 6 'c:/users/xxx/desktop/a.txt' Python中读取txt文本

【NLP】Python实例:基于文本相似度对申报项目进行查重设计

Python实例:申报项目查重系统设计与实现 作者:白宁超 2017年5月18日17:51:37 摘要:关于查重系统很多人并不陌生,无论本科还是硕博毕业都不可避免涉及论文查重问题,这也对学术不正之风起到一定纠正作用.单位主要针对科技项目申报审核,传统的方式人力物力比较大,且伴随季度性的繁重工作,效率不高.基于此,单位觉得开发一款可以达到实用的智能查重系统.遍及网络文献,终未得到有价值的参考资料,这个也是自然.首先类似知网,paperpass这样的商业公司其毕业申报专利并进行保密,其他科研单位因发

关于ajax+jsp实现异步校验用户名是否存在的实例(.txt文本)

<html> <head> <title>用户注册</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <script language="javascript" type="text/javascript"> <!-- //定义用于存储XMLHttp

【转】用python实现简单的文本情感分析

import jieba import numpy as np # 打开词典文件,返回列表 def open_dict(Dict='hahah',path = r'/Users/zhangzhenghai/Downloads/Textming/'): path = path + '%s.txt' %Dict dictionary = open(path, 'r', encoding='utf-8') dict = [] for word in dictionary: word = word.st

Python逐行读取txt文本,按符合分割词并逐行写入txt

背景Background: 我的txt文件里面存放的是搜索词,由于原始的query(搜索词)都是用/或者.来分割词,而我要达到的是每个词语是单独的一行,并且写入txt 第一步:按行读取txt文件 s = [] f = open('querylist.txt','r') #由于我使用的pycharm已经设置完了路径,因此我直接写了文件名 for lines in f: # query_list.append(line.replace('/','').replace('.','').replace(

python实例:利用jieba库,分析统计金庸名著《倚天屠龙记》中人物名出现次数并排序

本实例主要用到python的jieba库 首先当然是安装pip install jieba 这里比较关键的是如下几个步骤: 加载文本,分析文本 txt=open("C:\\Users\\Beckham\\Desktop\\python\\倚天屠龙记.txt","r", encoding='utf-8').read() #打开倚天屠龙记文本 words=jieba.lcut(txt) #jieba库分析文本 对数据进行筛选和处理 for word in words:

python实例31[列出目录下所有的文件到txt]

代码: (使用os.listdir) import os def ListFilesToTxt(dir,file,wildcard,recursion):    exts = wildcard.split(" ")    files = os.listdir(dir)    for name in files:        fullname=os.path.join(dir,name)        if(os.path.isdir(fullname) & recursion

Python中将变量按行写入txt文本中

案例一: 讲数组a 循环写入名称为2.txt的文档中 # -*-coding:utf8-*- import requests from lxml import etree a=[1,2,3,4,5,6] print(a) for i in a: f = open('C:/Users/Beckham/Desktop/python/2.txt','a') f.write('\n'+str(i)) f.close() 脚本执行结果 脚本 f = open('C:/Users/Beckham/Deskt

专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例

使用Python处理txt汉字文字.二维列表排序和获取list下标 一. list二维数组排序 它和字符串不同之处在于:字符串只能由字符组成而且不可变的(不能单独改变它的某个值),而列表是能保留任意数目的Python对象灵活容器. 总之,列表可以包含不同类型的对象(包括用户自定义的对象)作为元素,列表可以添加或删除元素,也可以合并或拆分列表,包括insert.update.remove.sprt.reverse等操作. 列表排序介绍 [1]常用列表排序方法包括使用List内建函数list.sor