jieba (中文词频统计) 、collections (字频统计)、WordCloud (词云)
py库: jieba (中文词频统计) 、collections (字频统计)、WordCloud (词云)
先来个最简单的:
# 查找列表中出现次数最多的值
ls = [1, 2, 3, 4, 5, 6, 1, 2, 1, 2, 1, 1]
ls = ["呵呵", "呵呵", "呵呵", "哈哈", "哈哈", "拉拉"]
y = max(set(ls), key=ls.count)
print(y)
一、字频统计: ( collections 库) 2017-10-27
这个库是python 自带的
http://www.cnblogs.com/George1994/p/7204880.html Python collections模块总结
https://www.imooc.com/video/16366 counter的视频 2018-11-26
先练习一下方法的使用: collections.Counter (这个库里只有Counter这个类比较好用)
from collections import Counter
cnt = Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
cnt[word] += 1
print(cnt.most_common()) #[('blue', 3), ('red', 2), ('green', 1)] cnt = Counter()
for char in 'hellllooeooo':
cnt[char] += 1
print(cnt.most_common()) #[('o', 5), ('l', 4), ('e', 2), ('h', 1)]
#for key, val in cnt.most_common():
# print(key, val)
复制代码 1、随机生成100个英文字母,字频统计: 复制代码
# -*- coding: utf-8 -*-
# coding=utf-8 import random
import collections
import string #str1 = '赵钱孙李周吴郑王'
str1 = string.ascii_uppercase # 大写 ABCDEFGHIJKLMNOPQRSTUVWXYZ
#str1 = string.ascii_lowercase # 小写 abcdefghijklmnopqrstuvwxyz
#str1 = string.ascii_letters # 大写和小写 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
mylist = [random.choice(str1) for i in range(100)]
mycount = collections.Counter(mylist)
for key, val in mycount.most_common(10): # 有序
print(key, val)
复制代码 2、读取文本文件,字频统计: (统计李白981首诗中,最常出现的10个字) 复制代码
# -*- coding: utf-8 -*-
# coding=utf-8 import collections # 读取文本文件,把所有的汉字拆成一个list
f = open("jieba_text.txt", 'r', encoding='utf8') # 打开文件,并读取要处理的大段文字
txt1 = f.read()
txt1 = txt1.replace('\n', '') # 删掉换行符
txt1 = txt1.replace(',', '') # 删掉逗号
txt1 = txt1.replace('。', '') # 删掉句号
mylist = list(txt1)
mycount = collections.Counter(mylist)
for key, val in mycount.most_common(10): # 有序(返回前10个)
print(key, val)
一个小练习:扒取李白诗词981篇,进行词频统计:
前一阵不是有清华附小的小学生论文《大数据分析帮你进一步认识苏轼》么,其中有对苏轼的词频统计。
为了赶上小学生的水平,刚才做了个小练习,想统计一下李白的981首诗中的每个字的出现频率。代码就不放上来了。写的不太好,但效果差不多做出来了。
1、http://www.shicimingju.com/chaxun/zuozhe/1.html 这个页面有李白诗词,但是不完整,所以要进入诗词标题的链接的下一级页面,扒取完整诗词。以及翻页后的页面,再进行扒取,然后存于txt文件
2、用本页最上面的单字字频统计的代码,统计出李白诗词中,最常见的几个字的次序如下: 不人天云山风月白一何
二、字频统计: 这个没有用第三方库。 2017-10-17
# -*- coding: utf-8 -*-
# coding=utf-8 def histogram(s, old_d):
d = old_d
for c in s:
d[c] = d.get(c, 0) + 1
return d # 读取文件,拆成行 list格式的
f = open("jieba_text.txt", 'r', encoding='utf8') # 从文件中读取要处理的大段文字
lines = []
for line in f:
rs = line.rstrip('\n') # 删掉换行符
lines.append(rs)
print(lines) # 把行拆成单字,拆成dict格式的
myWords = dict()
for i in range(len(lines)):
myWords = histogram(lines[i], myWords)
print(myWords) # myWords={'望': 3, '庐': 1, '山': 9, '瀑': 2, '布': 2, '日': 4, '照': 21, '香': 12, '炉': 1, '生': 2, '紫': 1, '烟': 3}
a = sorted(myWords.items(), key=lambda item: item[1], reverse=True) # 按值排序
print(dict(a)) # 转化为dict
http://www.cnblogs.com/whaben/p/6495702.html python 列表排序方法sort、sorted技巧篇
http://www.cnblogs.com/dylan-wu/p/6041465.html python的sorted函数对字典按key排序和按value排序
http://blog.csdn.net/u013679490/article/details/54426324 根据字典中K/V排序
http://blog.csdn.net/sxingming/article/details/51352807 python 如何反转序列
三、中文分词: ( jieba 库 ) 这个可以处理词汇
http://www.jianshu.com/p/22cdbbeeb778 jieba的教程
# -*- coding: utf-8 -*-
# coding=utf-8 import jieba
import jieba.analyse # text = "故宫的著名景点包括乾清宫、太和殿和午门等。其中乾清宫非常精美,午门是紫禁城的正门,午门居中向阳。"
text = ''
#jieba.load_userdict("jieba_dict.txt") # 用户自定义词典 (用户可以自己在这个文本文件中,写好自定制词汇)
f = open('jieba_text.txt', 'r', encoding='utf8') # 要进行分词处理的文本文件 (统统按照utf8文件去处理,省得麻烦)
lines = f.readlines()
for line in lines:
text += line # seg_list = jieba.cut(text, cut_all=False) #精确模式(默认是精确模式)
seg_list = jieba.cut(text) # 精确模式(默认是精确模式)
print("[精确模式]: ", "/ ".join(seg_list)) # seg_list2 = jieba.cut(text, cut_all=True) #全模式
# print("[全模式]: ", "/ ".join(seg_list2)) # seg_list3 = jieba.cut_for_search(text) #搜索引擎模式
# print("[搜索引擎模式]: ","/ ".join(seg_list3)) tags = jieba.analyse.extract_tags(text, topK=5)
print("关键词: ", " / ".join(tags))
四、词云: ( WordCloud 库 )
在安装 这个库的时候不是很顺利。所以去这个网站下载.whl文件。下载后暂时保存在c:/Python3/Scripts/wordcloud‑1.3.2‑cp36‑cp36m‑win32.whl
http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud
python pip.exe install wordcloud‑1.3.2‑cp36‑cp36m‑win32.whl
1、例子,最简单词云:
# -*- coding: utf-8 -*-
# coding=utf-8 import matplotlib.pyplot as plt
from wordcloud import WordCloud
import jieba txt1 = open('word.txt', 'r', encoding='utf8').read() # word.txt,随便放点中文文章
words_ls = jieba.cut(txt1, cut_all=True)
words_split = " ".join(words_ls) wc = WordCloud() # 字体这里有个坑,一定要设这个参数。否则会显示一堆小方框wc.font_path="simhei.ttf" # 黑体
my_wordcloud = wc.generate(words_split)
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show() wc.to_file('zzz.png') # 保存图片文件
复制代码 2、例子,带遮罩的词云: 复制代码
# -*- coding: utf-8 -*-
# coding=utf-8 import matplotlib.pyplot as plt
import wordcloud
import jieba txt1 = open('word.txt', 'r', encoding='utf8').read()
words_ls = jieba.cut(txt1, cut_all=True)
words_split = " ".join(words_ls) # 参数都可以注释掉,但必须设置font_path
wc = wordcloud.WordCloud(
width=800,
height=600,
background_color="#ffffff", # 设置背景颜色
max_words=500, # 词的最大数(默认为200)
max_font_size=60, # 最大字体尺寸
min_font_size=10, # 最小字体尺寸(默认为4)
colormap='bone', # string or matplotlib colormap, default="viridis"
random_state=10, # 设置有多少种随机生成状态,即有多少种配色方案
mask=plt.imread("mask2.gif"), # 读取遮罩图片!!
font_path='simhei.ttf'
)
my_wordcloud = wc.generate(words_split) plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
wc.to_file('zzz.png') # 保存图片文件
(参数说明)
font_path:
msyh.ttf 微软雅黑
msyhbd.ttf 微软雅黑 粗体
simsun.ttc 宋体
simhei.ttf 黑体
colormap:
autumn 从红色平滑变化到橙色,然后到黄色。
bone 具有较高的蓝色成分的灰度色图。该色图用于对灰度图添加电子的视图。
cool 包含青绿色和品红色的阴影色。从青绿色平滑变化到品红色。
copper 从黑色平滑过渡到亮铜色。
flag 包含红、白、绿和黑色。
gray 返回线性灰度色图。
hot 从黑平滑过度到红、橙色和黄色的背景色,然后到白色。
hsv 从红,变化到黄、绿、青绿、品红,返回到红。
jet 从蓝到红,中间经过青绿、黄和橙色。它是hsv色图的一个变异。
line 产生由坐标轴的ColorOrder属性产生的颜色以及灰的背景色的色图。
pink 柔和的桃红色,它提供了灰度图的深褐色调着色。
prism 重复这六种颜色:红、橙、黄、绿、蓝和紫色。
spring 包含品红和黄的阴影颜色。
summer 包含绿和黄的阴影颜色。
white 全白的单色色图。
winter 包含蓝和绿的阴影色。
http://blog.csdn.net/doiido/article/details/43675465 Python open() 函数 文件处理 (讲的是 open('zz.txt',) 函数的使用)
jieba (中文词频统计) 、collections (字频统计)、WordCloud (词云)的更多相关文章
- python爬虫——京东评论、jieba分词、wordcloud词云统计
接上一章,动态页面抓取——抓取京东评论区内容. url=‘https://club.jd.com/comment/productPageComments.action?callback=fetchJS ...
- 数字、字符串、列表、字典,jieba库,wordcloud词云
一.基本数据类型 什么是数据类型 变量:描述世间万物的事物的属性状态 为了描述世间万物的状态,所以有了数据类型,对数据分类 为什么要对数据分类 针对不同的状态需要不同的数据类型标识 数据类型的分类 二 ...
- python3 wordcloud词云
wordclou:根据文本生成词云 一.词云设置 wc=WordCloud(width=400, height=200, #画布长.宽,默认(400,200)像素 margin=1, #字与字之间的距 ...
- wordcloud词云模块
wordcloud词云模块 下载 pip install wordcloud 使用 import wordcloud##调用整个模块 form wordcloud import WordCloud## ...
- jieba分词wordcloud词云
1.jieba库的基本介绍 (1).jieba是优秀的中文分词第三方库 中文文本需要通过分词获得单个的词语 jieba是优秀的中文分词第三方库,需要额外安装 jieba库提供三种分词模式,最简单只需掌 ...
- wordcloud词云
借鉴别人的一个小例子,快速生成词云的代码: from wordcloud import WordCloud f = open(u'txt/AliceEN.txt','r').read() wordcl ...
- wordcloud词云--可视化
import jieba import wordcloud f = open("新时代中国特色社会主义.txt", "r", encoding="gb ...
- python 制作wordcloud词云
pip install wordcloud 需要用到numpy pillow matplotlib 安装完成以后 wordcloud_cli --text in.txt --imagefile ou ...
- python jieba 库分词结合Wordcloud词云统计
import jieba jieba.add_word("福军") jieba.add_word("少安") excludes={"一个", ...
- 爬取豆瓣电影影评,生成wordcloud词云,并利用监督学习根据评论自动打星
本文的完整源码在git位置:https://github.com/OceanBBBBbb/douban-ml 爬取豆瓣影评 爬豆瓣的影评比较简单,豆瓣没有做限制,甚至你都不用登陆就可以看全部,我这里用 ...
随机推荐
- React中富文本编辑器的技术选型调研
前言 富文本编辑器是项目中不可或缺的部分,目前市面上可以选择的富文本编辑器种类繁多,如何在项目中选择一款集轻量,美观,稳定,坑少,满足需求的富文本编辑器变成了团队中一个重要的问题. 现在项目中使用的是 ...
- Vue+ElementUI学习总结(转载)
Vue框架简介 Vue是一套构建用户界面的框架, 开发只需要关注视图层, 它不仅易于上手,还便于与第三方库或既有项目的整合.是基于MVVM(Model-View-ViewModel)设计思想.提供MV ...
- vue单页应用首次加载太慢之性能优化
问题描述: 最近开发了一个单页应用,上线后发现页面初始加载要20s才能完成,这就很影响用户体验了,于是分析原因,发现页面加载时有个 vendor.js达到了3000多kb,于是在网上查找了一下原因,是 ...
- Proxy&Reflect
大部分时候我们使用的都是前置代理, 即我们把直接和代理对象进行交互(所有操作都发生在代理对象身上)的方式叫做前置代理. 那什么是后置代理? 借助原型链机制, 我们直接和 obj 进行交互而不是和代理对 ...
- unittest assert断言
unittest常用的断言方法 1.assertEqual(self, first, second, msg=None) --判断两个参数相等:first == second 2.assertNotE ...
- Wine-Staging 4.9 发布,增添一些新补丁
Wine-Staging的工作还在继续,到4.9版为止,在上游Wine代码库上有超过830个补丁. 在上周五的Wine 4.9发布之后,Wine-Staging 4.9已经发布了,之前的一些暂存工作现 ...
- iotop发现jdb2/sdb1-8 io使用过高解决办法
一.现象 [root@push-- ~]# iotop otal DISK READ: 0.00 B/s | Total DISK WRITE: 6.26 M/s TID PRIO USER DISK ...
- mysql5.7.26做主从复制配置
一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.主 ...
- 【转载】VMware下的Ubuntu用ifconfig不能显示ip地址的解决方案
转载于 http://blog.163.com/wjn_mcu/blog/static/23801601620146161062704/ 背景 在虚拟机下运行操作系统,尤其是Linux系统已经是非常常 ...
- hdu 6501 transaction transaction transaction 最长路/树形DP/网络流
最长路: 设置一个虚拟起点和虚拟终点,每个点与起点间一条负边,值为这个点书的价值的相反数(代表买书花钱),每个点与终点连一条正边,值为这个点的书的价格(代表卖书赚钱). 然后按照图中给的边建无向边,权 ...