第七天

文本词频统计实例

一 ”文本词频统计“问题分析

  • 文本去噪及归一化
  • 使用字典表达词频
f = open(r'C:\Users\XM\Desktop\typore快捷键.txt','r',encoding='utf8')
data = f.read().lower()
data_split = data.split(' ')

count_dict = {}
for word in data_split:
    if word not in count_dict:
        count_dict[word] = 1
    else:
        count_dict[word] += 1

def func(i):
    return i[1]

lt = list(count_dict.items())
lt.sort(key=func)

lt.reverse()

for i in lt[0:10]:
    print(f'{i[0]:^7}{i[1]^5}')
  • 运行结果由大到小排序
  • 观察单词出现次数

三、"《三国演义》人物出场统计"实例讲解

  • 中文文本分词
  • 使用字典表达词频
import  jieba
f = open(r'C:\Users\XM\PycharmProjects\untitled\新建文本文档.txt','r',encoding='utf-8')
data = f.read()
data_jieba = jieba.lcut(data)

count_dict ={}
for i in data_jieba:
    if len(i)==1:
        continue
    if i in {"将军", "却说", "荆州", "二人", "不可", "不能", "如此","丞相","商议","主公","军士","如何","左右"}:
       continue
    if '曰' in i :
        i = i.replace('曰','')
    if i not in count_dict:
        count_dict[i]=1
    else:
        count_dict[i]+= 1

ls = list(count_dict.items())
def func(i):
    return i[1]

ls.sort(key=func)
ls.reverse()
for i in ls[:10]:
    print(f'{i[0]:^7}{i[1]:^5}')

  孔明   1226 
  玄德    975 
  曹操    953 
  关公    510 
  张飞    358 
  吕布    300 
  军马    293 
  赵云    278 
  刘备    277 
  引兵    276 

文件的使用

一 概述

  • 文件的类型
  • 文件的打开和关闭
  • 文件内容的读取
  • 数据的文件写入

二、文件的类型

2.1 文件的理解

文件是数据的抽象和集合

  • 文件是存储在辅助存储器上的数据序列
  • 文件是数据存储的一种形式
  • 文件展现形态:文本文件和二进制文件

文本文件 vs. 二进制文件

  • 文件文件和二进制文件只是文件的展示方式
  • 本质上,所有文件都是二进制形式存储
  • 形式上,所有文件采用两种方式展示

2.2 文本文件

文件是数据的抽象和集合

  • 由单一特定编码组成的文件,如UTF-8编码
  • 由于存在编码,也被看成是存储着的长字符串
  • 适用于例如:.txt文件、.py文件等

2.3 二进制文件

文件是数据的抽象和集合

  • 直接由比特0和1组成,没有统一字符编码
  • 一般存在二进制0和1的组织结构,即文件格式
  • 适用于例如:.png文件、.avi文件等

2.4 文本文件 vs. 二进制文件

"中国是个伟大的国家!"

  • 文本形式:中国是个伟大的国家!
  • 二进制形式:b'\xd6\xd0\xb9\xfa\xca\xc7\xb8\xf6\xce\xb0\xb4\xf3\xb5\xc4\xb9\xfa\xbc\xd2\xa3\xa1'

文件的读写操作

f = open(r'C:\Users\XM\Desktop\typore快捷键.txt','r')
data = f.read()
print(data)
f.close()


f = open(r'C:\Users\XM\PycharmProjects\untitled\ceshi.py','w')
f.write('123')
f.close()

3.1 文件路径

文件路径和名称:"D:/PYE/f.txt" 或 "D:\PYE\f.txt"

源文件同目录可省路径:"./PYE/f.txt" 或 "f.txt"

3.2 打开模式

文件的打开模式描述
'r'只读模式,默认值,如果文件不存在,返回FileNotFoundError
'w'覆盖写模式,文件不存在则创建,存在则完全覆盖
'x'创建写模式,文件不存在则创建,存在则返回FileExistsError
'a'追加写模式,文件不存在则创建,存在则在文件最后追加内容
'b'二进制文件模式
't'文本文件模式,默认值
'+'与r/w/x/a一同使用,在原功能基础上增加同时读写功能
  • 文本形式、只读模式、默认值:f = open("f.txt")
  • 文本形式、只读模式、同默认值:f = open("f.txt", "rt")
  • 文本形式、覆盖写模式:f = open("f.txt", "w")
  • 文本形式、追加写模式+ 读文件:f = open("f.txt", "a+")
  • 文本形式、创建写模式:f = open("f.txt", "x")
  • 二进制形式、只读模式:f = open("f.txt", "b")
  • 二进制形式、覆盖写模式:f = open("f.txt"):f = open("f.txt", "wb")

3.3 文件的关闭

<变量名>.close() # 变量名为文件句柄

3.4 文件使用

# 文本形式打开文件
tf = open("f.txt", "rt")
print(tf.readline()) 
tf.close()
# 二进制形式打开文件
bf = open("f.txt", "rb")
print(bf.readline()) 
bf.close()

四、文件内容的读取

操作方法描述
.read(size=-1)读入全部内容,如果给出参数,读入前size长度,s = f.read(2) # 中国
.readline(size=-1)读入一行内容,如果给出参数,读入该行前size长度,s = f.readline() # 中国是一个伟大的国家!
.readlines(hint=-1)读入文件所有行,以每行为元素形成列表如果给出参数,读入前hint行,s = f.readlines() # ['中国是一个伟大的国家!']

4.1 文件的全文本操作

4.1.1 遍历全文本:方法一

一次读入,统一处理

fname = input("请输入要打开的文件名称:") 
fo = open(fname,"r")
txt = fo.read()
# 对全文txt进行处理
fo.close()

4.1.2 遍历全文本:方法二

按数量读入,逐步处理

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
txt = fo.read(2)
while txt != "":
    # 对txt进行处理
    txt = fo.read(2)
    
fo.close()

4.2 文件的逐行操作

4.2.1 逐行遍历文件:方法一

一次读入,分行处理

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
for line in fo.readlines():
    print(line) 
fo.close()

4.2.2 逐行遍历文件:方法二

分行读入,逐行处理

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
for line in fo:
    print(line)
fo.close()

五、数据的文件写入

操作方法描述
.write(s)向文件写入一个字符串或字节流,f.write("中国是一个伟大的国家!")
.writelines(lines)将一个元素全为字符串的列表写入文件,ls = ["中国", "法国", "美国"];f.writelines(ls) # 中国法国美国
.seek(offset)改变当前文件操作指针的位置,offset含义如下: 0 – 文件开头; 1 – 当前位置; 2 – 文件结尾,f.seek(0) # 回到文件开头

写入一个字符串列表

fo = open("output.txt","w+") 
ls = ["中国", "法国", "美国"]
fo.writelines(ls) 
for line in fo:
    print(line)  # (没有任何输出)
fo.close()

写入一个字符串列表

fo = open("output.txt","w+")
ls = ["中国", "法国", "美国"] 
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)  # 中国法国美国
fo.close()

word cloud库的使用

一 wordcloud库基本介绍
wordcloud是优秀的词云展示第三方库

  • 词云以词语为基本单位,更加直观和艺术的展示文本

1.2 wordcloud库的安装

pip install wordcloud(cmd命令行)

二、wordcloud库使用说明

2.1 wordcloud库基本使用

wordcloud库把词云当作一个WordCloud对象

  • wordcloud.WordCloud()代表一个文本对应的词云
  • 可以根据文本中词语出现的频率等参数绘制词云
  • 绘制词云的形状、尺寸和颜色都可以设定

2.2 wordcloud库常规方法

w = wordcloud.WordCloud()
  • 以WordCloud对象为基础
  • 配置参数、加载文本、输出文件
方法描述
w.generate(txt)向WordCloud对象w中加载文本txt,w.generate("Python and WordCloud")
w.to_file(filename)将词云输出为图像文件,.png或.jpg?x-oss-process=style/watermark格式,w.to_file("outfile.png")
  • 步骤1:配置对象参数
  • 步骤2:加载词云文本
  • 步骤3:输出词云文件
import wordcloud

w = wordcloud.WordCloud()
w.generate("Python and WordCloud")
c.to_file("pywordcloud.png")

2.3 配置对象参数

w = wordcloud.WordCloud(<参数>)
参数描述
width指定词云对象生成图片的宽度,默认400像素
height指定词云对象生成图片的高度,默认200像素
min_font_size指定词云中字体的最小字号,默认4号
max_font_size指定词云中字体的最大字号,根据高度自动调节
font_step指定词云中字体字号的步进间隔,默认为1
font_path指定字体文件的路径,默认None
max_words指定词云显示的最大单词数量,默认200
stop_words指定词云的排除词列表,即不显示的单词列表
mask指定词云形状,默认为长方形,需要引用imread()函数
background_color指定词云图片的背景颜色,默认为黑色
# mask
from scipy.misc import imread 

mk=imread("pic.png")
w=wordcloud.WordCloud(mask=mk)

2.4 wordcloud应用实例

import wordcloud

txt = "life is short, you need python"
w = wordcloud.WordCloud(background_color="white")
w.generate(txt)
w.to_file("pywcloud.png")

1740924-20190719190704893-2019532976.jpg

中文需要先分词并组成空格分隔字符串

import jieba
import wordcloud

txt = "Nick 是上海虹桥最帅的男人,没有之一,因为他就是最帅的"

w = wordcloud.WordCloud( width=1000,\
font_path="/Library/Fonts/Heiti.ttc",height=700)
w.generate(" ".join(jieba.lcut(txt)))
w.to_file("pywcloud.png")

mask的使用(mask的图片需要背景为白色)

pip install imageio

pip install scipy

f = open(r'C:\Users\XM\PycharmProjects\untitled\新建文本文档.txt','r',encoding='utf-8')
txt = f.read()
mask = imread(r"C:\Users\XM\PycharmProjects\untitled\113.png")
w = wordcloud.WordCloud( width=1000,\
font_path=r"C:\Windows\Fonts\simhei",height=700,mask=mask,background_color='white')
w.generate(" ".join(jieba.lcut(txt)))
w.to_file("pywcloud.png")

1740924-20190719190848850-208768275.png

转载于:https://www.cnblogs.com/xm-lucky/p/11215273.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值