防川
首发于防川

挖掘1000万字知乎答案,我们到底给川普起了哪些外号?

本文同步发表于微信公众号:防川

中国人爱给名人起外号,想想你自己在小学、初中、高中、大学都有过多少个外号?你爱的明星们:周董,小猪,奶茶,苍老师等。我们在提到他们时,使用外号的频率也都大于本名。

中国人还特别爱给外国人起外号,日本是鬼子、印度是阿三、俄国是北极熊(经评论提醒应该是毛子)、韩国是棒子。欧洲的足球明星,美国的篮球明星,也都逃脱不了中国人民的旺盛的想象力。

各国政治人物也是中国人民最爱调侃的对象,金正恩因为胖了点,正好又是金家王朝第三代,于是就被叫成“金三胖”;奥巴马因为长得黑,就被叫成“奥黑”,又因为他貌似亲中的表现,被称为“奥观海”;而普京则因为其铁腕政治手段,当完总统当总理,当完总理再当总统,则被称为“普京大帝”

而美国现任总统特朗普,是一个最近才出现在我们视线中的公众人物。但自从去年他参与到美国总统竞选中来,特朗普在知乎上得到了空前绝后的关注。而特朗普本人又有很强的个人特点,无论是外形,发型还是说话方式,都和以往的美国政客形象大大不同,这让中国人民起外号的心完全静不下来。

我采集了知乎上“2016美国大选”话题下的所有问题(16年11月28日前)和答案(16年12月11日前)。得到了如下的数据集:

而这接近8万条答案的总字数也超过了1000万字,我希望能从中找出中国人给特朗普起的外号。

首先来看一眼这1000万字中的高频词都有哪些。


从上图中已经可以看出特朗普外号的一些端倪。“特朗普”是Trump在中国的官方译名,但是词云的图中显然可以看出,“川普”的使用“特朗普”更为频繁。具体来说,“特朗普”在我们的这些答案中总共出现了19692次,而“川普”出现了45080次,是“特朗普”的两倍多,并且是所有词中出现频率最高的。下图是排名前10的词汇和对应的频数。

知乎在2016年美国总统大选中扮演着一个中文互联网信息观点策源地的角色,因此,特朗普的种种外号也应该在知乎有所体现。为了探索知乎用户究竟给“特朗普“取了哪些外号,我使用了一种比较新,比较时髦的技术word2vec。

word2vec一般被认为是一个自然语言处理的模型,通过训练可以把文本中的单词用K维空间的向量来表示,从而使得单词之间可以进行比较和运算。word2vec在聚类、找近义词、词性分析等方面都有不错的表现。

用word2vec来找一个人的外号,显然是比较合理的。因为word2vec是根据上下文将一个单词表示为一个向量。如果一个人的外号和本名经常被混用,那么他们的上下文应该是差不多的。举个例子来说:

“特朗普代表共和党参选美国总统” “川普代表共和党参选美国总统”

这两个句子都会大量出现在我们的文本中,那么“特朗普”和“川普”的上下文的就非常接近了。

那究竟word2vec的效果如何呢?利用我们采集的知乎回答数据和python的gensim模块,我们训练3个word2vec的模型。这些模型的差别仅在window这个参数上,这个参数用于表示上下文的跨度,分别为5,10和15。

看下结果吧,下图是3个模型中和“特朗普”最接近的20个词

主要的外号有“川普”,“床破”,“老唐”,“唐老壮”“川皇”和“唐总”,而“特普朗”这个应该因为笔误吧,至于“特朗”,“朗普”应该是笔误或者分词器的问题,英文的称呼“Trump”,“trump”以及firstname“唐纳德”也顺利识别出来。

乱入的排名比较靠前其他人包括“桑德斯”,“彭斯”,“奥巴马”。这三个人和“特朗普”都有千丝万缕的关系。桑德斯是希拉里在民主党内的对手,因此在某些语境中和特朗普相似度较高;彭斯则是特朗普竞选搭档的副总统,在某些语境中往往会和特朗普相似度较高;而奥巴马则是特朗普上任的美国总统,相似度较高也是情理之中。

而排名靠前的那个“”,不知道指的是“特朗普”还是“”?

类似的,我们可以看看希拉里和奥巴马的情况。首先是希拉里。

希拉里的情况比较令人担忧,3个模型中,排名第一的都是带有贬义的“希婆”,其他的一些外号有的也带有贬义,例如“老太”,“老妖婆”。不过,一些正常的中性的称呼也被识别出来了,包括“希拉蕊”,“HC”,“希拉里克林顿”,“”,“女克”(我觉得有些贬义)和“Hillary”。

奥巴马的情况如下:

最常用的外号是“奥黑”,这个应该不令人意外。另外,党员“奥观海”这个耳熟能详的名字,也同样出现在三个模型中。

最后word2vec还有一些炫酷的能力。常常被人津津乐道的是我们可以用“King” - ”Man” + ”Woman”得到“Queen”,也就是说"King"-"Man"="Queen"-"Women"。

我们也进行了一些尝试。首先是"川普"+"加州"-"希拉里",结果是

排在前面的是“德州”,“南方”,“深蓝州”等词汇。这个结果算是比较令人满意。因为加州对于希拉里,大概相当于德州对于川普,即

“加州”-“希拉里”=“德州”-“川普”

接着是,"希拉里"+"共和党"-"川普",我们期待能得到“民主党”,因为共和党相对于川普应该等价于民主党相对于希拉里而结果则是:

这就不太能让人满意了,因为GOP也是共和党的意思,我们期待的民主党只排名第二。这有可能是我们的语料不够,也有可能是模型并没有想象的那么夸张。

最后,要对thulac的分词表示惊讶,因为“奥黑”,“唐老壮”这种词,我是没有预先放在词典中的,thulac的分词系统居然能识别,也是令人惊讶的。@刘知远感谢thulac。

我将分词后的数据文件和分析所用的代码放在github上面,大家也可以玩玩。

allahyuko/trumpnickname

本文同步发表于微信公众号:防川

编辑于 2017-04-17

文章被以下专栏收录