• 中文词频统计与词云生成


    本次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2822

    一、中文词频统计

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

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

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

    pip install jieba

    import jieba

    jieba.lcut(text)

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

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

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

    参考词库下载地址:https://pinyin.sogou.com/dict/

    转换代码:scel_to_text

    5. 生成词频统计

    6. 排序

    7. 排除语法型词汇,代词、冠词、连词等停用词。 

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

    9. 生成词云。

     

    二、实现

    1、本文下载了余华的《活着》,放于huozhe.txt中

    2、读取文本

    mytext = open('huozhe.txt',encoding='UTF-8').read()

    3、安装jieba

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

    jieba.add_word('福贵')
    jieba.add_word('家珍')
    jieba.add_word('凤霞')
    jieba.add_word('有庆')
    jieba.add_word('二喜')
    jieba.add_word('苦根')

    5. 生成词频统计

    '''分割出词汇'''
    words = list(jieba.cut(mytext))
    wordDict={}
    
    '''统计频率次数'''
    wordSet=set(words)
    for w in wordSet:
        if len(w)>1:
            wordDict[w] = words.count(w)

    6. 排序

    '''排序'''
    wordList = list(wordDict.items())
    wordList.sort(key=lambda x:x[1],reverse=True)

    7. 排除语法型词汇,代词、冠词、连词等停用词。

    ci=['我们','知道','看到','自己','起来','什么','他们','一个','看着','没有','看看','就是','怎么','还是','这么','觉得']
    for c in ci:
            mytext = mytext.replace(c, "")

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

    '''输出top20'''
    for i in range(20):
        print(wordList[i])
    
    '''保存为csv文件'''
    pd.DataFrame(data=wordList).to_csv('My story.csv',encoding='utf-8')

    9. 生成词云

    10、整体代码

    import jieba
    import pandas as pd
    
    mytext = open('huozhe.txt',encoding='UTF-8').read()
    
    jieba.add_word('福贵')
    jieba.add_word('家珍')
    jieba.add_word('凤霞')
    jieba.add_word('有庆')
    jieba.add_word('二喜')
    jieba.add_word('苦根')
    
    ci=['','','',' ','我们','知道','看到','自己','起来','什么','他们','一个','看着','没有','看看','就是','怎么','还是','这么','觉得']
    for c in ci:
            mytext = mytext.replace(c, "")
    
    '''分割出词汇'''
    words = list(jieba.cut(mytext))
    wordDict={}
    
    '''统计频率次数'''
    wordSet=set(words)
    for w in wordSet:
        if len(w)>1:
            wordDict[w] = words.count(w)
    
    '''排序'''
    wordList = list(wordDict.items())
    wordList.sort(key=lambda x:x[1],reverse=True)
    
    '''输出top20'''
    for i in range(20):
        print(wordList[i])
    
    '''保存为csv文件'''
    pd.DataFrame(data=wordList).to_csv('My story.csv',encoding='utf-8')

    11、运行截图

  • 相关阅读:
    xScrapBook
    使用STL仿函数和判断式来降低复杂性并改善可读[转]
    C++ 开源程序库[转]
    资源泄漏的悲剧
    Excel导入的HDR=YES; IMEX=1详解
    largeint.lib
    共享刚写的简单DirectUI库 只实现了思想
    document.body.scrollTop的值总为零的解决办法
    CDCHandle谨慎使用
    C++中std::tr1::function和bind 组件的使用
  • 原文地址:https://www.cnblogs.com/sanshuishu/p/10579594.html
Copyright © 2020-2023  润新知