句法是指句子的各个组成部分的相互关系,句法分析分为句法结构分析(syntactic structure parsing)和依存关系分析(dependency parsing)。句法结构分析用于获取整个句子的句法结构,依存分析用于获取词汇之间的依存关系,目前的句法分析已经从句法结构分析转向依存句法分析。

依存语法通过分析语言单位内成分之间的依存关系揭示其句法结构,主张句子中核心动词是支配其它成分的中心成分,而它本身却不受其它任何成分的支配,所有受支配成分都以某种依存关系从属于支配者。

在20世纪70年代,Robinson提出依存语法中关于依存关系的四条公理:

  1. 一个句子中只有一个成分是独立的;
  2. 其它成分直接依存于某一成分;
  3. 任何一个成分都不能依存与两个或两个以上的成分;
  4. 如果A成分直接依存于B成分,而C成分在句中位于A和B之间,那么C或者直接依存于B,或者直接依存于A和B之间的某一成分;

一,依存关系

依存关系是一个中心词与其从属之间的二元非对称关系,一个句子的中心词通常是动词(Verb),所有其他词要么依赖于中心词,要么通过依赖路径与它关联。

1,依存关系

依存结构是加标签的有向图,箭头从中心词指向从属,具体来说,箭头是从head指向child,从该解析树可以看出,每个Token只有一个Head。

2,关系标签

标签表示从属的语法功能,名词性的标签是:

  • root:中心词,通常是动词
  • nsubj:名词性主语(nominal subject)
  • dobj:直接宾语(direct object)
  • prep:介词
  • pobj:介词宾语
  • cc:连词

其他常用的标签:

  • compound:复合词
  • advmod:状语
  • det:限定词
  • amod:形容词修饰语

二,解析依存关系

SpaCy能够快速准确地解析句子的依存关系,并且具有丰富的API用于导航依存关系树,SpaCy使用head和child来描述依存关系中的连接,识别每个Token的依存关系:

  • token.text:token的文本
  • token.head:当前Token的Parent Token,从语法关系上来看,每一个Token都只有一个Head。
  • token.dep_:依存关系
  • token.children:语法上的直接子节点
  • token.ancestors:语法上的父节点
  • _pos:词性
  • _tag:词性

让我使用SpaCy来对句子进行依存分析:

import spacy

nlp = spacy.load('en')
doc = nlp( "spaCy uses the terms head and child to describe the words" )
for token in doc:
print('{0}({1}) <-- {2} -- {3}({4})'.format(token.text, token.tag_, token.dep_, token.head.text, token.head.tag_))

打印每个Token的依存关系和head节点,箭头表示从属关系,得到的结果是:

spaCy(NNP) <-- nsubj -- uses(VBZ)
uses(VBZ) <-- ROOT -- uses(VBZ)
the(DT) <-- det -- head(NN)
terms(NNS) <-- compound -- head(NN)
head(NN) <-- dobj -- uses(VBZ)
and(CC) <-- cc -- head(NN)
child(NN) <-- conj -- head(NN)
to(TO) <-- aux -- describe(VB)
describe(VB) <-- xcomp -- uses(VBZ)
the(DT) <-- det -- words(NNS)
words(NNS) <-- dobj -- describe(VB)

也可以使用display来显示依存关系,在浏览器中输入 http://localhost:5000 显示依存结构:

import spacy
from spacy import displacy nlp = spacy.load('en')
doc = nlp( "spaCy uses the terms head and child to describe the words" )
displacy.serve(doc, style='dep')

参考文档:

Complete Guide to spaCy

SpaCy Dependency Parse

Transaction Replication6:Transaction cleanup的更多相关文章

  1. [转]How to nest transactions nicely - "begin transaction" vs "save transaction" and SQL Server

    本文转自:http://geekswithblogs.net/bbiales/archive/2012/03/15/how-to-nest-transactions-nicely---quotbegi ...

  2. spring Existing transaction found for transaction marked with propagation 'never' 解决

    先在申明事务中配置了所有的事务 <!--配置事物传播策略,以及隔离级别--> <tx:advice id="txAdvice" transaction-manag ...

  3. 事务复制5: Transaction and Command

    事务复制使用 dbo.msrepl_transactions 和 dbo.MSrepl_commands 存储用于数据同步的Transaction和Command.在replication中,每个co ...

  4. [WCF编程]12.事务:Transaction类

    一.概述 .NET2.0在命名空间System.Transactions下提供了Transaction类,它表示所有.NET事务管理器使用的事务. [Serializable]public class ...

  5. Tidb数据库报错:Transaction too large

    Tidb是一个支持ACID的分布式数据库,当你导入一个非常大的数据集时,这时候产生的事务相当严重,并且Tidb本身对事物的大小也是有一个严格的控制. 有事务大小的限制主要在于 TiKV 的实现用了一致 ...

  6. EOS源码分析:transaction的一生

    最近在处理智能合约的事务上链问题,发现其中仍旧有知识盲点.原有的认识是一个事务请求会从客户端设备打包签名,然后通过RPC传到非出块节点,广播给超级节点,校验打包到可逆区块,共识确认最后变为不可逆区块. ...

  7. 事务:Transaction详解

    1.事务概念: 一组sql语句操作单元,组内所有SQL语句完成一个业务,如果整组成功:意味着全部SQL都实现:如果其中任何一个失败,意味着整个操作都失败.失败,意味着整个过程都是没有意义的.应该是数据 ...

  8. Entity Framework 6.0 Tutorials(6):Transaction support

    Transaction support: Entity Framework by default wraps Insert, Update or Delete operation in a trans ...

  9. HDU - 6201:transaction transaction transaction(最长路)

    Kelukin is a businessman. Every day, he travels around cities to do some business. On August 17th, i ...

随机推荐

  1. CustomUI Direct3D9_Sample

    刚开始建这个项目的时候编译器报了很多Link2019的错误. 后来添加了一些lib文件才解决,参考    缺少.lib文件导致的Link2019 解决方案汇总 ==================== ...

  2. Android 学习笔记之三—— 音效的使用

    在开发手电筒应用的处理音效的过程中,看网上使用的是MediaPlayer,因为音效一般都比较短,所以这里使用的是SoundPool,如下: SoundPool soundPool=new SoundP ...

  3. Android自定义折线图

    老师布置了个作业:http://www.cnblogs.com/qingxu/p/5316897.html 作业中提到的 “玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动.” ...

  4. 使用神经网络来识别手写数字【译】(三)- 用Python代码实现

    实现我们分类数字的网络 好,让我们使用随机梯度下降和 MNIST训练数据来写一个程序来学习怎样识别手写数字. 我们用Python (2.7) 来实现.只有 74 行代码!我们需要的第一个东西是 MNI ...

  5. Redis集群最佳实践

    今天我们来聊一聊Redis集群.先看看集群的特点,我对它的理解是要需要同时满足高可用性以及可扩展性,即任何时候对外的接口都要是基本可用的并具备一定的灾备能力,同时节点的数量能够根据业务量级的大小动态的 ...

  6. asp.net mvc3登录验证

    1,在web.config中  <system.web>节点下面增加: <authentication mode="Forms"> <forms na ...

  7. spark 入门整理

    1.第一个概念:RDD RDD(Resilient DistributedDatasets) ,弹性分布式数据集,是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记 ...

  8. 免费SVN服务器笔记

    前言: 笔者有个项目,需要类似公司一样进行源代码管理.鉴于很多团队一样,对资金资源限制,只能寻找免费的SVN服务器 于是在BD上搜索一大推资料,很多都是google的,但是GG经常无法正常访问,给项目 ...

  9. 多线程导出大规模excel文件

    文章有点水,和前几篇没有太大区别,但是单线程处理大文件导出会非常耗时间,用到多线程才能更加合理的利用资源.大文件也可能会超出excel工作表范围.这里也有相应处理 参考:用DataGridView导入 ...

  10. PreparedStatement的应用

    package it.cast.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql ...