PythonPython学以致用编程语言爱好者

用jieba分词提取关键词做漂亮的词云

2017-01-17  本文已影响4148人  _CallMe靠谱叔

早上看到简友@向右奔跑 的文章超简单:快速制作一款高逼格词云图,试了一下介绍的工具真心好用,近期刚好想爬些数据做词云,就尝试了一下jieba分词提取txt关键词生成词云。
先上效果图:

用到的工具

  1. 原始数据:《白夜行》小说,txt格式(我是用calibre把原来mobi格式的书转成txt的)。后期可以用爬虫爬点网页数据做原始数据。为简单就先用txt练手好了。
  2. 提取关键词:jieba分词、停用词表
  3. 在线词云生成工具:TAGUL

简单分析一下

生成词云最关键的问题是中文分词,统计分析各个词的权重(权重较高的字体显示较大)。这些问题jieba分词已经帮我们解决了。我们只需要import jieba.analyse,使用jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())方法即可,当然只是提取关键词还是不够的,因为有些没有意义的常用词诸如“我的”、“或者”、“一个”等词,会出现在结果里面,还需要一个“停用词表”来帮我们过滤结果。
我们的目标是提取关键词,并得到“关键词+制表符+权重”的文本,这里关键词和权重用制表符隔开是为了在用在线工具的时候,能顺利导入权重的值,决定词的大小(size)。


关键词和size中间用制表符分开


步骤:

  1. 安装jieba pip install jieba
  2. 准备好txt文件和停用词表(网上可以下载到,txt格式即可)
  3. 编写代码
import jieba.analyse

path = '你的txt文件路径'
file_in = open(path, 'r')
content = file_in.read()

try:
    jieba.analyse.set_stop_words('你的停用词表路径')
    tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)
    for v, n in tags:
        #权重是小数,为了凑整,乘了一万
        print v + '\t' + str(int(n * 10000))

finally:
    file_in.close()

运行结果如下:


4.打开TAGUL,开始制作词云,把结果贴进import words里


5.选个shape(词云轮廓)

6.在fonts中,导入一个中文字体,我用的微软雅黑:

7.点击visualize即可生成

8.Download and Share里面可以下载需要的格式。

参考文章:

1.TF-IDF与余弦相似性的应用(一):自动提取关键词
2.超简单:快速制作一款高逼格词云图
3.jieba的github

上一篇下一篇

猜你喜欢

热点阅读