panda大学習帳外伝

ハヤシライスのハヤシじゃない方。

メインページ | panda大学習帳 | 用語集📒 | 本サイトについて | プライバシーポリシー


kuromojiにいろいろな辞書を組み込んで、テストしてみた。

はじめに

kuromojiにいろいろな辞書を組み込む機能を持たせたプログラムを書いた件についてはこの記事に書きましたが、辞書によって形態素解析の結果がどのように変化するのかを調べてみることにしました。

スポンサーリンク

テストの概要

処理対象となる文

処理対象となる文ですが、プログラムの動作確認のテスト的なものに割とよく使われそうなものと、新しい単語を含むものの2種類を用意した方がよいと考え、以下の文を用意しました。

  1. すもももももももものうち。
  2. 高輪ゲートウェイ駅のスタバでキャラメルマキアートを注文した。 以下、最初の文を「文章1」、2番目の文章を「文章2」と書くことにします。

    テスト対象の辞書

    テスト対象の辞書は以下の4種類としました。なお、辞書にIPADICまたはIPADIC NEologdを用いた際の処理モードは”NORMAL”としています。

  3. IPADIC (2.7.0-20070801)
  4. IPADIC NEologd (NEologdは2020-05-21時点のものに差し替えています。)
  5. UniDic (2.1.2)
  6. UniDic NEologd (2.1.2-neologd-20171002)

    テスト結果

    文章1

    文章1に対する処理の結果は以下の通りです。

NEologdを組み込むと、NEologdのバージョンに関係なく、文全体が固有名詞と判定されてしまうようです。

IPADIC (2.7.0-20070801)

すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ:
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
。      記号,句点,*,*,*,*,。,。,。

IPADIC NEologd (NEologdは2020-05-21時点のものに差し替えています。)

すもももももももものうち        名詞,固有名詞,一般,*,*,*,すもももももももものうち,スモモモモモモモモノウチ,スモモモモモモモモノウチ
。      記号,句点,*,*,*,*,。,。,。

UniDic (2.1.2)

すもも  名詞,普通名詞,一般,*,*,*,スモモ,李,すもも,スモモ,すもも,スモモ,和,*,*,*,*
も      助詞,係助詞,*,*,*,*,モ,も,も,モ,も,モ,和,*,*,*,*
もも    名詞,普通名詞,一般,*,*,*,モモ,桃,もも,モモ,もも,モモ,和,*,*,*,*
も      助詞,係助詞,*,*,*,*,モ,も,も,モ,も,モ,和,*,*,*,*
もも    名詞,普通名詞,一般,*,*,*,モモ,桃,もも,モモ,もも,モモ,和,*,*,*,*
の      助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,*
うち    名詞,普通名詞,副詞可能,*,*,*,ウチ,内,うち,ウチ,うち,ウチ,和,*,*,*,*
。      補助記号,句点,*,*,*,*,,。,。,,。,,記号,*,*,*,*

UniDic NEologd (2.1.2-neologd-20171002)

すもももももももものうち        名詞,固有名詞,一般,*,*,*,スモモモモモモモモノウチ,すもももももももものうち,すもももももももものうち,スモモモモモモモモノウチ,すもももももももものうち,スモモモモモモモモノウチ,固,*,*,*,*
。      補助記号,句点,*,*,*,*,,。,。,,。,,記号,*,*,*,*

文章2

文書2に対する処理の結果は以下の通りです。

高輪ゲートウェイ駅は駅名が決まったのが2018年12月でしたので、それ以前のデータを用いて作られた辞書を用いた解析では、「高輪ゲートウェイ駅」が1個の単語であるとは認識できるはずもなく、2個以上の単語に分割されて処理されています。

IPADIC (2.7.0-20070801)

高輪    名詞,固有名詞,地域,一般,*,*,高輪,タカナワ,タカナワ
ゲートウェイ    名詞,固有名詞,地域,一般,*,*,*,*,*
駅      名詞,接尾,地域,*,*,*,駅,エキ,エキ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
スタバ  名詞,一般,*,*,*,*,*,*,*
で      助詞,格助詞,一般,*,*,*,で,デ,デ
キャラメルマキアート    名詞,一般,*,*,*,*,*,*,*
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
注文    名詞,サ変接続,*,*,*,*,注文,チュウモン,チューモン
し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。

IPADIC NEologd (NEologdは2020-05-21時点のものに差し替えています。)

高輪ゲートウェイ駅      名詞,固有名詞,一般,*,*,*,高輪ゲートウェイ駅,タカナワゲートウェイエキ,タカナワゲートウェイエキ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
スタバ  名詞,固有名詞,一般,*,*,*,スタバ,スタバ,スタバ
で      助詞,格助詞,一般,*,*,*,で,デ,デ
キャラメルマキアート    名詞,固有名詞,一般,*,*,*,キャラメルマキアート,キャラメルマキアート,キャラメルマキアート
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
注文    名詞,サ変接続,*,*,*,*,注文,チュウモン,チューモン
し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。

UniDic (2.1.2)

高輪    名詞,固有名詞,地名,一般,*,*,タカナワ,タカナワ,高輪,タカナワ,高輪,タカナワ,固,*,*,*,*
ゲート  名詞,普通名詞,一般,*,*,*,ゲート,ゲート-gate,ゲート,ゲート,ゲート,ゲート,外,*,*,*,*
ウェイ  名詞,普通名詞,一般,*,*,*,ウエー,ウエー-way,ウェイ,ウェー,ウェイ,ウェー,外,*,*,*,*
駅      名詞,普通名詞,一般,*,*,*,エキ,駅,駅,エキ,駅,エキ,漢,*,*,*,*
の      助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,*
スタバ  名詞,固有名詞,一般,*,*,*,スタバ,スタバ,スタバ,スタバ,スタバ,スタバ,固,*,*,*,*
で      助詞,格助詞,*,*,*,*,デ,で,で,デ,で,デ,和,*,*,*,*
キャラメル      名詞,普通名詞,一般,*,*,*,キャラメル,キャラメル-caramel,キャラメル,キャラメル,キャラメル,キャラメル,外,*,*,*,*
マキアート      名詞,普通名詞,一般,*,*,*,マキアート,マキアート,マキアート,マキアート,マキアート,マキアート,外,*,*,*,*
を      助詞,格助詞,*,*,*,*,ヲ,を,を,オ,を,オ,和,*,*,*,*
注文    名詞,普通名詞,サ変可能,*,*,*,チュウモン,注文,注文,チューモン,注文,チューモン,漢,*,*,*,*
し      動詞,非自立可能,*,*,サ行変格,連用形-一般,スル,為る,し,シ,する,スル,和,*,*,*,*
た      助動詞,*,*,*,助動詞-タ,終止形-一般,タ,た,た,タ,た,タ,和,*,*,*,*
。      補助記号,句点,*,*,*,*,,。,。,,。,,記号,*,*,*,*

UniDic NEologd (2.1.2-neologd-20171002)

高輪    名詞,固有名詞,一般,*,*,*,タカナワ,高輪,高輪,タカナワ,高輪,タカナワ,固,*,*,*,*
ゲートウェイ    名詞,固有名詞,一般,*,*,*,ゲートウェイ,Gateway,ゲートウェイ,ゲートウェイ,ゲートウェイ,ゲートウェイ,固,*,*,*,*
駅      名詞,固有名詞,一般,*,*,*,エキ,駅,駅,エキ,駅,エキ,固,*,*,*,*
の      助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,*
スタバ  名詞,固有名詞,一般,*,*,*,スタバ,スタバ,スタバ,スタバ,スタバ,スタバ,固,*,*,*,*
で      助詞,格助詞,*,*,*,*,デ,で,で,デ,で,デ,和,*,*,*,*
キャラメルマキアート    名詞,固有名詞,一般,*,*,*,キャラメルマキアート,キャラメルマキアート,キャラメルマキアート,キャラメルマキアート,キャラメルマキアート,キャラメルマキアート,固,*,*,*,*
を      助詞,格助詞,*,*,*,*,ヲ,を,を,オ,を,オ,和,*,*,*,*
注文    名詞,普通名詞,サ変可能,*,*,*,チュウモン,注文,注文,チューモン,注文,チューモン,漢,*,*,*,*
し      動詞,非自立可能,*,*,サ行変格,連用形-一般,スル,為る,し,シ,する,スル,和,*,*,*,*
た      助動詞,*,*,*,助動詞-タ,終止形-一般,タ,た,た,タ,た,タ,和,*,*,*,*
。      補助記号,句点,*,*,*,*,,。,。,,。,,記号,*,*,*,*

考察

文章1の文章全体が固有名詞として認識されてしまう件については、NEologdを組み込んだ場合に共通して発生する現象のように見えます。一方でNEologdを組み込まない辞書については正しく解析ができているようですので、kuromojiの基本的な機能には問題がないものと考えられます。

また、文章2の処理結果からは、辞書が古いと新しく登場した単語への対応が困難そうであることがわかりますので、詰まる所、

「辞書は登録単語数だよ、兄者。」

という結論に辿り着く感じです。

スポンサーリンク

まとめ

実は、NEologdを最新版に差し替えたkuromojiのビルドの際に、テストが一部失敗しました。

失敗したテストについて確認した結果、軽微な問題であることがわかりましたので、とりあえずそのテストについては結果を無視することにしてビルドをしましたが、そのまま使ってしまって問題がないかどうか確認するため、別の辞書の解析結果と比較して確認を行うことにしました。

ここまでの動作確認の結果を見る限り、そのまま使ってしまっても良さそうです(※個人の感想です)。

この記事は以上です。

リンク

ビルドしたkuromojiのJARファイルへのアクセス用のコードをScalaで書いたところ、reflectionの使い方でハマった件。 | メインページ | panda大学習帳 | 用語集📒 | 本サイトについて | プライバシーポリシー


スポンサーリンク