中文文本分析(2)--词频统计与词云


处理对象:已经做好分词准备的List
例如:
[[‘今晚’, ‘吃’, ‘五花肉’, ‘土豆’, ‘盖浇饭’],
[‘茄子’, ‘盖浇饭’,‘好吃’],
[‘盖浇饭’, ‘辣味’, ‘真香’, ‘土豆’]]

1、 需要的包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud

2、流程

词频统计
关键字提取
词云制作

2.1 词频统计

sentence=[['今晚', '吃', '五花肉', '土豆', '盖浇饭'],
          ['茄子', '盖浇饭','好吃'], 
          ['盖浇饭', '辣味', '真香', '土豆']]
          
def count_word(word_list):
    word_result=[]
    for sen in word_list:
        for word in sen:
            word_result.append(word)
    words_df = pd.DataFrame({'word':word_result})
    #按照关键字groupby分组统计词频,并按照计数降序排序
    words_stat = words_df.groupby(by = ['word'])['word'].agg({np.size}) 
    words_stat=words_stat.reset_index().sort_values(by=['size'],ascending=False)      
    return words_stat
    print(count_word(sentence)

输出:
word count
5 盖浇饭 3
3 土豆 2
0 五花肉 1
1 今晚 1
2 吃 1
4 好吃 1
6 真香 1
7 茄子 1
8 辣味 1

2.2 关键字提取

def Topic_word(word_list,num):
   #list中每行词语大于Num才进行关键字提取
    result=[]
    for sen in word_list:
        if len(sen) > num:
            keywords = "  ".join(jieba.analyse.extract_tags(",".join(word for word in sen) , topK=num))
            sperate_word = keywords.split("  ")
        else:
            sperate_word = sen
        result.append(sperate_word)
    return result 
    
print(Topic_word(sentence,3))

输出:
[[‘盖浇饭’, ‘五花肉’, ‘土豆’],
[‘茄子’, ‘盖浇饭’, ‘好吃’],
[‘盖浇饭’, ‘真香’, ‘辣味’]]

2.3 词云制作

def my_word_cloud(word_list):
    words_stat = count_word(word_list)
    ziti = 'C:/windows/Fonts/simhei.ttf' #字体地址
    wordcloud=WordCloud(font_path=ziti,scale=5,background_color="white",max_font_size=80) 
    #scale代表像素,若需要清晰的图片可加大该值,也需要考虑电脑计算能力,可以加到40自行感受一下
    word_frequence = {x[0]:x[1] for x in words_stat.head(5).values} #其中head()内的数字可自定义 
    wordcloud=wordcloud.fit_words(word_frequence)
    plt.imshow(wordcloud) #词云展示
    plt.axis('off')
    wordcloud.to_file(r'wordcloud_1.jpg') #保存词云图片

输出:
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值