这一学期将会每周推送一篇关于NLP(自然语言处理)的学习笔记供大家参考~在这里既希望大家能够有所收获,也希望笔者能够一直坚持下去不咕咕咕…
这一节里面我们轻松一下~来看一个好玩一点的动手项目。
在分析一段文本中,我们经常会用到一个常用的技巧,即分析某一个特定的词语出现的频率,或提取文本中出现频率较高的几个关键词。这个技巧就是我们今天要介绍的词频统计(TF-IDF)。
一个词语出现的频率高低一定程度上体现了一个词语在这段文本中的“地位”。
一个简单的例子就是小说,如果一个人物的名字在书中只出现过1次,那么我们基本上已经可以断定,这位老兄基本上就是一个不知名的吃瓜群众了;而如果一个人名反复出现,那么在研究这部作品的时候一定不能错过这个人物。
同样的,词频统计同样活跃在各种各样的赋权问题上。研究表明,现如今超过83%的线上推荐系统用的都是词频统计技术[1]。
了解完了词频统计的用处,我们再来看一下它是怎么实现的吧。我们以《三国演义》为例,研究其中人物出场的次数的多少。
这里提供一份可以供读者参考的模板代码。该代码使用Python编写,其读取txt格式的《三国演义》并使用jieba库来实现词频统计的功能。
那么到底《三国演义》中谁出场次数最多呢?
我们来看一下运行结果(仅前10名):
曹操:953张飞:358
吕布:300 赵云:278
刘备:277 孙权:264
司马懿:221周瑜:217
袁绍:191 马超:185
大家有没有猜到呢?
当然,这个简单的程序还有这许多可改进的地方,比如“卧龙”、”诸葛亮“、”亮“等很多称呼都可以用来指代孔明,而我们的程序却把这些分在了不同的人身上。
读者有兴趣可以自行研究如何改进~
接下来,我们来研究一个衍生而来的小问题。
有了每个词语的词频,我们应该如何直观地反应这些词语之间的相对关系呢?在这里我们引入词云图技术,作为一个直观的数据可视化做法。
所谓词云图,顾名思义,就是用图的方式展示词语的常用程度。使用频率高的词就会占有更大的空间,更容易被人们所发现,而使用频率低的词语则只会占有一小部分空间。
在现实操作中,选择一段想要的文本以及一张模板背景图片,Python中wordcloud库中的函数就能够生成按照模板图片的形状生成一副词云图辣。
同样的在这里我们给出Python的样例代码,这次我们研究的对象是余华的代表作《活着》:
最后的就能得到我们想要的成果啦~
PS:大家猜一猜展示的词云图是以什么为模板生成出来的呢?
(´´ิ∀´ิ`)
作者:刘泽禹
编辑:赵俊宁
领取专属 10元无门槛券
私享最新 技术干货