文本是Facebook上主要的交流形式。不论是浏览或是从垃圾信息中过滤出感兴趣的内容,理解各种不同的文本对于改进Facebook产品的用户体验都非常重要。
基于这个想法,我们构建了DeepText。它是一个基于深度学习的文本解析引擎,能够按照接近人类的思维处理文本信息,处理的速度高达每秒钟上千篇文章,支持的语言高达20多种。
DeepText利用了多个深度神经网络架构,包括卷积和复发性神经网络,能够在单词和字母级别进行学习。我们使用FbLearner Flow和Torch训练模型。通过FBLearner Predictor平台,点击按钮即可获得模型服务。该服务的基础基础设施易于扩展,提供的模型非常可靠。Facebook的工程师们可以通过DeepText提供的自服务架构轻松构建新DeepText模型。
文本处理包含许多任务,比如将文章分类到篮球板块;识别其中的实体,比如运动员的名字;提取比赛的统计数据以及其它有意义的信息。但是要更加接近人类理解文本的能力,需要教会电脑理解俚语以及如何消除歧义。比如如果某个人说,“I like blackberry”,那么他指的是水果还是手机?
在Facebook上进行文本解析需要处理很多困难的扩展性及语言方面的问题。用传统的NLP技术解决这些问题效果不佳。相比传统的NLP技术,通过深度学习我们能够更好地对多语言提供支持,并且更加高效地处理标签数据。 起初 Ronan Collobert与Yann LeCun在Facebook AI Research发布了论文,DeepText在此技术上提供了实现并在深度学习上进行了扩展。
Facebook是一个真正意义上的全球化社区,因此DeepText需要尽可能多地支持更多种类的语言。传统的NL技术需要大量复杂的工程和语言知识预处理。语言不同要求的处理方式也有差别,比如方言和不通的拼写方式就是最好的例子。通过深度学习,我们能够降低对语言特定知识相关的依赖,系统可以在不需要或者很少的预处理情况下也能够进行学习。这样可以帮助我们快速地实现对多语言的支持,从而将工程开发的工作量实现最小化。
在传统的NLP技巧中,单词会转换为计算机算法能够识别的格式。“brother”这个单词可能标识为ID 4598,而单词“bro”会对应另一个整数,比如986665。这种方式要求每个单词在训练数据中拼写正确,这样才能够被解析。
采用深度学习,我们可以使用“单词嵌入(word embedding)”这样的数学概念,这样就能够记录单词之间的语义关系。因此,只需要进行适当的计算,就能够看到“brother”和“bro”在空间上离得很近。这种表示方式就能够获取更深层次的语义。
使用单词嵌入,我们还能够摈弃表面形式的差异,在不同语言之间理解相同的语义。比如英语和西班牙语的“happy birthday”和“feliz cumpleaños”在同一个嵌入空间里离得非常近。通过把单词和短语映射到一个公共的嵌入空间,DeepText能够构建模型语言无关的模型。
除了上面提到的差别外,书面语言还可以利用无监督学习从单词嵌入中对非标签数据进行学习和提取结构。深度学习提供了一个很好的框架,可以提升这些单词嵌入,使用带标签的较小集合进一步改进。相对传统方式,这是一个明显的优势,后者需要大量人工标签过的数据并且对新任务响应非常困难。很多情况下,作为牺牲标签数据集合的补偿,无监督学习和监督学习的组合能够显著提高性能。
DeepText已经在Facebook一些功能上进行了测试。以Messenger为例,DeepText被AML Conversation Understanding团队用来分析人们可能希望去的地方。这种目的检测可以帮助分析是否需要打车,比如他/她会说:“我刚从出租车上下来”,而不是“我需要搭便车”。
视频: https://code.facebook.com/Engineering/videos/10154132641047200/
我们还开始使用精确性更高、多语言DeepText模型来帮助人们发现他们的目的。例如有人会发帖说:“我想要$200卖掉旧自行车,有人感兴趣吗?”。DeepText能够检测到这个帖子是在卖东西,然后提取一些有用的信息,包括正在卖东西以及东西的价钱。然后,会提示卖家使用Facebook已有的工具更好地达成交易。
DeepText通过对意图、情绪和实体(人物/地点/事件)的提取,结合文本、图片并自动移除垃圾信息的干扰,能够更好的提升Facebook用户体验。许多名人和公众人物使用Facebook与公众交流。这些交流通常会带来成百上千的评论。从这些各种语言的评论中找到高质量且相关度较高的评论是一个很大的挑战。除此之外,DeepText面临的另一个挑战是如何找到相关度或质量最高的评论。
我们将与Facebook AI Research小组一起持续改进DeepText技术及语言。具体的改进有以下几点。
在Facebook上个性化体验最重要的一部分是为人们推荐相关内容。要做到这一点,必须将指定文本对应到一个具体的主题,这就需要提供大量的标签数据。
采用手工方式很难生成这些数据集,于是我们开始尝试使用公共Facebook页面采用半监督的方式生成这样的数据集。很容易想象,这些页面上都是和特定主题相关的帖子。例如,在Steelers页面上的帖子都包含了与Steelers足球队相关的文字。通过这些内容对我们称作PageSpace的通用兴趣分析器,使用DeepText作为底层技术。反过来,这些工作能够进一步分改进Facebook其它功能的文本解析系统,从而提高用户体验。
通常,人们会同步发布图片或视频来描述文字内容。其中的一些场景,需要结合文字和可视化信息理解人们的意图。例如,一个朋友会发布一个自己宝宝的图片,配上“Day 25”这样的文字。图片与文字清晰地表明,这是一条有关家庭的消息。我们与Facebook的视觉内容处理小组共同构建深度学习架构,可以结合文字与可视化输入来理解人们的意图。
我们会继续开发并研究新的深层神经网络架构。双向复发性神经网络(BRNNs)展示了令人振奋的结果。BRNNs旨在通过递归发现单词之间,通过卷积发现位置不变的语义之间上下文依赖关系。我们观察到,BRNNs比常规的卷积或复发性神经网络做分类时错误率更低。某些情况下,错误率能够降低到20%。
将深度学习技术应用到文本解析的过程能够持续改进Facebook产品的用户体验,反之亦然。Facebook上非结构化数据提供了一个独一无二的机会,用多种不同语言对文本解析系统进行自动训练,使得自然语言处理技术的发展能更进一步。
视频: https://code.facebook.com/Engineering/videos/10154132635127200/
原文: Introducing DeepText: Facebook’s text understanding engine
作者:Ahmad Abdulkader, Aparna Lakshmiratan, Joy Zhang
译者:赖信涛,责编:魏伟