yasuokaの日記: 「長い髪の黒い眼の大きな少女」の文節間係り受け解析
日本語係り受け解析器「2020年の総ざらえ」の読者から、「自然言語処理入門 Vol.2 係り受け解析/構文解析」(リーディング・エッジ社研究開発部、2021年5月10日)という記事を読んでほしい、との御連絡をいただいた。読んでみたのだが
- 日本語構文・格・照応解析システム KNP
形態素解析システム JUMAN の解析結果を入力 - CaboCha/南瓜: Yet Another Japanese Dependency Structure Analyzer
形態素解析システム MeCab の解析結果を入力 - GiNZA
Python向け日本語自然言語処理オープンソースライブラリ
の3つのシステムを記事で紹介していながら、これらのシステムを使わずに「長い髪の黒い眼の大きな少女」を手作業で係り受け解析していて、私(安岡孝一)個人としてはイラっときた。イラっときたので、とりあえず私の手元のKNPでやってみよう。
$ echo 長い髪の黒い眼の大きな少女 | juman | knp
# S-ID:1 KNP:4.19-CF1.1 DATE:2021/05/11 SCORE:-34.89423
長い─────┐ <用言:形><格解析結果:ガ/髪;ニ/-;デ/-;ヨリ/-;ノ/-;ガ2/->
髪の─────┐ <体言>
黒い─────┐ <用言:形><格解析結果:ガ/髪;ノ/-;ガ2/少女>
眼の─────┤ <体言>
大きな─────┤
少女<体言><用言:判><格解析結果:ガ/-;ニ/-;デ/-;カラ/-;ノ/-;ガ2/->
EOS
見ての通り「長い」→「髪の」→「黒い」→「少女」は、この記事の[解釈1]と同様だが、「眼の」→「少女」と「大きな」→「少女」は違う。一方、CaboChaの係り受け解析結果は以下の通り。
$ echo 長い髪の黒い眼の大きな少女 | cabocha
長い-D
髪の-D
黒い-D
眼の---D
大きな-D
少女
EOS
「長い」→「髪の」→「黒い」→「眼の」→「少女」となっていて、「髪が黒い」のか「黒い眼」なのか曖昧なままになっている、というのがCaboChaの特徴だったりする。このCaboChaの解釈も、記事の中では示されていない。GiNZAも見てみよう。
$ python3
>>> import spacy
>>> nlp=spacy.load("ja_ginza")
>>> doc=nlp("長い髪の黒い眼の大きな少女")
>>> from ginza import bunsetu_spans,bunsetu_span
>>> for b in bunsetu_spans(doc):
... for t in b.lefts:
... print(bunsetu_span(t),"->",b)
...
長い -> 髪の
黒い -> 眼の
髪の -> 少女
眼の -> 少女
大きな -> 少女
ごらんの通り、この記事の[解釈3]である。というような形で、実際のシステムにおける解析動作と、[解釈1][解釈2][解釈3]との対応を示さないと、何の話だか読者にはわからないと思うのだが、まあ、連載のようだから次の記事で示すのかしら。
「長い髪の黒い眼の大きな少女」の文節間係り受け解析 More ログイン