笔者近期到总公司跟班学习一段时间,每天收到分公司上报的各类信息,分公司业务相同,互补干涉,笔者需要鉴别分公司上报信息的真实性和重要性。
在与总公司石总交流后,认为有多家上报同一群体的信息,那么该类信息一般较为重要,且真实性很高。有了业务场景后,我试图搭建模型,将业务流转化为数据流。
兴化吴奇隆.png
直接上结果图吧!
业务逻辑:上报的信息——分类——统计。
数据逻辑:抽取条目——分词——求权重,得结果,优化后,可以以词云的形式展现。
使用的编程软件:python。
分词技术:TF-IDE,意思为:词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现。相比TEXTRANK,TF-IDF显然更适合。
制图库:wordcloud、matplotlib.
**条目,我以网易、腾讯、新浪三家的头条新闻条目为实例,公司的条目不适合操作。
#以下为部分条目示例:目录为C:\Users\Administrator\Desktop\三大新闻网站新闻.txt
国家移民管理局:逐步恢复办理内地居民赴澳门旅游签注
华融原董事长赖小民受审 被控受贿近18亿、重婚并育有二子*
#需要的库
import matplotlib.pyplot as plt
import jieba.analyse
from wordcloud import WordCloud
第一步,选择库已经好了,第二部就是使用jieba来分词,其中extract_tags就是TF-IDF。权重这块,我设置的是隐藏,只出结果,分词个数topK为20个。
#1.读出条目
text = open(r"C:\Users\Administrator\Desktop\三大新闻网站新闻.txt").read()
#2.把使用textrank进行分词
cut_text=jieba.analyse.extract_tags(text,topK=20,withWeight=False,\
allowPOS=('ns','n','vn','v'))
#3.因为分词后的为一个容器,需要空格拼接起来或者for遍历
result = " ".join(cut_text)
result为分词后的结果,如果需要美观的话,可以接下来制作词云。
# 4.生成词云
wc = WordCloud(
font_path='simhei.ttf', #字体路劲
background_color='white', #背景颜色
width=1000,
height=600,
max_font_size=50, #字体大小
min_font_size=10,
mask=plt.imread(r'C:\Users\Administrator\Desktop\中国心.jpg'), #背景图片
max_words=50
)
wc.generate(result)
wc.to_file('兴化吴奇隆.png') #图片保存
#5.显示图片
# plt.figure('兴化吴奇隆') #图片显示的名字
plt.imshow(wc)
plt.axis('off') #关闭坐标
plt.show()
不足之处,如果在公司运行,部分专有名词,需要倒入字典,在总公司的下属经营库应该能找到,到时候,可以把他们放进去。
jieba.load_userdict(file_name) #file_name为自定义词典的路径
我使用的原图为:
中国心.jpg
很多小伙伴不需要自定义词云形状,我提供一段简单的代码。
import jieba.analyse
import wordcloud
txt=open(r"C:\Users\Administrator\Desktop\三大新闻网站新闻.txt").read()
w=wordcloud.WordCloud(width=1000,font_path="C:\Windows\Fonts\simfang.ttf",mask=open(r'C:\Users\Administrator\Desktop\中国心.jpg'),height=700)
w.generate(" ".join(jieba.analyse.extract_tags(txt,topK=20,allowPOS=('ns','n','vn','v'))))
w.to_file("兴化吴奇隆.png")
网友评论