接单日记文本处理之词云生成
Posted A-L-Kun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接单日记文本处理之词云生成相关的知识,希望对你有一定的参考价值。
接单日记(三)文本处理之词云生成
此为一个实验报告,故遵守实验报告的格式。
一、 实验目的
- 熟悉Python第三方库python-docx、wordcloud、jieba库的安装和使用
- 熟悉使用pathlib来获取文件
- 熟悉运用Python封装的思想
- 熟悉使用join方法对字符串进行拼接操作
- 了解字符串的utf-8的编码格式
二、 实验内容
编写一个程序,提取词库里面的所有内容,对其进行分词操作,同时进行词频统计,停用词清洗的操作,最后输出图云到result.jpg中。
三、 程序及结果
1、 运行程序
from docx import Document
from pathlib import Path
from wordcloud import WordCloud
import jieba
font = Path(r"C:\\Windows\\Fonts\\simfang.ttf")
word_dataset = Path("词库.docx")
stop_word = Path("stoplist.txt")
def get_stop_list(stop_word):
with open(stop_word, "r", encoding="utf-8") as f:
return set(f.read().split())
def handle_word_dataset(word_dataset):
str_ = ""
for j in Document(word_dataset).paragraphs:
str_ += j.text
return [w for w in jieba.cut(str_)]
wc = WordCloud(
font_path=str(font),
stopwords=get_stop_list(stop_word),
width=1920,
height=1080,
background_color="white",
max_words=1000,
).generate(" ".join(handle_word_dataset(word_dataset)))
wc.to_file(Path("result.jpg"))
2、 运行结果
本文来自博客园,作者:Steve_Anthony,转载请注明原文链接:https://www.cnblogs.com/liuzhongkun/p/17387615.html
python 在线生成词云
效果图
大体步骤
1 接收请求中的文本,通过结巴分词处理文本。
seg_generator = jieba.cut(text) # 使用结巴分词,也可以不使用 stopwords = pd.read_csv( path +"/stop_words_zh_UTF-8.txt", index_col=False, quoting=3, sep="\\t", names=[‘stopword‘], encoding=‘utf-8‘) # quoting=3全不引用 seg_list = [i for i in seg_generator if i not in stopwords] seg_list = [i for i in seg_list if i != u‘ ‘] seg_list = r‘ ‘.join(seg_list) print seg_list return seg_list
2 生成图片并返回
wc = WordCloud( font_path= path + ‘/simhei.ttf‘,#设置字体 background_color="black", #背景颜色 max_words=2000,# 词云显示的最大词数 #max_font_size=100, #字体最大值 random_state=42, ) # 生成词云, 可以用generate输入全部文本(中文不好分词),也可以我们计算好词频后使用generate_from_frequencies函数 wc.generate(seg_lisg) # wc.generate_from_frequencies(txt_freq) # txt_freq例子为[(‘词a‘, 100),(‘词b‘, 90),(‘词c‘, 80)] # 从背景图片生成颜色值 # wc.to_file("b.png") img = wc.to_image() return img
Python的web架构用的是Django url配置:
url(r‘^wordcloud$‘, word.get),
入口代码:
def get(request): text = "" try: text1 = request.POST[‘text‘] text = text1 except Exception,e: print "not POST" try: text2 = request.GET[‘text‘] text = text2 except Exception,e: print "not GET" print text img = word.getWordCloud(text) #image_data = img.read() rand = str(time.strftime("%Y-%m-%d-%H%M%S", time.localtime(time.time()))) filename = path + "/temp/pic"+ rand +".png" img.save(filename) image_data = open(filename,"rb").read() return HttpResponse(image_data,content_type="image/png")
以上是关于接单日记文本处理之词云生成的主要内容,如果未能解决你的问题,请参考以下文章