莫烦 Python 的原版程序码: https://github.com/MorvanZhou/NLP-Tutorials
我修改过的版本: https://gitlab.com/graduate_lab415/nlp/-/blob/master/main.py
今天要来介绍绘制语料库模型分布状况的 Heatmap,成果图大概会长这样
认真观察图片,以词的部分来看,可以发现越常出现的词,会呈现 浅色+多格;少出现的词会呈现 深色+少格。
以一个句子来看,每个有出现在句中的词,会呈现深浅不一的颜色,其中颜色越深的部分,代表这个句子中越重要的词。
TF-IDF 假设出现越多次的词越不重要
plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = False
def show_tfidf(tfidf, vocb, filename):
# [n_vocab, n_doc]
plt.imshow(tfidf, cmap="YlGn", vmin=tfidf.min(), vmax=tfidf.max())
plt.xticks(np.arange(tfidf.shape[1]), vocb, fontsize=6, rotation=90)
plt.yticks(np.arange(tfidf.shape[0]), np.arange(1, tfidf.shape[1] + 1), fontsize=6)
plt.tight_layout()
plt.savefig("./visual/results/%s_%d.png" % (filename, calendar.timegm(time.gmtime())), format="png", dpi=500)
plt.rcParams['font.family'] = 'AR PL UKai CN'
plt.show()
在执行的过程中,其实遇到一些问题,所以这段程序码是根据莫烦 Python 的范例修改的。
由於我的语料库是中文为主,所以使用预设字体时遇到中文缺字很严重的状况,几乎全都变成方框。後来参考了这篇文章 centos下python使用matplotlib绘图出现中文乱码,修改了预设字体後,才能正常显示。
BTW,我的环境是 Ubuntu 20.04
另外,还有另一个问题,一开始我用来画 Heatmap 的资料是整个语料库,就变成用 matplot 的小视窗可以看到完整版,但截图下来所有的字就会全挤在一起,可读性很差,所以後来才改成只用第三类的资料来画。
最後,为了可以保存每次执行生成的图片,不会被洗掉,我修改了档名的格式,可以依当下的 timestamp 生成,就不会重复了。
画图的部分满有趣的,平常只看数据,不一定看得出词权重的关系,一旦画成了 Heatmap,可以更视觉化的了解 TF-IDF 的意义。
<<: Day 19 - 在SQL server 建立Table以及设计资料表
>>: 卡夫卡的藏书阁【Book20】- Kafka - KafkaJS 消费者 2
前言 今天要将 RecipeFeaturedView 中的图片变成可点开的, 点开後会显示相应的 D...
串流处理的应用场景近年来越来越常见,尤其是IOT产业的蓬勃发展,加上硬体技术的发展,越来越多的即时资...
参考网站:Keras官方指南 根据上面的参考网站,可以做出基本的类神经网路。 首先要先有基本...
千丝万缕就像风一样的吹过,但总要抓住想要的那一丝一缕。 《iT邦帮忙铁人赛的观点》(以下简称铁人赛)...
一个基於主机的IDS可以监视并通过安装加密的网络通信中分析活性剂在端点上。一个基於网络的IDS,依靠...