词云 语义分割

import collections
import os

import jieba  # 词语切割
import matplotlib.pyplot as plt  # 数据可视化
import numpy as np  # 科学计算
import wordcloud  # 分词
from PIL import Image  # 处理图片
from wordcloud import STOPWORDS, ImageColorGenerator, WordCloud  # 词云,颜色生成器,停止词


def read_stopword(fpath):
    # 读取中文停用词表
    with open(fpath, 'r', encoding='utf-8') as file:
        stopword = file.readlines()
    return [word.replace('\n', '') for word in stopword]


def ciyun():
    with open('C:\\Users\\算法.txt', 'r', encoding='utf-8') as f:  # 打开新的文本转码为gbk
        textfile = f.read()  # 读取文本内容

    # 加载多个停用词表
    path = 'F:\\pythonProject2\\stopwords-master'
    # 两个停用词表是网上下载的
    name_list = ['中文停用词表.txt', '哈工大停用词表.txt']

    stop_word = []
    for fname in name_list:
        stop_word += read_stopword(os.path.join(path, fname))
        # print(stop_word)

    stop_word += 'U'
    stop_word += 'E'
    stop_word += 'D'
    stop_word += 'S'
    stop_word = set(stop_word)

    jieba.load_userdict('F:\\pythonProject2\\stopwords-master\\中文停用词表.txt')
    jieba.load_userdict('F:\\pythonProject2\\stopwords-master\\哈工大停用词表.txt')

    wordlist = jieba.lcut(textfile)  # 切割词语
    space_list = ' '.join(wordlist)  # 空格链接词语

    remove_words = [u'\n', u',', u' ', u'是', u'随着', u'对于', u'对', u'等', u'能', u'都', u'。',
                    u' ', u'、', u'中', u'在', u'.', u'\u3000', u'如果', u'我们',
                    u'需要', 'D', u'E', u'D', 'U', u'S']  #

    object_list = []
    for word in wordlist:  # 循环读出每个分词
        if word not in stop_word:  # 如果不在去除词库中
            if word not in remove_words:
                object_list.append(word)  # 分词追加到列表
                # print(word)

    # 词频统计
    word_counts = collections.Counter(object_list)  # 对分词做词频统计
    word_counts_top10 = word_counts.most_common(10)  # 获取前10最高频的词
    print(word_counts_top10)  # 输出检查

    backgroud = np.array(Image.open('F:\\pythonProject2\\stopwords-master\\color_mask.png'))

    wc = WordCloud(width=1400, height=2200,
                   background_color='white',
                   mode='RGB',
                   mask=backgroud,  # 添加蒙版,生成指定形状的词云,并且词云图的颜色可从蒙版里提取
                   max_words=500,
                   stopwords=stop_word,  # 内置的屏蔽词,并添加自己设置的词语
                   font_path='F:\\pythonProject2\\stopwords-master\\stzhongs.ttf',
                   max_font_size=150,
                   relative_scaling=0.6,  # 设置字体大小与词频的关联程度为0.4
                   random_state=50,
                   scale=2
                   ).generate(space_list)

    image_color = ImageColorGenerator(backgroud)  # 设置生成词云的颜色,如去掉这两行则字体为默认颜色
    wc.recolor(color_func=image_color)

    plt.imshow(wc)  # 显示词云
    plt.axis('off')  # 关闭x,y轴
    plt.show()  # 显示
    wc.to_file('test2_ciyun.jpg')  # 保存词云图


def main():
    ciyun()


if __name__ == '__main__':
    main()

停用词表下载链接

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值