
yasuokaの日記: 日本語係り受け解析器「2020年の総ざらえ」 1
日記 by
yasuoka
自然言語処理Advent Calendar 2020を見に行ってみたところ、なぜか12月1日があいていたので、一日遅れだが書いてみることにした。日本語係り受け解析器としては、もちろんCaboChaが有名なのだが、係り受けの種類が分類されておらず使いにくい。一方、多言語係り受け解析器としてはspaCyが有名で、日本語モジュールも準備されているのだが、単語間係り受けのみで、文節間係り受けはサポートされていない。このあたりを埋めるべく、日本語係り受け解析器のうち、インターフェースがspaCy準拠となっているものを、私(安岡孝一)なりに「総ざらえ」してみよう。
- GiNZA
pythonのみで書かれた日本語係り受け解析器で、インストールしやすさにおいても、解析精度においても、現時点ではピカイチである(私見)。形態素解析器にSudachiPyを用いており、インターフェースはspaCy準拠の単語間係り受けだが、さらに文節間係り受けAPIを拡張している。 - spaCy-SynCha
CaboChaの係り受け解析を、SynChaの述語項構造解析で拡張し、さらにspaCyに繋いでいる。単語間係り受けと文節間係り受けの両方に対応している。解析精度は高いのだが、MeCabとCaboChaのインストールに手間がかかる上に、SynChaがperlで動作するため、Unixぽい環境(Linux・WSL・Cygwin・macOSコンソールなど)での使用をオススメする。 - spaCy-ChaPAS
CaboChaの係り受け解析を、ChaPASの述語項構造解析で拡張し、さらにspaCyに繋いでいる。単語間係り受けと文節間係り受けの両方に対応している。解析精度は高いのだが、MeCabとCaboChaのインストールに手間がかかる上に、ChaPASがJava8で動作するため、Unixぽい環境(Linux・WSL・Cygwin・macOSコンソールなど)での使用をオススメする。 - UniDic2UD
UniDicの形態素解析を、UDPipeの係り受け解析で拡張しており、spaCyの単語間係り受けと、CaboChaエミュレーションによる文節間係り受けを、それぞれ別々にサポートしている。現代日本語のみならず、旧字旧仮名や中古和文(古文)のUniDicもサポートしているが、解析精度はやや低い。 - Camphr-KNP
KNPの構文・格・照応解析を、spaCyに繋いでいる。ただ、KNPは単語長や品詞の扱いが独特でクセがあり、他のツールとは比較が難しい。また、JUMAN++とKNPのインストールは、かなり手間がかかる上に、あちこちトラップがあるため、私個人としては勧めにくい。
以上に示した日本語係り受け解析器に加えて、以下に示す多言語係り受け解析器は、それぞれ日本語モジュールを準備している。ただし、いずれも文節間係り受けはサポートしておらず、単語間係り受けだけである。
- spaCy-Stanzaの"ja"モジュール
Stanzaの係り受け解析を、spaCyに繋いでいる。現在も開発が続いており、解析精度は上がり続けている。 - spaCy-COMBOの"ja_gsd"モジュール
COMBOの係り受け解析を、spaCyに繋いでいる。開発はCOMBO-pytorchへと移ったようだが、COMBO-pytorchの日本語モジュールは未発表。 - spaCy-UDPipeの"ja"モジュール
UDPipeの係り受け解析を、spaCyに繋いでいる。開発はUDPipe 3へと移ったようだが、現時点では未発表。 - spaCy-jPTDPの"ja_gsd"モジュール
jPTDPの係り受け解析を、spaCyに繋いでいる。pythonのみで書かれているが、開発は終了した模様。
これらの係り受け解析器は、いずれもインターフェースがspaCy準拠であり、その範囲において互いに取り換え可能である。なお、これらの係り受け解析器を全て比較できるよう、Google Colaboratoryのこのページにインストール・解析環境を準備した。ぜひ試してみてほしい。
COMBO-pytorchの日本語モジュール (スコア:2)
と書いたのですが、イキオイ余って作ってしまいました。今日(12/28)の日記 [srad.jp]で仮リリースしたので、よければどうぞ。