知乎中的“近义词”(二):让电脑理解答案的主题

知乎中的“近义词”(二):让电脑理解答案的主题

前两天我们做了一个非常简单的小实验,让电脑能自动鉴别出知乎中的“近义词”(知乎中的近义词 - 挖掘知乎里有趣的东西 - 知乎专栏,经指正也许叫相关词更好些)。比如希拉里的“近义词”是特朗普,微软的“近义词”是苹果等等。这篇文章主要想演示,其实仅仅凭借这个简单的技术,我们已经能让电脑理解一个答案的主题了。换言之,电脑看完一个答案以后,仅仅通过近义词的相关知识,就有能力辨别出这个答案是在说政治,还是美食,还是医学,或者是计算机等等。

鉴别主题这个东西是非常重要的,它可以让知乎变得聪明很多。对答案来说,它可以帮助我们筛选干货贴或是爆照贴,从而改进排序;对问题来说,它可以自动建议话题标签,甚至自动重定向问题;对用户来说,它可以帮助个性化每个人看到的时间线,推送的广告,甚至每个人可以看到不同的知乎日报,不同的答案排序。知乎一大问题是现在内容越来越多,仅凭被动的浏览很可能会与自己真正感兴趣的高质量内容擦肩而过。但一旦我们有了让电脑自动鉴别答案主题和质量的能力,就等于让每个人都有了个24x7不断为你发掘有趣内容的小秘书,当它发现你可能感兴趣的东西的时候就自动推送给你。这样可以让你看到的知乎是你期待的“那一个”知乎,不论是娱乐向还是学习向都会高效很多。

先看一下demo:

知乎答案分类

在文本框里面输入想要分类的答案的内容,点击确定,就可以看结果啦。我们先给你填了一个例子,方便你测试。目前这个系统只能在长度适中(不能只有一两句话),主题明确的时候才能给出靠谱的结果。面对单纯抖机灵爆照向的答案会大概率懵逼。。。如果能把复制答案的时候知乎自动添加的“答案来自知乎,地址http://”等等去掉的话,准确率就更高啦。下面是一个示例截图。


安利了半天,我们是怎么让电脑理解答案的主题呢?很简单,我们现在有了近义词,如果仔细观察一下的话,会发现,同一个领域的近义词往往是联系在一起的。比如胸腔的近义词有括约肌,而括约肌又和肌腱联系在一起,接下来是胫骨。也就是说,如果我们把相互之间靠的很近的词放在一起的话,我们可能就可以自然而然得出“主题”这个东西了。类似于下面的图。想象一下红色的词是和医学相关的,绿色的词是和生物相关的,蓝色的词是和化学相关的。也许他们之间没有明显的界限,但是通过运行一些现成的机器学习的程序(术语叫聚类),我们可以大概的得出一个这一块是医学,这一块是生物,这一块是化学的印象。当然,聚类算法本身只知道红色的这一坨是一个领域的,但并不会知道它和医学相关。我们最终还需要把每个颜色里面的词给打印出来,通过人来判断,哦这个类别是医学这样。

那么我们聚类的结果长什么样呢?我们用几GB的文本训练了一个130多万词的word2vec近义词模型。然后把其中出现的频率尤其高的21万个词挑出来做了聚类。下面是一些类的典型词汇:

  • 番茄汁 椰奶 鸡油 核桃仁 白萝卜 乌梅 椰奶 番茄汁 昆布 猪血,这是个吃货的类
  • 调解书 委托书 公司章程 合同书 工商登记 叛国罪 取保候审 行政拘留 法办 治安拘留,这是行政法律向的词汇
  • 模式匹配 变量名 语法分析 XML 词法 URL 剪贴板 文件名 超链接 索引,码农在哪里?让我听到你们的声音!
  • 氮气 氢气 氟利昂 制冷剂 甲烷 波函数 自旋 实部 静电力 惯性力 这是我们数理化生自然科学类

还有很多其他类。我们一共整理了15个类别,在demo里只演示了一部分。因为有一些类别比较抽象,类似:

  • 真傻 狗屁 他妈的 TMD 好赖 求赞 跪谢 别打我 谢谢 嘿嘿,这明显是个水贴撕逼类
  • 放声大哭 垂头丧气 惊魂未定 默不作声 一声不吭 千篇一律 俗不可耐 不知所谓 不堪入目 平淡无奇,看到这个类的时候我都被电脑的文化水平震惊了,这叫文化人类
  • 小受 碧池 男孩子 小姑娘 女流氓,这。。只能叫羞羞的类了。。

注意在整个过程中,除了最后我们扫了一眼聚类出来的十几个类别,给他们起了个名字以外,我们没有用到任何人工标定。这是一件非常不可思议的事情。等于是电脑在看了非常非常多的中文以后,自己总结出来,知乎上似乎可以分为几个话题。最后只要我们告诉它1号话题叫美食,2号话题叫行政法律,它就能“看懂”知乎的主题了!同时这个“主题”的分布本身也是一个重要的机器学习的feature,可以支撑很多应用。这大大降低了应用的门槛,等于是一坨数据,直接拿来我们就能给你加上“智能”,什么文本质量评价,主题鉴别,搜索推荐,广告匹配,水军遏止,全部给你来一套。而这些智能应用,就是这个专栏下面要给知乎加上的东西。

文章被以下专栏收录