词法与依存关系树

analyzeSyntax 方法返回给定文本语言结构的详细信息。Natural Language API 就文本中的每个词法单元提供其内部结构信息(词法)及其在句子(语法)中所起作用的信息。

词态学研究单词内部结构。词态学侧重于如何排列或修饰单词内的元素(词根、根词、前缀、后缀等)以形成不同的含义。举例来说,英语通常在名词末尾添加“-s”或“-es”表示复数,在动词中添加“-d”或“-ed”表示过去式。在形容词中添加后缀“-ly”变成副词(例如,“happy”[形容词]和“happily”[副词])。

Natural Language API 使用词态分析来推断单词的语法信息。

语言之间的语态学差异很大。在诸如俄语之类的语言中,词尾表示单词在句子中的角色(例如,“книга”[书籍 - 主格]变为“книгу”[宾格]充当动词的直接宾语)。这意味着单词顺序变化可以不改变句子的含义,尽管单词顺序不同确实会影响在语境中的适切性。英语和普通话等语言都缺少表示语法格的词缀,更依赖句子中的词序来表示单词各自的作用。因此,语态分析在很大程度上取决于源语言,以及对于该语言支持哪种语态学的了解。

语法研究短语和句子结构。语法和词态共同表示语法关系,其中不同的语言以不同的方式区分它们之间的分工。举例来说,俄语使用词缀表示扮演直接宾语的角色(“книгу”中的“у”),而英语使用词序,其中直接宾语紧跟动词 (read the book)。

analyzeSyntax 响应在 partOfSpeech 字段中返回词法信息并在 dependencyTree 字段中返回单词之间的语法关系。

词性

在语法请求中,词性和词法信息在响应的 partOfSpeech 字段中返回。partOfSpeech 字段包含一组子字段,其中具有词性 (POS) 信息以及更明确的词法信息。下面列出了这些子字段。

  • tag 使用粗粒度 POS 标记(名词、动词等)表示词性,并提供顶层语法信息。如果您希望为后续语言分析创建模式和/或减少歧义(例如,将“train”标记为名词而非动词),则 POS 标签很有用。

  • number 表示一个单词的语法数量。在英语中,在可数名词中添加后缀“-s”表示一个以上(例如,“dog + s”表示多于一只狗)。如果不带复数后缀,则通常称为单数形式。有些语言,如阿拉伯语,还有双数的概念。此字段可能包含下列值:

    • SINGULAR 表示一个。
    • PLURAL 表示多个数量。
    • DUAL 表示恰好两个。
  • person 确定一个单词的语法人称。在英语中,“I/me”是第一人称单数,指代说话者(或作者),而“you”以及“she/her 和 he/him”分别指代受众(听话者)和其他人。此字段可能包含下列值:

    • FIRST 人称表示说话者。
    • SECOND 人称表示目标受众,即听话者。
    • THIRD 人称表示非说话者/非听话者。
    • REFLEXIVE_PERSON 指示,比方说,主宾相同,如“The cat licked itself”,其中“-self”加在代词后表示反身代词。在俄语和日语中,反身代词是一个独立的代词。(例如,“John loves himself”在俄语中为“Джон любит себя”,其中 себя 是不分性别的“self”;在日语中为“Tarō wa zibun o aisuru”(罗马化版本),其中“zibun”是不分性别的“self”。)请参见反身代词
  • gender 表示名词的语法性别。此字段可能包含下列值:

    • FEMININE 语法性别
    • MASCULINE 语法性别
    • NEUTER 语法性别
  • case 表示一个单词的语法格及其在短语或句子中的角色。此字段可能包含下列值:

    • ACCUSATIVE指示及物动词的直接宾语。
    • ADVERBIAL指示形容词的副词形式。请注意,英语使用不同的词来表示副词 ("well") 和形容词 ("good")。 在英语中,形容词加后缀“-ly”确实能衍生出副词(例如,“happy”与“happily”),但并不被视为“格”。
    • COMPLEMENTIVE 格(中文)指示使采用连接结构的可能、描述性或结果性表达意义完整所需的词。
    • DATIVE指示间接宾语,即接收直接宾语的指示物。在英语中,间接宾语通常通过介词“to”表示,如短语“He gave the ball to Bobby”,其中“Bobby”是间接宾语,是球的接收者。下面是个俄语示例:Иван дал книгу маше(伊万把书给了玛莎),其中“ -e”表示“маше”是间接宾语,而玛莎是书的接收者。
    • GENITIVE指示所属关系。请注意,英语通常使用“-'s”词缀指示所有,而不是使用所有格。短语末尾可以附加“-'s”词缀(例如,“[The man who ran the bill up]’s wife paid a dear price for his excess.”)。而在此俄语示例中,“-а”将“Антон-”标记为属格:“Гдекнига Антона?”(安东的书在哪里)。俄语中,所有格亦作为“几个”、“少数”等词语的补语出现。例如:Зимой здесь мало снега(“冬天这里很少下雪”)中,“-a”使“снег-”(雪)成为了所有格,因为它是“мало”(“小”)的补语。不涉及所有格。
    • INSTRUMENTAL指示名词是否是完成某个动作的工具。英语句子“He opened the door with a key”在俄语中为“он открыл дверь ключом”,其中“-om”附加在“ключ” (key) 后面表示工具格。
    • LOCATIVE指示指代位置的单词。英语没有方位格。
    • NOMINATIVE与动词的主语有关。在英语中,句子的主语是通过词序指示的。在句子“The girl won the race”中,短语“the girl”是主语,出现在动词“won”的左边。在俄语中,девушка (the/a girl) 可以出现在动词之前或之后:“девушка выиграла гонку”或“гонку выиграла девушка”,其中动词是 выиграла (won)。
    • OBLIQUE指示一个单词用作动词或介词的宾语。
    • PARTITIVE指示一个单词的“部分”或缺乏特定的同一性。英语中部分词的例子有“three of my friends”。在俄语中为“трое моих друзей”,其中“трое”指“three of”(而非“три друга”,其中“три”指“three”)。
    • PREPOSITIONAL指示介词宾语。
    • REFLEXIVE_CASE 指示动词的主语与宾语相同。大多数语言不使用反身格,因为这种用法是通过使用特殊的反身代词来表示的(例如“himself”,“myself”等)。
    • RELATIVE_CASE(中文)指示将名词与动词或形容词连接起来的关系从句的补语化成分。示例:工作[的]地方,便宜的餐馆。
    • VOCATIVE通常在谈话时指示用于称呼某人或某事的名词。
  • tense 表示动词的语法时态,指示动词的提及在时间中的位置。请注意,tense 不同于 aspect,后者亦涉及动词与时间的关系,但侧重于时间流动特征,而不是其位置。在许多语言中,IMPERFECTPLUPERFECT 时态更准确地指代时和式的特定组合。此字段可能包含下列值:

    • CONDITIONAL_TENSE 是更为流行的语态术语“条件语气”的另一种说法。(请参阅下面的 CONDITIONAL_MOOD。)
    • FUTURE 表示将来发生的动作。请注意,在英语中,将来时通常通过在动词短语前添加单词“will”来表示。
    • PAST 表示过去发生的动作。
    • PRESENT 表示目前正在发生的动作。
    • IMPERFECT 表示动作发生在过去,但没有在该时态的参照系下完成。请注意,在英语中,未完成时通常通过在过去式中添加动词的动名词形式来表示,如“I was walking”。未完成时事件发生在过去,但与过去时的区别是没有完成。
    • PLUPERFECT 表示过去发生的动作,并且在那个时态参照系下完成了。举例来说,“I had walked”发生在过去,但在过去式的参照系下也是完成的。
  • aspect 表示动词的语法式,它表现时间流动。tense 侧重于动词在时间内的位置,aspect 与之不同,它侧重于发生时的时间流动特性。此字段可能包含下列值:

    • PERFECTIVE表示因为完全发生在过去或将来而“完成”的事件。
    • IMPERFECTIVE表示因为是连续的或者重复发生而未完成的事件。
    • PROGRESSIVE表示连续的事件。进行式通常被视为较常见的未完成式(也包括重复)的特例。

  • mood 表示动词的语法语气,语气指示对标的动作的态度。此字段可能包含下列值:

    • CONDITIONAL_MOOD 表示不一定的动作。请注意,在英语中,动词形式不是有条件的;而是通过将“would”与动词不定式结合起来指出有条件的行为。
    • IMPERATIVE 通过第二人称表示命令或请求。
    • INDICATIVE 表示事实的陈述,更常见的名称是“已然语气”。
    • INTERROGATIVE 表示疑问。
    • JUSSIVE 通过第一或第三人称表示命令或请求。英语并没有弱祈使语气,尽管以真正或暗示性的“Let us”开头的劝告表达了这种弱祈使语气。
    • SUBJUNCTIVE 表示与行为有关的不确定性的质量,也称为“非已然”语气(与“已然”陈述语气形成对比)。英语没有特定的虚拟语气;而是用“want”、“wish”、“hope”等词语表达了虚拟语气的意思。
  • voice 表示动词的语法语态,即动作与主语和/或宾语之间的关系。此字段可能包含下列值:

    • ACTIVE 语态指示正在执行动作的主语的动作。
    • CAUSATIVE 语态表示正对主语产生影响的动作。在英语中,没有直接的使役语态;这种使役是通过使用动词“make”来表示的,如“Mom made me go to school”。
    • PASSIVE 语态表示正对主语产生影响的动作。许多情况下,不说出或不知道动作的执行者。
  • reciprocity 表示一个单词的(通常是代词的)互指性,互指性指代词指代句子中其他地方出现的名词短语。此字段可能包含下列值:

    • RECIPROCAL 指示代词是互指的。
    • NON_RECIPROCAL 指示代词并非互指的。
  • proper 表示名词是否属于专有名称的一部分。请注意,许多专有名称由几个词组成;如果此短语被检测为专有名称,则每个词法单元亦会被检测为专有。(例如,专有名词“Wrigley Field”中的“Wrigley”和“Field”会将其专有特性设置为 PROPER。此字段可能包含下列值:

    • PROPER 表示此词法单元属于专有名称的一部分。
    • NOT_PROPER 表示此令牌不属于专有名称的一部分。
  • form 表示不能完美归入上文所述一组常见形式(tensemoodperson 等)的其他词法形式。大多数这些形式都针对特定语言。此字段可能包含下列值:

    • ADNOMIAL(韩语/日语)指示修饰名词短语的词尾(韩语)或动词(日语)。举例来说:을먹는사람[吃米饭的人]和書く人[书写的人]。
    • AUXILIARY(韩语)指示连接两个相邻的主和辅谓词的词尾:밥을 먹게 하다[使(某人)去吃]
    • COMPLEMENTIZER(韩语)指示连接两个或更多不同短语的词尾:밥을 먹고 물을 마신다 [ (I) 吃饭并喝水]
    • FINAL_ENDING(韩文/日文)指示附在短语或句子末尾完成短语或句子的词尾。 例如:밥을 먹는다 [(我)吃饭] 和手紙を書く [写信]。
    • GERUND(韩语/日语)表示名词化动词或形容词的词尾:(韩语)밥먹기[吃饭]或将动词与各种助动词连接起来的词尾:(日语)書きたい[想写]
    • REALIS(日语)用连词“ば”表示有条件和虚拟语气形式:書けば[如果(我)写]。
    • IRREALIS(日语)表示连接动词与负动词,被动动词或使役助动词: 書かない [别写],書かれる [将被写],書かせる [请(某人)写]。
    • ORDER(日语)表示命令动词,类似于祈使动词:書け! [写!]
    • SPECIFIC(日语)表示上述六类不能涵盖的特殊形式。这种形式最常见的用法是通过在此形式上添加后缀从形容词派生为名词:かわいさ[可爱]
    • SHORT(俄语)表示短式形容词或分词
    • LONG(俄语)指示长式形容词或分词,与上述 SHORT 式不同。

请注意,Natural Language API 提供每个令牌(而不是每个短语)的语态信息。可能不支持跨越字词边界的语态结构。

依存关系树

在语法请求中,词性和词法信息在响应的 partOfSpeech 字段中返回。

针对提供给 Natural Language API 进行语法分析的文本中的每个句子,该 API 构造描述该句子语法结构的依存关系树。语法信息在响应的 dependencyEdge 字段中返回。

一个句子的依存关系树图,摘自约翰·F·Kennedy 的就职演讲如下所示:

就每个词法单元而言,dependencyEdge 元素标识它修饰的其他词法单元(在 headTokenIndex 字段中)以及此标记与其头词法单元(在 label 字段中)之间的语法关系。例如,以下是短语“your country”(您的国家/地区)(第一次出现)中的词法单元“your”(您的)的 dependencyEdge 元素:

      "dependencyEdge": {
        "headTokenIndex": 4,
        "label": "POSS"
      },

此元素指示“your”修饰第五个词法单元(headTokenIndex 使用了一个从零开始的偏移)并且它是一个所有格修饰语。

每个依存关系树都包含一个 ROOT 元素 ("label": ROOT),它对应句子中的主要动词。在上面的例子中,ROOT 元素碰巧是句子中的第一个单词 ("headTokenIndex": 0)。对于 ROOT 单词“Ask”(问),headTokenIndex 是其自己的索引。

尽管解析树不跨越句子边界,但 Natural Language API 会在整个文本中使用从零开始的偏移值来索引句子和令牌。

Natural Language API 使用适用于所支持的语言的一组通用依存关系来标记语法关系。 标签描述如下。在示例文本中,“Head”(头)和标签出现在它们所适用的令牌的下方。

标签 说明
UNKNOWN 未知关系
ABBREV 头令牌的缩写。

British Broadcasting Company (BBC)
                     Head     ABBREV
ACOMP 用作补语的形容词短语(如动词的宾语)。这种关系具体来说包括具有形容词谓语的“be”系动词结构。

The book looks heavy.
         Head  ACOMP

The book is   heavy.
         Head ACOMP
此标记亦适用于非参数形容词修饰语和带形容词谓词的提升结构

She arrived sad.
    Head    ACOMP

I consider John intelligent.
  Head          ACOMP
ADVCL 修饰动词的状语从句,如时间从句、后果、条件从句或目的从句。

The accident happened as the night was falling.
             Head                      ADVCL

If you know who did it, you should tell the teacher.
       ADVCL                       Head

He talked to him in order to secure the account.
   Head                      ADVCL
ADVPHMOD 状语短语修饰词(日语)
ADVMOD 用于修饰单词含义的(非从句)副词或副词短语。

Genetically modified food.
ADVMOD      Head

less   often
ADVMOD Head

About  200 people came to the party.
ADVMOD Head
AMOD 用来修饰名词短语含义的形容词短语。

Sam eats red  meat.
         AMOD Head

Sam took out a 3 million dollar loan.
                         AMOD   Head
APPOS 紧靠另一个名词短语右侧的名词短语,第二个短语用于定义或修饰第一个短语。

Sam, my brother, arrived.
Head    APPOS

Bill (John’s cousin)
Head         APPOS
ATTR 由复合动词引导的名词性短语。请注意,“ATTR”与“ACOMP”不同,因为依附者是名词性短语,而不是形容词。

He is  a doctor.
   Head ATTR

She resembles her mother.
    Head          ATTR
疑问句中,疑问代词或疑问短语中的名词与“ROOT”处于“ATTR”关系。

What is  your name?
ATTR Head     NSUBJ

What breed is   the dog?
     ATTR  Head     NSUBJ
用名词性谓词提升结构也使用“ATTR”关系。

I consider John an intelligent person.
  Head                         ATTR
AUX 非主动词,例如情态助动词或迂回时态中的“be”、“do”或“`have”形式。不包括使用“be”作为被动结构中的助动词。

Reagan has died.
       AUX Head

He should leave.
   AUX    Head
AUXPASS 被动语态的从句中的非主动词。

Kennedy has been    killed.
        AUX AUXPASS Head

Kennedy was/got killed.
        AUXPASS Head
CC 连接的一个元素与并列连词的关系。连词的一个连接(通常第一个)视为连词的头。

Bill is big  and honest.
        Head CC

They either ski  or snowboard.
            Head CC

Bill went to Florida but Jane traveled to Alaska.
     Head            CC
CCOMP 具有内部主语的独立从句,其功能类似于动词或形容词的宾语。

He says that you like  to swim.
   Head          CCOMP

I am certain that he did   it.
     Head            CCOMP

I admire the fact that you are   honest.
             Head          CCOMP
CONJ 通过“and”或“or”等并列连词连接的两个元素之间的关系。关系的头是第一个合取,其他连词通过“conj”关系依赖于该关系。

Bill is big and honest.
        Head    CONJ

They either ski  or snowboard.
            Head    CONJ

We have apples, pears, oranges, and bananas.
        DOBJ    CONJ   CONJ         CONJ
CSUBJ 从句的从句性语法主语;即主语本身就是一个从句(下面例子中的“What she said”(她所说内容))。

What she said  makes sense.
         CSUBJ Head
CSUBJPASS 被动从句的从句性语法主语。

That she lied was suspected by everyone.
         CSUBJ    Head
DEP 系统无法确定两个单词之间更精确的依存关系。

Then, as if  to show that he could, . . .
         DEP    Head

travel agency florence kentucky
       Head   DEP
DET 名词短语的头与其限定词之间的关系。

The man is here.
DET Head

Which book do you prefer?
DET   Head
DISCOURSE 感叹词以及与句子结构没有明确关联的其他话语元素,采用表达性方式的情况除外。示例有:感叹词(“oh”(哦)、“uh-huh”(啊哈)、“'Welcome”(欢迎))、填充语(“um”(嗯)、“ah”(啊))和话语标记(“well”(好吧)、“like”(像)、“actually”(实际上),但“you know”(您知道)不是)。

Iguazu is   in Argentina :)
       Head              DISCOURSE
DOBJ 名词短语是动词的([宾格](https://en.wikipedia.org/wiki/Accusative_case))宾语。

She gave me a raise.
    Head      DOBJ

They win  the lottery.
     Head     DOBJ
EXPL 重复名词。在英语中,“it”和“there”有如下一些用法:在外位语结构中使用时存在“there”和“it”。当名词无法满足谓词的语义角色时,采用虚指或重复名词。在采用虚指词的语言中,它们可以放置在主语和直接宾客位置。

There is   a ghost in the room.
EXPL  Head   NSUBJ

It   is clear that we should decline.
EXPL Head
GOESWITH 链接文本中一个单词的分开两个部分。
IOBJ 充当动词间接宾语[[与格]名词短语(https://en.wikipedia.org/wiki/Dative_case))。

She gave me   a present.
    Head IOBJ   DOBJ
MARK 引导限定或非限定从属从句的单词,如“That”或“when”。头为从属从句的头。

Forces engaged in fighting after insurgents attacked.
                           MARK             Head

He says that you like to swim.
        MARK     Head
MWE 用于组合的两个关系(与“NN”一起)中的一个。它用于某些固定的语法化表达,其中多个虚词起一个虚词的作用。多字词表达以扁平的头初始结构注释,其中表达中的所有单词使用“MWE”标签修饰第一个单词。

I like dogs as   well as  cats.
            Head MWE  MWE

He cried because of  you.
         Head    MWE
MWV 多字词口头表达。
NEG 否定词与它所修饰的词之间的关系。

Bill is    not a scientist.
     Head  NEG

Bill is no  scientist.
        NEG Head
NN 用来修饰头名词的任何名词。

phone book
NN    Head

oil price futures
NN  NN    Head
NPADVMOD 用作状语的名词短语。

The director is 65 years    old.
                   NPADVMOD Head

Six feet     long
    NPADVMOD Head

Shares eased a fraction.
       HEAD    NPADVMOD

The silence is itself   significant.
               NPADVMOD Head

90% of Australians like him, the most     of any country.
                   Head          NPADVMOD
NSUBJ 充当从句语法主语的名词短语。

Clinton defeated Dole.
NSUBJ   Head

The baby  is   cute
    NSUBJ Head
NSUBJPASS 充当被动从句语法主语的名词短语。

Dole       was defeated by Clinton.
NSUBJPASS      Head
NUM 用数量修饰名词的含义的任何数字短语。

Sam ate three sheep.
        NUM   Head
NUMBER 数字短语的一部分。

I have four   thousand sheep.
       NUMBER Head
P 从句中的任何标点符号。
PARATAXIS 并列关系(来自希腊语的“平列”)是单词(通常是句子的主谓词)与其他并排放置的元素之间的关系,与头名词不具有明确的对等、从属或参数关系。并列是一种类似话语的对等。

Let's face it we're annoyed.
Head                PARATAXIS

The guy, John said,     left early in the morning.
              PARATAXIS Head
PARTMOD 分词修饰语
PCOMP 当介词的补语是从句或介词短语(偶尔是副词短语)时使用。

We have no information on   whether users are   at risk.
                       Head               PCOMP

They heard about you missing classes.
           Head      PCOMP
POBJ 介词或副词“here”和“there”之后的名词短语的头。

I sat on   the chair.
      Head     POBJ

What does CPR stand for?
POBJ                Head
POSS 物主限定词或[所有格](https://en.wikipedia.org/wiki/Genitive_case)修饰词。

their offices
POSS  Head

Bill’s clothes.
POSS   Head
POSTNEG 动词后否定助词
PRECOMP 谓词补语
PRECONJ 出现在开头与连词一起使用的词,例如“either”、“both”、“neither”。

Both    the boys and the girls are here.
PRECONJ     Head
PREDET 位于名词短语限定词之前并修饰其意义的单词。

All    the boys are here.
PREDET     Head
PREF 前缀
PREP 用于修饰动词、形容词、名词乃至其他介词含义的任何介词短语。

I saw a cat  in   a hat.
        Head PREP

I saw  a cat with a telescope.
  Head       PREP

He is responsible for  meals.
      Head        PREP
PRONL 动词和动语素之间的关系(法语)
PRT 动词小词。

They shut down the station.
     Head PRT

He would not put  up  with it.
             Head PRT
PS 关联或所有标记
QUANTMOD 量词短语修饰语
RCMOD 从名词到动词的连接,引导一个关系从句。

I saw the man  you love.
          Head     RCMOD

the book that you bought
    Head          RCMOD

Bell, a company which is based in LA, makes and distributes computer products.
        Head             RCMOD
RCMODREL 关系从句中的补语化成分(中文)
RDROP 前面无谓词的省略号(日语)
REF 指代(印地语)
REMNANT 用于省略号。

John won bronze, Mary silver, and Sandy gold.
         Head         REMNANT           REMNANT
REPARANDUM 表示会话修补中的不连贯覆写。

Go to         the righ- to   the left.
   REPARANDUM           Head
ROOT 句子的根。在绝大多数情况下,它是一个动词。
SNUM 指定数字单位的后缀(日语)
SUFF 后缀
TMOD 光杆名词短语成分,通过指定时间来修改该成分的含义。“TMOD”捕获时间点和持续时间;它不捕获重复(“两次”,会是“NPADVMOD”)。

Last night, I swam in the pool.
     TMOD     Head
TOPIC 主题标记(中文)
VMOD 以动词不定式开头的从句。

Berries gathered on this side of the mountain are sweeter.
Head    VMOD

He sat  in the armchair reading the morning newspaper.
   Head                 VMOD

I have nothing to say  to them.
       Head       VMOD
VOCATIVE 标记文本中面向的对话参与者(在电子邮件和新闻组发布中常见)。

Anna,    can you bring a tent?
VOCATIVE         Head
XCOMP 没有自己的主语的从句补语,其提及由外部主语决定。

He says that you like to swim.
                 Head    XCOMP

I am ready to leave.
     Head     XCOMP
SUFFIX 名称后缀
TITLE 职位名称
AUXCAUS 使役助动词(日语)
AUXVV 助动词(日语)
DTMOD Rentaishi(名词前修饰语)
FOREIGN 外来词
KW 关键字
LIST 一系列可比项目列表
NOMC 名词性从句
NOMCSUBJ 名词性从句主语
NOMCSUBJPASS 名词性从句被动语态
NUMC 数字修饰词组合(日语)
COP 系动词(西班牙文)
DISLOCATED 错位关系(针对前移/主题化元素)
ASP 式标记
GMOD 所有格修饰语
GOBJ 所有格宾语
INFMOD 不定式修饰语
MES 衡量
NCOMP 名词的名词性补语

有关依从关系树的更多信息,请参阅通用依从关系树库项目。 此外,多语言处理的通用依存关系注释包含用于解读此依存关系树的方法的背景信息。

解析语法分析响应

下面的伪代码提供对语法分析响应执行迭代操作时使用的通用模式:

index = 0
  for sentence in self.sentences:
    content  = sentence['text']['content']
    sentence_begin = sentence['text']['beginOffset']
    sentence_end = sentence_begin + len(content) - 1
    while index < len(self.tokens) and self.tokens[index]['text']['beginOffset'] <= sentence_end:
      # This token is in this sentence
      index += 1