谷歌发布了语言处理框架syntaxnet升级版,识别率提高了25%

选自research.google

作者: David Weiss等

机器之心编译

参与:李泽南、晏奇


此项升级进一步扩展了 TensorFlow的功能,使这一框架可以进行多层次语言结构的联合建模,而且,它也让 TensorFlow 允许在一个句子或文档处理的过程中动态创建神经网络架构。

谷歌一直致力于改善文字内容的可读性,并已开发了多种工具供人们使用,从生成电子邮件回复到机器翻译,不一而足。去年夏天,谷歌开源了 SynataxNet,一个用于分析和理解语法结构的神经网络框架。它被应用在 TensorFlow 深度学习自然语言处理模型 Parsey McParseface 中——该模型是目前用于分析英语性能最佳的模型。很快谷歌又发布了作为 Parsey 扩展的另外 40 个语言的预训练模型(Parseys Cousins)。谷歌希望通过构建这些系统帮助整个社区,并消除语言隔阂。昨天,谷歌又开源了一些新模型。


SyntaxNet 升级

谷歌发布了 SyntaxNet 的一项重大升级内容。该公司宣称此项升级结合了其在多语种语言理解问题上几乎一年的研究成果,这项成果现已开放给任何感兴趣来搭建文本处理与理解系统的人。升级的核心是一项可以使得对输入语句的丰富变体进行学习成为可能的新技术。具体而言,此项升级扩展了 TensorFlow,使 TensorFlow 可以允许多层次语言结构的联合建模,而且,它也让 TensorFlow 允许在一个句子或文档处理的过程中动态创建神经网络架构。

例如,本次升级使得建立学习用各种字符组成单词的基于字符的模型变得更简单了(比如:把『c-a-t』 组合成 『cat』)。通过执行该过程,模型可以学习相互之间有关联的词,因为它们共享同样的部分(比如:『cats』 是 『cat』 的复数形式,它们共享了一个词干;『wildcat』是 『cat』 的一种)。同样的,Parsey 和 Parseys Cousins 是成系列结构的词汇。所以结果是,模型在训练中被强迫去记住它看见过的单词,并且主要基于语境来决定之前未见过单词的语法功能。

举个例子,看看下面这个句子(语法正确但无意义):

这句话最初是由 Andrew Ingraham 创造的,他曾解释道:「你不知道它在说什么,我也不知道。但我们假设它是英语,我们知道『doshes』被『gostak』给『distimmed』了,我们也知道一个『distimmer』的『doshes』是个『gostak』。」构词学和语法学中的系统模式允许我们猜测每个单词的语法功能——即使这些单词完全不知所云:我们知道『doshes』是『dosh』的复数(就像前面的『cats』一样),而『distim』是 distim 的第三人称单数形式。基于这种分析我们可以得出句子的整个结构,即使我们从未见过这些单词。


ParseySaurus

为了展示升级版 SyntaxNet 提供的新功能,谷歌发布了一套名为 ParseySaurus 的预训练模型。些模型使用上述基于字符的输入表示法,因此可以更好地根据它们的拼写以及上下文内容来预测新单词的含义。ParseySaurus 模型远比 Parseys Cousins 准确得多(减少了 25% 的错误),特别是对于构词复杂的语言如俄语;或黏着语,如日语、韩语和土耳其语。在这些语言中,每个单词可能存在几十种变体,并且在模型训练期间可能永远不会出现这些形式中的大多数——即使是在非常大的语料库中。

例如以下虚构俄语单句,和前面的例子一样,整句仍无意义,但单词的后缀让句子结构有了明确的解释:

即使谷歌的俄语 ParseySaurus 模型从来没有看到过这些单词,它仍可以通过检查构成每个单词的字符序列正确地分析句子。而且在分析时,系统可以解析出单词的多种属性(注意:这里比英语示例中多了一些形态特征)。以下是一个 ParseySaurus 模型分析单句的可视化分析图:

每个正方形代表神经网络中的一个节点,连线代表他们的连接。图左侧的「尾部」显示了将输入作为一个长字符串的模型,他们被间歇地传递到右侧,其中丰富的连接网络显示了将词组成短语并产生句法解析的模型。