做过搜索的同学都知道,分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它的意思。
因此,中文分词技术一直是nlp领域中的一大挑战。Python 中有个比较著名的分词库是结巴分词,从易用性来说对用户是非常友好的,但是准确度不怎么好。这几天发现另外一个库,pkuseg-python,看起来应该是北大的某个学生团队弄出来的,因为这方面没看到过多的介绍,pkuseg-python 的亮点是领域细分的中文分词工具,简单易用,跟现有开源工具相比提高了分词的准确率。
于是我想起用张小龙的3万字演讲做下测试,前几天在朋友圈流传了一张图,采铜统计出张小龙演讲中各个词出现的频率,不知他是怎么统计的,不过作为技术人,我们用更专业的工具来试试会是什么效果。
安装 pkuseg
第一步是将演讲内容下载下来,保存到一个txt文件中,然后将内容加载到内存
我统计了一下,文字总数是32546个。
接下来我们用pkuseg对内容进行分词处理,并统计出现频率最高的前20个词语是哪些。
输出结果:
什么鬼,这都是些啥玩意,别急,其实啊,分词领域还有一个概念叫做停用词,所谓停用词就是在语境中没有具体含义的文字,例如这个、那个,你我他,的得地,以及标点符合等等。因为没人在搜索的时候去用这些没意义的停用词搜索,为了使得分词效果更好,我们就要把这些停用词过去掉,我们去网上找个停用词库。
第二版代码:
打印的结果:
看起来比第一次好多了,因为停用词都过滤掉了,跟采铜那张图片有点像了,不过他挑出来的词可能是从另外一个维度来的,毕竟人家是搞心理学的。但是我们选出来的前20个高频词还是不准确,有些不应该分词的也被拆分了,例如朋友圈,公众号,小程序等词,我们认为这是一个整体。
对于这些专有名词,我们只需要指定一个用户词典, 分词时用户词典中的词固定不分开,重新进行分词。
最后出来的结果前50个高频词是这样的
张小龙讲得最多的词就是用户、朋友、原动力、价值、分享、创意、发现等这些词,用户出现112次,希望39次,朋友31次,这些词正是互联网的精神,如果我们把这些做成词云的话,可能效果会更好
源码以及素材可以在公众号回复 “zxl” 获取
领取专属 10元无门槛券
私享最新 技术干货