关于文章关键字词云的生成

本文教程主要用于用python 生成文章关键字词云图如下:

在这里插入图片描述

在这里插入图片描述

运用的是python 的TF-IDF算法

  • TF算法
TF --某个词语出现的词频率
为了统一数据,进行标准化处理
TF = 词语出现的数量/总的词语数 = 词语数/出现最多的词语数
IDF = log(总样本数/包含该次的样本数 + 1)  +1 是为了不让分母为0 

可以发现,如果一个词越常见,那么分母就越大,逆文档频率就越小越接近0。分母之所以要加1,是为了避免分母为0(即所有文档都不包含该词)的平滑处理。log表示对得到的值取对数(此处为自然对数)
注:如果这个词没有出现在词表中,那么其对应的TF-IDF则为0

上面我们已经介绍完了TF-IDF的计算原理,下面我们再通过sklearn中实现的TfidfVectorizer类方法来做一个具体的文本处理示例

# -*- coding: utf-8 -*-
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import re
def model(s):
    
    tf = TfidfVectorizer(stop_words=None, token_pattern=r'(?u)\b\w\w+\b', max_features=20)
    weight = tf.fit_transform(s)
    word = tf.get_feature_names()
    vocab = tf.vocabulary_.items()
    print(len(s))
    vocab = sorted(vocab, key= lambda v: v)
    dir = {}
    print(weight)
    for i in vocab: 
        print(i)
        dir[i[0]] = i[1]
    print(dir)
    return dir
def showImg(weight):
    wordClould = WordCloud(font_path='./SimHei.ttf', background_color='white', max_font_size=70)
    wordClould.fit_words(weight)
    plt.imshow(wordClould)
    plt.xticks([])
    plt.yticks([])
    plt.show()
if __name__ == '__main__':
    article = ""
    with open('./article.txt', encoding= "utf-8") as f:
        article = f.read()
    article = re.sub("[1-9\,\。\:\.\、\·\—\“\”]","", article)
    seg_list = jieba.cut(article, cut_all = False)
    arr = []
    for i in seg_list:
        arr.append(i)
    
    print(arr)
    weight = model(arr)
    showImg(weight)
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东哥爱编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值