python 数据词云展示实例(2)- jieba库的使用

记录中文分词库jieba的使用、参数及样板

之前简单的介绍了jieba库的使用,python 数据词云展示实例(1)- 京东商品评论

本文记录一下jieba库的一些常用参数
官方github https://github.com/fxsjy/jieba

分词

jieba.cut方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型。返回一个迭代器。

jieba.lcut使用同上,但是返回的是 list

import jieba

seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式

seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式

seg_list = jieba.cut("他来到了网易杭研大厦")  # 默认是精确模式
print(", ".join(seg_list))

输出为:
【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学

【精确模式】: 我/ 来到/ 北京/ 清华大学

【默认】:他, 来到, 了, 网易, 杭研, 大厦 

关键词提取

主要有两种方法:基于 TF-IDF 算法的关键词抽取和基于 TextRank 算法的关键词抽取。
在jieba里面的名称为:jieba.analyse.extract_tagsjieba.analyse.textrank

需要注意的是:前者默认不过滤词性,后者则默认会过滤词性('ns', 'n', 'vn', 'v')(可参考文末的词性表)

jieba.analyse.extract_tags

import jieba.analyse

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 为待提取的文本
topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
withWeight 为是否一并返回关键词权重值,默认值为 False
allowPOS 仅包括指定词性的词,默认值为空,即不筛选

jieba.analyse.textrank

import jieba.analyse

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。

使用样板

jieba.analyse.extract_tags


'''
读取jd_comment.txt文本内容,通过jieba.analyse.extract_tags方法筛选关键词,绘制词云

'''

import jieba.analyse
from wordcloud import WordCloud,ImageColorGenerator

f=open('/home/yhjbox/Desktop/jd_comments-7.28/example1/jd_comment.txt','r')  
contents=f.read()

result=jieba.analyse.extract_tags(contents,topK=1000,withWeight=True)

keywords = dict()
for i in result:
  keywords[i[0]]=i[1]
print(keywords) 

wc = WordCloud(font_path='/usr/share/fonts/winfonts/simfang.ttf',
               background_color='White',
               max_words=1000,
               width=1000,
               height=500,
               #mask=graph,
               scale=1,
               )
#font_path:设置字体,max_words:出现的最多词数量

wc.generate_from_frequencies(keywords)#按词出现的频率
wc.to_file("jd_comment.jpg")

结果显示:
{'舒服': 0.47536917846257937, '不错': 0.225618537521803, '穿着': 0.21326472856393613, '内衣': 0.2016894321875567, '质量': 0.1871072280868928, '非常': 0.13341056610756394, '收到': 0.12721841432032469, '满意': 0.10915776704747325, '喜欢': 0.09516381880606567, '舒适': 0.09206332667271902, '合适': 0.07589358703941229, '面料': 0.07145172159387991, '感觉': 0.06753810395328497, '挺舒服': 0.06688503395338291,.....

jd_comment.jpg

jieba.analyse.textrank


'''
读取jd_comment.txt文本内容,通过jieba.analyse.textrank方法筛选关键词,绘制词云

'''

import jieba.analyse
from wordcloud import WordCloud,ImageColorGenerator

f=open('/home/yhjbox/Desktop/jd_comments-7.28/example1/jd_comment.txt','r')  
contents=f.read()

result=jieba.analyse.textrank(contents,topK=1000,withWeight=True)
#默认过滤了词,除非加上allowPOS=('ns', 'n', 'vn', 'v')


keywords = dict()
for i in result:
  keywords[i[0]]=i[1]
print(keywords) 

wc = WordCloud(font_path='/usr/share/fonts/winfonts/simfang.ttf',
               background_color='White',
               max_words=1000,
               width=1000,
               height=500,
               #mask=graph,
               scale=1,
               )
#font_path:设置字体,max_words:出现的最多词数量

wc.generate_from_frequencies(keywords)#按词出现的频率
wc.to_file("jd_comment.jpg")

结果显示:
{'质量': 1.0, '穿着': 0.9200055415709553, '内衣': 0.7538668025054438, '没有': 0.6467056992227592, '收到': 0.6429399411659895, '满意': 0.5357806573771569, '购买': 0.4528262852785809, '喜欢': 0.4501107283351987,......


jd_comment.jpg

手动设置过滤词

上述两种方法,如果希望某些个词不要出现在词云当中的话,可以使用jieba.analyse.set_stop_words方法,把不希望出现的词写在stop.txt文件中,一行一个。

加在jieba.analyse.extract_tags或者jieba.analyse.textrank语句之前就可以了。

jieba.analyse.set_stop_words('stop.txt')

如设置不要出现“质量”、“内衣”两个词,两种方法的效果分别如下:

jd_comment.jpg
jd_comment.jpg

常用词性表
注:jieba分词的词性表如下:

另附词性标注表如下:

  1. 名词 (1个一类,7个二类,5个三类)
      名词分为以下子类:
        n 名词
        nr 人名
        nr1 汉语姓氏
        nr2 汉语名字
        nrj 日语人名
        nrf 音译人名
        ns 地名
        nsf 音译地名
        nt 机构团体名
        nz 其它专名
        nl 名词性惯用语
        ng 名词性语素
  2. 时间词(1个一类,1个二类)
        t 时间词
        tg 时间词性语素
  3. 处所词(1个一类)
        s 处所词
  4. 方位词(1个一类)
        f 方位词
  5. 动词(1个一类,9个二类)
        v 动词
        vd 副动词
        vn 名动词
        vshi 动词“是”
        vyou 动词“有”
        vf 趋向动词
        vx 形式动词
        vi 不及物动词(内动词)
        vl 动词性惯用语
        vg 动词性语素
  6. 形容词(1个一类,4个二类)
        a 形容词
        ad 副形词
        an 名形词
        ag 形容词性语素
        al 形容词性惯用语
  7. 区别词(1个一类,2个二类)
        b 区别词
        bl 区别词性惯用语
  8. 状态词(1个一类)
        z 状态词
  9. 代词(1个一类,4个二类,6个三类)
        r 代词
        rr 人称代词
        rz 指示代词
        rzt 时间指示代词
        rzs 处所指示代词
        rzv 谓词性指示代词
        ry 疑问代词
        ryt 时间疑问代词
        rys 处所疑问代词
        ryv 谓词性疑问代词
        rg 代词性语素
  10. 数词(1个一类,1个二类)
        m 数词
        mq 数量词
  11. 量词(1个一类,2个二类)
        q 量词
        qv 动量词
        qt 时量词
  12. 副词(1个一类)
        d 副词
  13. 介词(1个一类,2个二类)
        p 介词
        pba 介词“把”
        pbei 介词“被”
  14. 连词(1个一类,1个二类)
        c 连词
        cc 并列连词
  15. 助词(1个一类,15个二类)
        u 助词
        uzhe 着
        ule 了 喽
        uguo 过
        ude1 的 底
        ude2 地
        ude3 得
        usuo 所
        udeng 等 等等 云云
        uyy 一样 一般 似的 般
        udh 的话
        uls 来讲 来说 而言 说来
        uzhi 之
        ulian 连 (“连小学生都会”)
  16. 叹词(1个一类)
        e 叹词
  17. 语气词(1个一类)
        y 语气词(delete yg)
  18. 拟声词(1个一类)
        o 拟声词
  19. 前缀(1个一类)
        h 前缀
  20. 后缀(1个一类)
        k 后缀
  21. 字符串(1个一类,2个二类)
        x 字符串
        xx 非语素字
        xu 网址URL
  22. 标点符号(1个一类,16个二类)
        w 标点符号
        wkz 左括号,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <
        wky 右括号,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
        wyz 左引号,全角:“ ‘ 『
        wyy 右引号,全角:” ’ 』
        wj 句号,全角:。
        ww 问号,全角:? 半角:?
        wt 叹号,全角:! 半角:!
        wd 逗号,全角:, 半角:,
        wf 分号,全角:; 半角: ;
        wn 顿号,全角:、
        wm 冒号,全角:: 半角: :
        ws 省略号,全角:…… …
        wp 破折号,全角:—— -- ——- 半角:--- ----
        wb 百分号千分号,全角:% ‰ 半角:%
        wh 单位符号,全角:¥ $ £ ° ℃ 半角:$
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容