係り受け解析は、文章を文節または単語で分割した後、どの語がどの語を修飾しているかを判別する処理です。
構文解析と呼ばれることもあります。
文節の係り受け解析
文節の係り受け解析を行うソースコードは以下のようになります。
[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))
|
実行結果は以下の通りです。
[実行結果]
次回は、単語の係り受け解析を行います。