python 绘制词云图
1. 先下载并安装nltk包,准备一张简单的图片存入代码所在文件目录,搜集英文停用词表
import nltk
nltk.download()
2. 绘制词云图
import re
import numpy as np
import pandas as pd
#import matplotlib
import matplotlib.pyplot as plt
from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.corpus import stopwords
from PIL import Image
from wordcloud import WordCloud
from sklearn.datasets import fetch_20newsgroups
#from sklearn.feature_extraction.text import CountVectorizer
from collections import Counter, defaultdict def word_cut(contents, cut=','):
res = []
for content in contents:
content = content.lower()
words = [word for word in re.split(cut, content) if word]
res.append(words)
return res def word_count(contents):
#words_count = Counter(sum(contents,[])) #慢
word_count_dict = defaultdict(lambda: 0)
for content in contents:
temp_dict = Counter(content)
for key in temp_dict:
word_count_dict[key] += temp_dict[key]
return word_count_dict def stopwords_filter(contents, stopwords):
contents_clean = []
word_count_dict = defaultdict(lambda: 0)
for line in contents:
line_clean = []
for word in line:
if word in stopwords:
continue
line_clean.append(word)
word_count_dict[word] += 1
contents_clean.append(line_clean) words_count = list(word_count_dict.items())
words_count.sort(key=lambda x:-x[1])
words_count = pd.DataFrame(words_count, columns=['word', 'count'])
return contents_clean, words_count # 从外部导入数据
'''
df_news = pd.read_table('val.txt', names=['category','theme','URL','content'], encoding='utf-8')
stopwords = pd.read_csv("stopwords.txt", index_col = False, sep="\t",
quoting=3, names=['stopword'], encoding='utf-8')
contents = df_news.content.values.tolist()
stopwords = stopwords.stopword.values.tolist()''' # 自定义切词
'''
#[ ,.\n\t--\':;?!/+<>@]
#[ ,.\n\t=--\'`_\[\]:;?!^/|+<>{}@~\\]
#contents = word_cut(contents=news.data, cut='[ ,.\n\t-\`_\[\]:;?!\^/|+<>{}@~]')
'''
# 将数据整理为模型入参形式
'''
#vec = CountVectorizer()
#X_train = vec.fit_transform(X_train) #不可直接将vec用在测试集上
#vectorizer_test = CountVectorizer(vocabulary=vec.vocabulary_)
#X_test = vectorizer_test.transform(X_test)
''' # 可从中筛选停用词
'''
word_count_dict = word_count(contents)
temp = list(word_count_dict.items())
temp.sort(key=lambda x:-x[1])
df = pd.DataFrame(temp, columns=['word','count'])
df.to_csv(r'D:\PycharmProjects\zsyb\stop_words.csv')
''' # 调包实现上述功能
news = fetch_20newsgroups(subset='all')
# 自定义的快好几倍,可以加if not in ‘’去标点
contents = [word_tokenize(content.lower()) for content in news.data] #sent_tokenize(content)
punctuations = set(list(',.\n\t-\`_()\[\]:;?!$#%&.*=\^/|+<>{}@~')) #标点
digits = {str(i) for i in range(50)}
others = {'--', "''", '``', "'", '...'}
# 下载网上的停用词表加入 nltk_data\corpora\stopwords,低频词过滤(不要加入停用词)
stopWords = set(stopwords.words('english')) | punctuations | digits | others
contents_clean, words_count = stopwords_filter(contents, stopWords)
#df.groupby(by=['word']).agg({"count": np.size}) # 绘制词云图
fontpath = 'simhei.ttf'
aimask = np.array(Image.open(r"D:\PycharmProjects\zsyb\pig.png")) wc = WordCloud(font_path = fontpath, #设置字体
background_color = "white", #背景颜色
max_words = 1000, #词云显示的最大词数
max_font_size = 100, #字体最大值
min_font_size = 10, #字体最小值
random_state = 42, #随机数
collocations = False, #避免重复单词
mask = aimask, #造型遮盖
width = 1200, height = 800, #图像宽高,需配合plt.figure(dpi=xx)放缩才有效
margin = 2 #字间距
)
word_frequence = {x[0]:x[1] for x in words_count.head(100).values}
word_cloud=wc.fit_words(word_frequence) plt.figure(dpi=100) #通过这里可以放大或缩小
plt.subplot(121)
plt.imshow(aimask)
#plt.axis("off") #隐藏坐标
plt.subplot(122)
plt.imshow(word_cloud)
#plt.axis("off") #隐藏坐标

python 绘制词云图的更多相关文章
- Python pyecharts绘制词云图
一.pyecharts绘制词云图WordCloud.add()方法简介 WordCloud.add()方法简介 add(name,attr,value, shape="circle" ...
- python爬虫+词云图,爬取网易云音乐评论
又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...
- 使用python绘制词云
最近在忙考试的事情,没什么时间敲代码,一个月也没几天看代码,最近看到可视化的词云,看到网上也很多这样的工具, 但是都不怎么完美,有些不支持中文,有的中文词频统计得莫名其妙.有的不支持自定义形状.所有的 ...
- 使用pyecharts绘制词云图-淘宝商品评论展示
一.什么是词云图? 词云图是一种用来展现高频关键词的可视化表达,通过文字.色彩.图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息. 制作词云图的网站有很多,简单方便,适合小批量操作. BI ...
- python 数据分析--词云图,图形可视化美国竞选辩论
这篇博客从用python实现分析数据的一个完整过程.以下着重几个python的moudle的运用"pandas",""wordcloud"," ...
- python 可视化 词云图
文本挖掘及可视化知识链接 我的代码: # -*- coding: utf-8 -*- from pandas import read_csv import numpy as np from sklea ...
- python 做词云图
#导入需要模块 import jieba import numpy as np import matplotlib.pyplot as plt from PIL import Image from w ...
- Python 绘制词云
文本内容:data(包含很多条文本) 1.分词: import jieba data_cut = data.apply(jieba.lcut) 2.去除停用词: stoplist.txt:链接:htt ...
- 吃瓜的正确姿势,Python绘制罗志祥词云图
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 这篇文章中向大家介绍了Python绘制词云的方法,不难看出绘制词云可以说是一 ...
随机推荐
- 《2018:skymind.ai 发布了一份非常全面的开源数据集》
这是一份非常全面的开源数据集,你,真的不想要吗? 近期,skymind.ai 发布了一份非常全面的开源数据集.内容包括生物识别.自然图像以及深度学习图像等数据集,现机器之心将其整理如下:(内附链接 ...
- Python gc
Python gc Python gc 模块提供垃圾回收器的接口 关于 Python 垃圾回收 <- 点击查看 官方文档:https://docs.python.org/3/library/gc ...
- JS 从内存空间谈到垃圾回收机制
壹 ❀ 引 从事计算机相关技术工作的同学,对于内存空间相关概念多少有所耳闻,毕竟像我这种非计算机科班出身的人,对于栈堆,垃圾回收都能简单说道几句:当我明白JS 基本类型与引用类型数据存储方式不同,才 ...
- Spring Boot 2.2.0新特性
Spring Boot 2.2.0 正式发布了,可从 repo.spring.io 或是 Maven Central 获取. 性能提升 Spring Boot 2.2.0 的性能获得了很大的提升. ...
- python接口自动化11-pytest入门
前言 pytest是一个非常成熟的全功能的Python测试框架,适合从简单的单元到复杂的功能测试,主要特点有以下几点: 简单灵活,容易上手: 支持参数化: 能够支持简单的单元测试: 标记测试功能与属性 ...
- linux下使用mv将递归的文件从多个目录移动到一个目录中
find /data/download/temp \( -iname '*.mp4' -o -iname '*.avi' \) -type f -exec mv -nv -t '/data/downl ...
- 【IDEA】(1)---MAC下常用快捷键
IDEA常用快捷键 IDEA是一个很好的开发工具,用好它能大大提高我们的开发效率,所以这里学习总结下有关IDEA实用的一些教程,比如常用快捷键,如何自定义代码模版,如何debug异常断点,或者说多线程 ...
- django实现客户端文件下载
基于django项目,由于不是专门讲文件的下载,这里仅是项目需要,所以可能不是特别的详细.仅做流程的演示: 实现过程: 1.准备下载url # 下载文件 url(r'^download_file/$' ...
- Python【day 15-3】函数部分
'''''' ''' 一.函数 1.函数定义 对功能或者动作的封装 在类中定义,就是方法 在类之外定义,就是函数 2.函数写法 1.定义或者申明函数 def 函数名(形参列表): 函数体(return ...
- C++ 流插入"<<"和流提取">>"运算符的重载
01 流插入<<运算符的重载 C++ 在输出内容时,最常用的方式: std::cout << 1 <<"hello"; 问题: 那这条语句为什么 ...