学習者言語の分析(基礎)2(第4回)
4 依存文法を用いた学習者言語の分析¶
- ここまで、語数や文数といった単純な特徴量を用いて自動採点システムを構築してきました。
- ここでは、少し踏み込んで、文法的(統語的)な分析を行い、特徴量の抽出を試みます。
以下の2つの文は同じ状況を描写していますが、統語的な複雑さが異なっています。
- A student came into the room with a big bag on his back. He looked really tired and everyone looked at him. He sat down at his desk.
- A student hurriedly entered the classroom, clearly flustered and out of breath, indicating that he was running late for the class.
1の文は複数の文を使って、状況を描写していますが、2の文ではひとつの文を用いて同じことをしています。このような統語的な差異に関する特徴量を抽出するにはどうすれば良いでしょうか。
4.1 依存文法¶
- 以下の例文について考えてみよう。
A man sleeps.
- この3語で成り立つ文のそれぞれの語同士の文法的な関係は
- "a"は"man"を修飾している("a"は"man"の限定詞)。
- "man"は"sleeps"の主語である。
- "sleeps"はこの文の(主)動詞である。
- これを言い換えると
- "a"は"man"に依存している("man"は"a"を統率している)。
- "man"は"sleeps"に依存している("sleeps"は"man"を統率している)。
- "sleeps"は何にも依存していない("sleeps"はこの文のroot)。
- 依存文法による文の捉え方の基本コンセプトは
- 文において単語は他の単語に依存している。
- 他の単語に依存してない単語をrootとする。
- この関係を図示すると以下のようになる。
In [1]:
import spacy
from spacy import displacy
In [2]:
nlp = spacy.load("en_core_web_sm")
doc = nlp("A man sleeps.")
displacy.render(doc)
- 「"a"は"man"の限定詞」のような関係を依存関係と呼ぶ。
- 依存関係は統語的関係であり、意味的関係である。
- 他動詞の"like"は主語と目的語という2つの補部(comlementあるいはdependent(従属部))を要求(規定)する。
Robinson's Axioms¶
- 文において他の単語に依存していない単語はひとつだけである。
- 他の単語はすべて直接他の単語に依存する。
- 2つ以上の単語に直接依存する単語はない。
- 以下の例文を使って依存関係を見てみよう。
In [3]:
doc = nlp("John was reading a book in his room.")
displacy.render(doc)
- 以下のように依存関係を抽出することができます。
In [4]:
for token in doc:
print(token.text,token.dep_)
John nsubj was aux reading ROOT a det book dobj in prep his poss room pobj . punct
以下のようなことがわかります。
- この文のrootは"reading"
- "John"は主語
- "book"は目的語
- "in"は前置詞
などなど...
- "dobj"など依存関係の意味が分からない時は
In [5]:
spacy.explain("pobj")
Out[5]:
'object of preposition'
- 依存関係については、Universal Dependenciesを参照してください。