SyntaxNet 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
SyntaxNet 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: Apache 2.0
开发语言: Python 查看源码 »
操作系统: 跨平台
开发厂商: Google
收录时间: 2016-05-15

SyntaxNet 是一个框架,即学术圈所指的SyntacticParser,他是许多NLU系统中的关键组件。在这个系统中输入一个句子,他会自动给句子中的每一个单词 打上POS(part-of-Speech)标签,用来描述这些词的句法功能,并在依存句法树中呈现。这些句法关系直接涉及句子的潜在含义。

举一个很简单的例子,看下面这个句子“Alice saw Bob”的依存句法树:

在这个结构中,Alice和Bob被编码为名词,Saw是动词。只要的动词saw 是句子的根,Alice是saw的主语,Bob是直接宾语(dobj)。和期待的一样,Paesey  McParseface能正确地分析这一句子,也能理解下面这个更加复杂的例子:

句子:Alice, who had been reading about SynataxNet, saw Bob in the hallwayyesterday

在 这个句子的编码中,Alice 和 Bob的分别是saw的主语和宾语,Alice由一个带动词“reading”的关系从句来修饰,而saw则由时态“yesterday”来修饰。依存句 法树中的语法关系让我们可以轻易地找到不同问题的答案,比如,Alice看见了谁?谁看到了Bob?Alice正在读的是什么?或者Alice是在什么时 候看到Bob的。

为什么让计算机正确处理句法分析如此困难? 

句 法分析如此困难的一个主要问题是,人类语言具有显著的歧义性。包含 20 到 30 个单词的中等长度的句子会具有数百、数千甚至数万种可能的句法结构,这样的情况并不少见。一个自然语言句法分析器必须能够搜索所有这些结构选择,并找到给 定语境下最合理的那个结构。作为一个非常简单的例子,“Alice drove down the streetin her car”这个句子就具有至少两种可能的依存分析:

第 一种分析是对应这句话的(正确)解释,按照这种解释,爱丽丝在汽车里进行驾驶,而汽车位于街道上;第二种分析对应于一种对这句话的(荒诞但仍然可能的)解 释,按照这种解释,爱丽丝在街道上驾驶,而街道位于汽车之内。之所以会产生这种歧义,是因为“in”这个介词既可以用来修饰“drove(驾驶)”也可以 用来修饰“street(街道)”。上面这个例子是所谓的“介词短语附着歧义”的一个实例。 

人 类在处理歧义方面有超强的能力,以至于人们甚至注意不到句子有歧义。而这里的挑战是,如何能让计算机做到同样好。长句中的多重歧义会共同造成句子的可能结 构数量的组合爆炸。通常,这些结构中的绝大多数都极其不合理,但它们仍然是可能的,句法分析器必须以某种方式来丢弃它们。 

SyntaxNet 将神经网络运用于歧义问题。一个输入句子被从左到右地处理。当句子中的每个词被处理时,词与词之间的依存关系也会被逐步地添加进来。由于歧义的存在,在处 理过程的每个时间点上都存在多种可能的决策,而神经网络会基于这些决策的合理性向这些彼此竞争的决策分配分数。出于这一原因,在该模型中使用 Beam Search (集束搜索)就变得十分重要。不是直接取每个时间点上的最优决定,而是在每一步都保留多个部分性假设。只有当存在多个得分更高的假设的时候,一个假设才会 被抛弃。下图将展示的,是“I booked a ticket to Google”这句话经过从左到右的决策过程而产生的简单句法分析。

而 且,正如我们在论文中所描述的,十分重要的一点是,要把学习和搜索紧密整合起来才能取得最高的预测准确度。Parsey McParseface 和其他 SyntaxNet 模型是我们用谷歌的 TensorFlow 框架训练过的最复杂的网络结构。通过利用谷歌支持的 Universal Treebanks 项目中的数据,你也可以在自己的机器上训练句法分析模型。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

SyntaxNet 的相关博客

机器学习资源收集、索引

机器学习框架 百度PaddlePaddle tensorflow github Models and examples built with TensorFlow Deeplearning4j (DL4J)中文版...

TensorFlow资源整理

什么是TensorFlow? TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表...

2016 年机器学习大事记回放

2016 年,人工智能发展火热。作为人工智能一个重要分支的深度学习,也正在受到大家越来越多的关注。2016 年是深度学习高速发展...

https://github.com/jtoy/awesome-tensorflow 清单

https://github.com/jtoy/awesome-tensorflow TensorFlow - A curated list of dedicated resources http://tensorflow.org A...

ubuntu Tensorflow object detection API 开发环境搭建

https://blog.csdn.net/dy_guox/article/details/79111949 luo@luo-All-Series:~$ luo@luo-All-Series:~$ source activate t2...

Github | 深度学习框架有哪些?

点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia | 本文为联盟学习笔记 计算...

那些令人惊艳的TensorFlow扩展包和社区贡献模型

随着TensorFlow发布的,还有一个models库(仓库地址:https://github.com/tensorflow/models),里面包含官方及社群所发布的一些...

TensorFlow与PyTorch对比

用TensorFlow还是PyTorch?从TensorFlow开始学起还是PyTorch?在一年前,这个问题毫无争议,当然是TensorFlow. 但时过境迁,现...

我想向你介绍NLP,小哥哥你想听听嘛?

原文地址点这里!https://towardsdatascience.com/introduction-to-nlp-5bff2b2a7170 这是头图 自然语言处理(NLP)是计算机科...

十个主题,最全的优秀 TensorFlow 相关资源列表

一个精心挑选的有关 TensorFlow 的实践 、库和项目的列表。全网最全!

SyntaxNet 的相关问答

还没有任何问答,马上提问

评论 (5)

加载中
打分: 力荐
算法是不分语种的,用什么样的语种数据训练,得到的模型就是对应语种的
2018/08/24 16:44
回复
举报
这玩意有 Java 版本吗? #SyntaxNet#
2016/05/15 10:18
回复
举报
阿拉伯文能处理吗? #SyntaxNet#
2016/05/15 18:02
回复
举报
太难懂了…………学习中…… #SyntaxNet#
2016/05/28 09:47
回复
举报
这玩意能处理中文吗? #SyntaxNet#
2016/06/27 19:03
回复
举报
更多评论
5 评论
232 收藏
分享
返回顶部
顶部