ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python3.6 基于Pycharm实现中文分词、去停用词、词云可视化

2019-02-15 10:00:31  阅读:1421  来源: 互联网

标签:20 top 样本 python3.6 词云 words Pycharm 分词 词为


python3.6 基于Pycharm实现中文分词、去停用词、词云可视化

可视化词云的时候遇到了中文不显示的问题,解决方法代码中有标注。

import glob
import random
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud


# 数据读取
def get_content(path):
    with open(path, 'r', encoding='utf8', errors='ignore') as f:
        content = ''
        for line in f:
            # 去掉每句话开头和结尾的空格
            line = line.strip()
            content += line
        return content


# 定义一个高频词函数
def get_if(words, top=10):
    tf_dic = {}
    for w in words:
        # 遍历words中的每一个词切片,以词为键,出现的次数为值存储在字典中
        tf_dic[w] = tf_dic.get(w, 0) + 1
    return sorted(tf_dic.items(), key=lambda x: x[1], reverse=True)[:top]


def stop_words(path):
    with open(path, 'r', encoding='utf-8', errors='ignore') as f:
        print(line.strip() for line in f)
        return [line.strip() for line in f]


if __name__ == '__main__':

    # 获取txt文件
    files = glob.glob('./chinese_english')

    # 读取所有文件的内容存在corpus的列表中
    corpus = [get_content(x) for x in files]

    # 获取一个0到corpus长度的整数随机数
    sample_inx = random.randint(0, len(corpus))

    # 使用jieba精确模式分词,
    split_words = list(jieba.cut(corpus[sample_inx]))
    # stop_words('./stop_words.txt')
    split_words = [x for x in jieba.cut(corpus[sample_inx]) if x not in stop_words('./stop_words.txt')]

    # 打印随机选取的样本
    print('样本之一: ' + corpus[sample_inx])

    # 打印随机选取的样本的分词情况
    print("\n----------------------->开始分词")
    # print('样本分词结果: ' + '  '.join(split_words))
    for word in split_words:
        print('样本分词结果: ' + word)

    # 统计显示高频词
    print("\n---------------------------------->统计分词结果")
    # print('样本的top(10)词为: ' + str(get_if(split_words)))
    for i in get_if(split_words):
        print('样本的top(10)词为: ' + str(i))

    word_cloud = " ".join(split_words)
    my_wordcloud = WordCloud(font_path='simfang.ttf', collocations=False).generate(word_cloud)

    plt.imshow(my_wordcloud)
    plt.axis("off")
    plt.show()

 

部分输出结果如下

样本分词结果: 新鲜
样本分词结果: 烤面包
样本分词结果: 味道
样本分词结果: 某
样本分词结果: 一座
样本分词结果: 房里
样本分词结果: 飘
样本分词结果: 出来
样本分词结果: 也许
样本分词结果: 是
样本分词结果: 微风
样本分词结果: 轻拂
样本分词结果: 树叶
样本分词结果: 声音
样本分词结果: 或者
样本分词结果: 是
样本分词结果: 晨光
样本分词结果: 照射
样本分词结果: 轻轻
样本分词结果: 飘落
样本分词结果: 秋叶
样本分词结果: 上
样本分词结果: 方式
样本分词结果: 请
样本分词结果: 你们
样本分词结果: 寻找
样本分词结果: 东西
样本分词结果: 并且
样本分词结果: 记住
样本分词结果: 它们
样本分词结果: 吧


------------------------------>统计分词结果

样本的top(20)词为: ('class', 3)
样本的top(20)词为: ('一个', 3)
样本的top(20)词为: ('一些', 3)
样本的top(20)词为: ('放学', 3)
样本的top(20)词为: ('东西', 3)
样本的top(20)词为: ('I', 3)
样本的top(20)词为: ('you', 3)
样本的top(20)词为: ('你们', 3)
样本的top(20)词为: ('人', 3)
样本的top(20)词为: ('它', 3)
样本的top(20)词为: ('也许', 3)
样本的top(20)词为: ('way', 3)
样本的top(20)词为: ('or', 3)
样本的top(20)词为: ('it', 3)
样本的top(20)词为: ('very', 2)
样本的top(20)词为: ('school', 2)
样本的top(20)词为: ('with', 2)
样本的top(20)词为: ('when', 2)
样本的top(20)词为: ('over', 2)
样本的top(20)词为: ('things', 2)

词云

 

标签:20,top,样本,python3.6,词云,words,Pycharm,分词,词为
来源: https://www.cnblogs.com/RHadoop-Hive/p/10381887.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有