形態論と依存関係ツリー

形態論とは、単語の内部構造と、単語の形成および変更の仕組みについて研究したものです。形態論は、1 つの単語の構成要素(語幹、語素、接頭辞、接尾辞など)がどのように配置または変更されて、さまざまな意味を持つようになるかに注目しています。Natural Language API は、提供された単語について、形態素解析を利用して文法情報を推測します。

形態論は構文とは別のものであることに注意してください(相互に影響し合うことはあります)。たとえば、英語の未来形は「I will get my umbrella」のように、動詞の前に単語「will」を付加することで表現されます。一方、形態論的には「will」も「get」も単語自体は変化していないので、単語自体が未来形を示しているわけではなく、未来形は構文規則で示されています。ただし、言語によっては単語を直接変更して未来形動詞とするものもあります(数多くあります)。

Natural Language API 内では、形態素解析自体が 1 つのトークンに限定されている場合のみ、文法に従う文脈が、単語 / トークンの形態素解析に影響を与えることがあります(ただし、固有名詞は単語境界を越えて認識できる場合があります)。

形態論情報は、構文解析レスポンスの partOfSpeech フィールドで返されます。また、単語間の構文関係は構文解析レスポンスの dependencyTree フィールドで返されます。

品詞

構文要求内では、品詞と形態論情報はレスポンスの partOfSpeech フィールドで返されます。partOfSpeech フィールドには、より明示的な形態論情報に加えて、品詞(POS)情報が含まれる一連のサブフィールドも含まれます。このサブフィールドについては以下をご覧ください。

形態論は言語によって大幅に異なります。単語の末尾が変化することで意味が変わるスペイン語などの言語は、形態学上の特長が多く、単語の配置と構文に多く依存している英語などの言語は、形態学上の特長は比較的少ない言語と言えます。たとえば、英語の名詞のほとんどは格を示す形式が変わらない(人称代名詞の主格、属格、対格を除く)ため、明確な形態学上の格を失っています。その結果、形態素解析は、ソース言語と、その言語の中でサポートされる形態論の理解度に大きく依存します。

  • tag: 品詞が大まかな POS タグ(NOUN、VERB など)で示され、最上位の表層構文情報が提供されます。POS タグは、パターンを作成したり、以降の言語分析のために曖昧さを取り除いたりするのに役立ちます(「train」に「NOUN」または「VERB」のタグを付けるなど)。

  • number: 単語の単数 / 複数を区別する文法上の数を示します。たとえば、英語では、通常、接尾辞「s」が名詞の複数と単数を区別するために使用されます。アラビア語などの一部の言語には、両数の概念もあります。このフィールドには次の値が含まれることがあります。

    • SINGULAR(単数): 1 つの数を示します。
    • PLURAL(複数): 複数の数を示します。
    • DUAL(両数): 2 つの数を示します。
  • person: 事象と話し手との関係を意味する、単語の文法上の人称を示します。英語では、人称は話し手(一人称)、話し手の相手(二人称)、その他(三人称)を区別するため名詞で頻繁に用いられます。このフィールドには次の値が含まれることがあります。

    • FIRST(一人称): 一人称(話し手)を示します。
    • SECOND(二人称): 二人称(話し手の相手)を示します。
    • THIRD(三人称): 会話の外部にいる「その他」の人称を示します。
    • REFLEXIVE_PERSON: 再帰代名詞の使用を示します。
  • gender: 名詞の文法上の性別を示します。このフィールドには次の値が含まれることがあります。

    • FEMININE: 文法上の男性
    • MASCULINE: 文法上の女性
    • NEUTER: 文法上の中性
  • case: 単語の文法上の格とその単語を含む文との関係を示します。英語では一般的に、通常は格によって伝えられる情報が語順で示されるため、明白な形態学上の格はあまり多くないことに注意してください。このフィールドには次の値が含まれることがあります。

    • ACCUSATIVE(対格)は、他動詞の直接目的語を示します。
    • ADVERBIAL(副詞格)は、形容詞の副詞形を示します。英語では、明確な副詞格を使用するよりも、副詞(「well」)と形容詞(「good」)を区別するために別の語を使用しています。
    • COMPLEMENTIVE 格(補語)(中国語)は、接続助詞を使用して、潜在的、説明的、または結果表現を完成させるために必要な単語を示します。
    • DATIVE(与格)は、何かを指定する間接目的語または直接目的語を示します。英語では、「He gave the ball to Bobby」のように前置詞「to」を使用すると、与格が不要になります。
    • GENITIVE(属格)は、所有を示します。英語では厳格な属格ではなく、「s」接語をこの用途に使用します。
    • INSTRUMENTAL(具格)は、名詞が主語の行為の手段であるかどうかを示します。英語では、「He hit him with a baseball bat」のように前置詞「with」を使用すると、具格が不要になります。
    • LOCATIVE(所格)は、場所を示唆する単語の使用を示します。英語では、「The cow is in the barn」のように「in」や「on」などの前置詞を使用すると、所格が不要になります。
    • NOMINATIVE(主格)は、動詞の主語を示します。英語では、動詞の主語は語順で示されます。
    • OBLIQUE(斜格)は、動詞または前置詞に対する目的語としての、単語の使用を示します。
    • PARTITIVE(部分詞)は、単語の「部分性」または特定のものを示していないことを示します。
    • PREPOSITIONAL(前置格)は、前置詞の目的語を示します。
    • REFLEXIVE_CASE(再帰)は、動詞の主語と同一の目的語を示します。ほとんどの言語は再帰格を使用せず、再帰代名詞(「himself」や「myself」など)を使用しています。
    • RELATIVE_CASE(定語)(中国語)は、動詞または形容詞と名詞を結びつける関係詞節の補部を示します。例: 工作 [的] 地方(英語の「work [] place」、つまり「place [where I] work」)。便宜 的 餐馆(英語の「inexpensive [] restaurants」、つまり「restaurants [that are] inexpensive」)。
    • VOCATIVE(呼格)は、相手に呼びかけるときに使用する名詞を示します。
  • tense: 動詞の時間における位置を示す文法上の時制を示します。tense は、動詞と時間との関係も示しているが、位置よりも時間の流れの特性に注目している aspect とは異なることに注意してください。多くの言語の IMPERFECT(未完了)時制と PLUPERFECT(過去完了)時制は、時制と相の特定の組み合わせを正確に表しています。このフィールドには次の値が含まれることがあります。

    • 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(使役態)は、行為の影響が主語に及ぶことを示します。英語には、直接使役態はありません。代わりに「Mom made me go to school」のように、動詞「make」を用いて、使役の意味を表します。
    • PASSIVE(受動態)は、行為の影響が主語に及ぶことを示します。多くの場合、受動態の「主体」は言外か未知です。
  • reciprocity: 単語(多くは代名詞)が文中の任意の場所の名詞を指していることを意味する相互関係を示します。このフィールドには次の値が含まれることがあります。

    • RECIPROCAL は、代名詞が相互代名詞であることを示します。
    • NON_RECIPROCAL は、代名詞が相互代名詞ではないことを示します。
  • proper: 名詞が固有名詞の一部であるかどうかを示します。多くの固有名詞は複数の単語で構成され、この句が固有名詞として検出されると、各トークンも固有名詞として検出されることに注意してください(たとえば、固有名詞「Wrigley Field」の「Wrigley」と「Field」はどちらもその固有属性を PROPER に設定します。このフィールドには次の値が含まれることがあります)。

    • PROPER は、トークンが固有名詞の一部であることを示します。
    • NOT_PROPER は、トークンが固有名詞の一部ではないことを示します。
  • form: 上述の共通形式(tensemoodperson など)に当てはまらないその他の形態素形式を示します。この形式の多くは、各言語固有のものです。このフィールドには次の値が含まれることがあります。

    • ADNOMIAL(韓国語 / 日本語)は、名詞句を変更する語尾(韓国語)または動詞(日本語)を示します。例: 밥을 먹는 사람 [someone who eats rice]、書く人 [someone who writes]。
    • AUXILIARY(韓国語)は、2 つの隣接する主述部と補助述部を結びつける語尾を示します(例: 밥을 먹게 하다 [make (someone) to eat])。
    • COMPLEMENTIZER(韓国語)は、複数の異なる文節を結びつける語尾を示します(밥을 먹고 물을 마신다 [ (I) eat rice and drink water])。
    • FINAL_ENDING(韓国語 / 日本語)は、文節または文の最後に来る文節または文を確定する語尾を示します。例: 밥을 먹는다 [(I) eat rice]、手紙を書く [write a letter]。
    • GERUND(韓国語 / 日本語)は、動詞または形容詞を正規化する(韓国語の「밥 먹기」[eating rice])語尾や、動詞をさまざまな助動詞と結びつける(日本語の「書きたい」[want to write])語尾を示します。
    • REALIS(日本語)は、「書けば」[if (I) write] のように、接続助詞「ば」を付けて、条件形または仮定形を示します。
    • IRREALIS(日本語)は、動詞に、否定動詞(書かない [do not write])、受動動詞(書かれる [to be written])、使役補助動詞(書かせる [make (someone) write])を結びつけることを示します。
    • ORDER(日本語)は、命令法に似た命令動詞を示します(例: 書け![write!])。
    • SPECIFIC(日本語)は、上記の 6 つの分野に含まれない特殊な形式を示します。この形式の代表的なものには、接尾辞を追加することで形容詞から名詞を派生させたものがあります(例: かわいさ [cuteness])。
    • SHORT(ロシア語)は、短形式の形容詞または分詞を示します。
    • LONG(ロシア語)は、上記の SHORT 形式とは異なり、長形式の形容詞または分詞を示します。

Natural Language API は(句単位ではなく)トークン単位で形態論情報を提供することに注意してください。単語境界をまたぐ形態論構造はサポートされないことがあります。

依存関係ツリー

構文解析のために渡したテキストの各文について、その文の構文構造を示す依存関係ツリーが作成されます。この依存関係グラフを分析する際には、各文を構成するトークンを反復処理するのが一般的です。

次の図は、ジョン F. ケネディの大統領就任演説の 1 文の依存関係ツリーを示しています。

この依存関係ツリーには ROOT 要素が含まれています。これは、この文の本動詞に相当します。

トークンの label フィールド(タイプが Label のもの)は、そのトークンの headTokenIndex で参照されているトークンに対する構文上の関係を説明します。

上の例では、「do」と 2 つ目の節の「ask」の headTokenIndex が 0 になっています。これは、これらが最初の節の ROOT 語(「Ask」)を修飾していることを示しています。トークンの label の値は、関係のタイプを指定します。たとえば、「country」は最初の節の「do」に対して NSUBJ(名詞主語)の関係を持っており、「you」は 2 つ目の節の「do」に対して同じ関係を持っています。

解析ツリーは文の境界を越えませんが、headTokenIndex は現在の文だけでなく、ドキュメント全体のトークンリストのインデックスであることに注意してください。ROOT 語である「Ask」の headTokenIndex は自身のインデックスになります。

Natural Language API では、文やトークンに対して 0 から始まるオフセット値によるインデックスがテキスト全体で付けられます。次の疑似コードは、構文解析のレスポンスに対して反復処理を実行する際に使用する一般的なパターンを示しています。

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

依存関係ツリーの詳細については、Universal Dependency Treebank プロジェクトをご覧ください。また、Universal Dependency Annotation for Multilingual Processing(英語)には、このような依存関係ツリーを解釈するための方法に関する背景情報が含まれています。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Natural Language API ドキュメント