GiNZA(7) - 係り受け解析

係り受け解析は、文章を文節または単語で分割した後、どの語がどの語を修飾しているかを判別する処理です。

構文解析と呼ばれることもあります。

文節の係り受け解析

文節の係り受け解析を行うソースコードは以下のようになります。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
import spacy
import ginza
nlp = spacy.load('ja_ginza')
doc = nlp('新橋で打ち合わせをしましょう。')

# 文節の係り受け解析
for span in ginza.bunsetu_spans(doc):
for token in span.lefts:
print(str(ginza.bunsetu_span(token))+' → '+str(span))

実行結果は以下の通りです。

[実行結果]

1
2
新橋で → しましょう。
打ち合わせを → しましょう。

各文節がどの文節に係っているかを確認できました。


7行目のbunsetu_spans()の代わりにbunsetu_phrase_spans()を使うと、主辞(文節で一番重要な単語)を抽出することができます。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
import spacy
import ginza
nlp = spacy.load('ja_ginza')
doc = nlp('新橋で打ち合わせをしましょう。')

# 文節の係り受け解析
for span in ginza.bunsetu_phrase_spans(doc):
for token in span.lefts:
print(str(ginza.bunsetu_span(token))+' → '+str(span))

実行結果は以下の通りです。

[実行結果]

1
2
新橋で → し
打ち合わせを → し

次回は、単語の係り受け解析を行います。