在某乎上发现一篇非常棒的文章:
https://zhuanlan.zhihu.com/p/32891779,关于使用Python制作词云图。全文思路清晰、行文流畅,深入浅出的演示了整个过程,看罢忍不住自己也想照虎画个喵。树莓派正合适啊,Python都是买就送的标配。
手头正好有一份A股上市公司的全部主营产品名称的资料,用这个素材看看天朝上市公司的产品类别娱乐下大概也是件有意思的事情。
准备工作:
sudo apt-get update
sudo apt-get upgrade
文章里提到了jieba分词和wordcloud词云,可以用pip3安装:
sudo pip3 install jieba
sudo pip3 install wordcloud
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xa
这就是传说中的版本控制问题? 用numpy.__version__看了下是1.12。网上查了很久,发现一个解决办法:
手头正好有一份A股上市公司的全部主营产品名称的资料,用这个素材看看天朝上市公司的产品类别娱乐下大概也是件有意思的事情。
准备工作:
sudo apt-get update
sudo apt-get upgrade
文章里提到了jieba分词和wordcloud词云,可以用pip3安装:
sudo pip3 install jieba
sudo pip3 install wordcloud
装起来可能有点慢。耐心,耐心。。。尤其是wordcloud,可能还会报错,试着再次安装,重装到成功为止。
自定义分词和停词的解释原文说的挺好了,这里不多说了。
分词文件里我选了这些词:
房地产
销售
系列
产品
类
stopwords网上找了一个下载,自己再加了几个:
系统
产品
服务
业务
开发
系列
相关
代码:
#coding=utf-8
import jieba
from wordcloud import WordCloud
ftext = open('./a.txt')
text = ftext.read()
ftext.close()
f = open("./stopwords.txt")
stopwords = {}.fromkeys(f.read().split("\n"))
f.close()
jieba.load_userdict("./jieba_cut.txt")
segs = jieba.cut(text)
rst = []
for seg in segs:
if seg not in stopwords and seg != " " and len(seg) != 1:
rst.append(seg.replace(" ",","))
cloudtext = ",".join(rst)
#print(cloudtext)
wc = WordCloud(
background_color="white",
max_words=120,
font_path="/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc",
min_font_size=12,
max_font_size=66,
width=640,
height=480
)
wc.generate(cloudtext)
wc.to_file("./demo.png")
理论上这样应该就可以了,之前也确实能运行。但昨天重装系统之后按上述步骤执行后报错:
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xa
这就是传说中的版本控制问题? 用numpy.__version__看了下是1.12。网上查了很久,发现一个解决办法:
sudo apt-get install libatlas-base-dev
sudo pip3 install cairocffi
sudo pip3 install wordcloud --upgrade
numpy.__version__升到了1.14,代码也能运行了。
我得到的词云图如下: