zoukankan      html  css  js  c++  java
  • Python中文词频统计

    1. 下载一长篇中文小说。

    2. 从文件读取待分析文本。

    3. 安装并使用jieba进行中文分词。

    pip install jieba

    import jieba

    ljieba.lcut(text)

     

    import jieba
    txt = open(r'piao.txt','r',encoding='utf-8').read()
    
    wordsls=jieba.lcut(txt)
    wcdict={}
    for word in wordsls:
        if len(word)==1:
            continue
        else:
            wcdict[word]=wcdict.get(word,0)+1
    #word在wcdict中没有找到对应的词语,则返回0
    wcls=list(wcdict.items()) wcls.sort(key=lambda x:x[1],reverse=True) for i in range(25): print(wcls[i])

     

     

    4. 更新词库,加入所分析对象的专业词汇。

    jieba.add_word('天罡北斗阵')  #逐个添加

    jieba.load_userdict(word_dict)  #词库文本文件

     

    jieba.add_word('思嘉奥哈拉')
    jieba.lcut(txt)

     

    5. 生成词频统计

    6. 排序(如上图)

    7. 排除语法型词汇,代词、冠词、连词

     

    import jieba
    txt = open(r'piao.txt','r',encoding='utf-8').read()
    
    for ch in '-#$%^&*()@:{}_+[]~':
        txt =txt.replace(ch," ")#将文本中的特殊字符转换为空格替代
    
    wordsls=jieba.cut(txt)
    #分解提取单词
    print('
    ')
    List=str.strip('')
    print(len(List),List)
    #单词计数字典
    print('/n')
    wordsls=set(List)
    print(len(wordsls),wordsls)
    
    wcdict={}
    for word in wordsls:
        if len(word)==1:
            continue
        else:
            wcdict[word]=wcdict.get(word,0)+1
            #word在wcdict中没有找到对应的词语,则返回0
    
    
    #wcdict['思嘉']=wcdict['思嘉']+wcdict["思嘉奥哈拉"]
    #del(wcdict['思嘉奥哈拉'])
    
    wcls=list(wcdict.items())
    wcls.sort(key=lambda x:x[1],reverse=True)
    
    #排除语法型词汇,代词、冠词、连词
    xx=['他们','没有','自己','一个','什么','这样','知道','我们','这个','这些','不过','已经','要是','觉得','那样','而且']
    wordsls= wordsls-xx
    print(len(wordsls),wordsls)
    
    jieba.add_word('思嘉 奥哈拉')
    jieba.lcut(txt)
    
    for i in range(25):
        print(wcls[i])
    

     

    import re
    import collections
    import numpy as np
    import jieba
    from wordcloud import WordCloud # 词云展示库
    from PIL import Image # 图像处理库
    import matplotlib.pyplot as plt # 图像展示库
    
    
    txt = open(r'piao.txt','r',encoding='utf-8').read()
    for ch in '-#$%^&*()@:{}_+[]~
    ':
        txt =txt.replace(ch," ")#将文本中的特殊字符转换为空格替代
    
    stop_word=[]
    stop_word=open("停用词.txt","r",encoding='UTF-8').read().split("
    ")
    
    wordsls=jieba.lcut(txt)
    object_list=[]
    for i in wordsls:
        if len(i)!=1:
            if i not in stop_word:
                object_list.append(i)
    
    
    
    word_counts = collections.Counter(object_list) # 对分词做词频统计
    word_counts_top10 = word_counts.most_common(20) # 获取前10最高频的词
    print (word_counts_top10) # 输出检查
    
    
    
    wl_split=' '.join(object_list)
    
    mywc = WordCloud().generate(wl_split)
    plt.imshow(mywc)
    plt.axis("off")
    plt.show()
    

      

    8. 输出词频最大TOP20,把结果存放到文件里

    9. 生成词云

     

    安装词云:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple wordcloud

     

    下载安装:下载 https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

     

    安装 找到下载文件的路径  pip install wordcloud-1.5.0-cp37-cp37m-win_amd64.whl

     

    配置:

     

    在WordCloud安装的目录下找到WordCloud.py文件,对源码进行修改。

     

    编辑wordcloud.py,找到FONT_PATH,将DroidSansMono.ttf修改成msyh.ttf。这个msyh.ttf表示微软雅黑中文字体。

     

    在同一个目录下放置msyh.ttf字体文件供程序调用(字体可以在C:WindowsFonts复制)

     

    使用:

     

    1、引入模块

     

    from wordcloud import WordCloud

     

    import matplotlib.pyplot as plt

     

    2、导入文本

     

      准备生成词云的文本word_text =' '.join(wordlist)  #是以空格分隔的字符串

     

    4、生成词云

     

    mywc = WordCloud().generate(wl_split)

     

    5、显示词云

     

    plt.imshow(mywc)

     

    plt.axis("off")

     

    plt.show()

     

  • 相关阅读:
    状压dp大总结1 [洛谷]
    集训日记(暑期第二周)【真正的集训,真正的考试】
    集训日记(暑期第一周)【6.22始】
    集训模拟赛3【啥也不会的一天】
    P2194 HXY烧情侣【Tarjan】
    6.28-集训模拟赛2【水爆但有进步的半天】
    Linux基础管道管理
    Linux基础进程管理优先级
    awk文本处理
    sed流编辑器
  • 原文地址:https://www.cnblogs.com/WYuHan/p/10551241.html
Copyright © 2011-2022 走看看