美文网首页bdml
python 数据词云展示实例(2)- jieba库的使用

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

作者: 永恒君的百宝箱 | 来源:发表于2019-07-29 07:22 被阅读0次

    记录中文分词库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 单位符号,全角:¥ $ £ ° ℃ 半角:$

    相关文章

      网友评论

        本文标题:python 数据词云展示实例(2)- jieba库的使用

        本文链接:https://www.haomeiwen.com/subject/mufvrctx.html