単語係り受け解析は、単語の係り受け関係を木構造で表現します。
各単語は木の頂点に対応し、ただ1つの親と複数の子を持ちます。
単語の係り受け解析
単語係り受け解析を行うソースコードは次の通りです。
[Google Colaboratory]
1 2 3 4 5 6 7 8 9 10 11
| import spacy from spacy import displacy nlp = spacy.load('ja_ginza') doc = nlp('新橋で打ち合わせをしましょう。')
# 単語の係り受け解析 for token in doc: print(token.text+' ← '+token.head.text+', '+token.dep_)
# グラフ表示 displacy.render(doc, style='dep', jupyter=True)
|
実行結果は以下の通りです。
[実行結果]
1 2 3 4 5 6 7
| 新橋 ← し, obl で ← 新橋, case 打ち合わせ ← し, obj を ← 打ち合わせ, case し ← し, ROOT ましょう ← し, aux 。 ← し, punct
|
各単語の係り受け関係をグラフで確認することができました。
11行目のグラフ表示処理で、options={‘compact’:True, ‘distance’: 90}を指定すると、グラフをシンプルに表示することができます。
[Google Colaboratory]
1 2 3 4 5 6 7 8 9 10 11
| import spacy from spacy import displacy nlp = spacy.load('ja_ginza') doc = nlp('新橋で打ち合わせをしましょう。')
# 単語の係り受け解析 for token in doc: print(token.text+' ← '+token.head.text+', '+token.dep_)
# シンプルなグラフ表示 displacy.render(doc, style='dep', jupyter=True, options={'compact':True, 'distance': 90})
|
実行結果は以下の通りです。
[実行結果]
次回は、固有表現抽出を行います。