前言:
此刻小伙伴们对“python显示中文”大致比较珍视,同学们都需要了解一些“python显示中文”的相关资讯。那么小编在网摘上搜集了一些有关“python显示中文””的相关知识,希望大家能喜欢,朋友们一起来了解一下吧!开发环境Windows 11vs codepython 3.10.7
安装所需模块
使用 `jieba` 进行中文分词
pip install jieba
安装词云制作模块
pip install wordcloud
使用 `PIL`、`numpy` 模块进行词云蒙版图片处理
安装 `wordcloud` 时默认自动安装以上两个模块
文本节选自《背影》
导入所需模块
import jiebaimport refrom wordcloud import WordCloudfrom PIL import Imageimport numpy as npimport matplotlib.pyplot as plt
首先进行分词及统计词频
def count_word(self): # 以读取的方式打开文本文件 with open(self.filename, 'r', encoding='utf-8-sig') as f: # 循环读取文件的每一行,防止因文件过大造成卡顿 for line in f: # 定义一个空列表变量 words,用于依次保存分词后的词语 words = [] # jieba搜索引擎模式进行中文分词 words_lcut_search = jieba.lcut_for_search(line.rstrip('\n')) # print(words_lcut_search) # 用列表生成式把每行的各个词语加入进来 words = [s for s in re.findall("\\w+", str(words_lcut_search))] # 通过循环统计词语出现的次数 for word in words: # 采用累加法计算词语出现次数 self.dict_count[word] = self.dict_count.get(word, 0) + 1
生成词云图
def wordC(self): # 生成词云 # 设置分词空列表 wcLst = [] for keys in self.dict_count.items(): temp = keys wcLst.append(temp) # 空格拼接 newtxt = ' '.join(str(wcLst)) # 使用蒙版图片 # 用photoshop将图片背景改为纯白色,mask生效 mask = np.array(Image.open("heart.png")) wordcloud = WordCloud(mask=mask, font_path="msyh.ttc", background_color='White').generate(newtxt) # 显示词云 plt.imshow(wordcloud) plt.axis("off") plt.show() # 生成词云图片 wordcloud.to_file('词云图.png')
效果如下图:
带词频权重词云图
def wordCWeight(self): freq = self.dict_count # 使用蒙版图片 # 用photoshop将图片背景改为纯白色,mask生效 mask = np.array(Image.open("heart.png")) wordcloud = WordCloud(mask=mask, font_path="msyh.ttc", background_color='White').generate_from_frequencies(freq) # 显示词云 plt.imshow(wordcloud) plt.axis("off") plt.show() # 生成词云图片 wordcloud.to_file('权重词云图.png')
效果如下图:
完整代码
import jiebaimport refrom wordcloud import WordCloudfrom PIL import Imageimport numpy as npimport matplotlib.pyplot as pltclass WordCloudImg: """ 统计中文文本文件中词出现频次,生成词云图片 """ def __init__(self, filename): # 设置需要统计词频的文本文件名 self.filename = filename # 初始化一个字典来保存各单词出现的次数,如 {'背影': 10, '你': 3} self.dict_count = {} def count_word(self): # 以读取的方式打开文本文件 with open(self.filename, 'r', encoding='utf-8-sig') as f: # 循环读取文件的每一行,防止因文件过大造成卡顿 for line in f: # 定义一个空列表变量 words,用于依次保存分词后的词语 words = [] # jieba搜索引擎模式进行中文分词 words_lcut_search = jieba.lcut_for_search(line.rstrip('\n')) # print(words_lcut_search) # 用列表生成式把每行的各个词语加入进来 words = [s for s in re.findall("\\w+", str(words_lcut_search))] # 通过循环统计词语出现的次数 for word in words: # 采用累加法计算词语出现次数 self.dict_count[word] = self.dict_count.get(word, 0) + 1 def top_number(self, num): # 排序前num词语 return sorted(self.dict_count.items(), key=lambda item: item[1], reverse=True)[:num] def wordC(self): # 生成词云 # 设置分词空列表 wcLst = [] for keys in self.dict_count.items(): temp = keys wcLst.append(temp) # 空格拼接 newtxt = ' '.join(str(wcLst)) # 使用蒙版图片 # 用photoshop将图片背景改为纯白色,mask生效 mask = np.array(Image.open("heart.png")) wordcloud = WordCloud(mask=mask, font_path="msyh.ttc", background_color='White').generate(newtxt) # 显示词云 plt.imshow(wordcloud) plt.axis("off") plt.show() # 生成词云图片 wordcloud.to_file('词云图.png') def wordCWeight(self): freq = self.dict_count # 使用蒙版图片 # 用photoshop将图片背景改为纯白色,mask生效 mask = np.array(Image.open("heart.png")) wordcloud = WordCloud(mask=mask, font_path="msyh.ttc", background_color='White').generate_from_frequencies(freq) # 显示词云 plt.imshow(wordcloud) plt.axis("off") plt.show() # 生成词云图片 wordcloud.to_file('权重词云图.png')if __name__ == '__main__': # 生成CounterWord 实例对象 counter_obj = WordCloudImg("test_count_cn.txt") # 调用函数进行统计 counter_obj.count_word() # 取出出现次数最多的前10个词语 top_number_10 = counter_obj.top_number(10) print('test_count.txt', '中出现次数前10的词语统计如下:') for word in top_number_10: print(word[0], '出现:', word[1], '次') # 生成词云图片 counter_obj.wordC() # 生成带权重词云图片 counter_obj.wordCWeight()
标签: #python显示中文