4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

情報検索・検索技術Advent Calendar 2024

Day 4

世界最速の日本語形態素解析器Jaggerを使ってみる

Last updated at Posted at 2024-12-03

前書き

人間は文章を産み、文章はAIを育て、AIは人間の時間を浪費させる。

X(旧Twitter)の一日あたりのツイート投稿数は5億件ほどとされており、そのうち日本語ツイートは15%程度を占めるので、一日あたりおよそ7,500万件の日本語文が生成されていると考えられる。

最も広く普及している日本語形態素解析器のMeCabは、1秒あたり10万文程度の日本語テキストを形態素解析することができる。つまり、上記のデータをすべて解析するのにざっくり750秒かかる。

形態素解析はあくまで前処理ツールである。あなたがもし日本語ツイートの経時的分析を目的にしていると仮定すると、一年間におけるすべての日本語ツイートを分析するために、形態素解析だけで76時間かかり、十年分の日本語ツイートを形態素解析するためには760時間かかる。

人生は短い。この前処理をせめて半分以下、欲深い願望がもし叶えられるのなら、十分の一以下の時間で行えたら、それはとてつもなく素晴らしいことである。

じつのところ、その願いはすでに叶えられている。

Jagger

Jaggerは東京大学生産技術研究所の吉永さんが2023年に公開した世界最速の日本語形態素解析器である(2024年11月現在)。

Jaggerはそれ以前に最速の分かち書き手法であった最長一致法に、品詞情報を含めた最長一致パターンによる決定的分割のアイディアを加えることで、速度を保ったまま、形態素解析の精度を既存実装(MeCab, Vaporetto)と同程度まで押し上げている。

スクリーンショット 2024-11-21 1.28.10.png

日本語論文, 英語論文

インストール・動作確認

公式ページの「Download & Setup」における手順だと、最新の開発版(jagger-2024-03-14.tar.gz)がダウンロードできない。以下にURLを変更した手順を示す。

# jaggerの用意
$ wget "https://www.tkl.iis.u-tokyo.ac.jp/~ynaga/jagger/jagger-2024-03-14.tar.gz"
$ tar zxvf jagger-2024-03-14.tar.gz
$ cd ./jagger-2024-03-14/

# mecab-juman辞書の用意
$ wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7X2pESGlLREpxdXM" -O mecab-jumandic-7.0-20130310.tar.gz
$ tar zxvf mecab-jumandic-7.0-20130310.tar.gz

# mecab-juman辞書のパッチ用意
$ wget "https://www.tkl.iis.u-tokyo.ac.jp/~ynaga/jagger/mecab-jumandic-7.0-20130310.patch"

# 学習データの用意(KWDLC)
$ git clone https://github.com/ku-nlp/KWDLC

# jaggerのコンパイル
$ ./configure
$ make model-benchmark && make install

# 形態素解析
$ echo "人生は短い" | jagger
人生	名詞,普通名詞,*,*,人生,じんせい,*
は	助詞,副助詞,*,*,は,は,*
短い	形容詞,*,イ形容詞アウオ段,基本形,短い,みじかい,*
EOS

# 分かち書き
$ echo "人生は短い" | jagger -w
人生 は 短い

比較

設定

日本語WikipediaのCirrus Dumpから10万記事(647.4MB)を取得し、MaCabとJaggerでそれぞれ分かち書きにする。

辞書はどちらもmecab-jumanを使用する。ただしスコアやパターンの学習に用いる学習データが異なるのでフェアな比較ではない。

以下の計算機を使用する

Macbook Air Retina, 13-inch, 2018
CPU: 1.6 GHz デュアルコアIntel Core i5
メモリ: 8 GB 2133 MHz LPDDR3

結果

定量的評価

定量的分析として解析時間と使用メモリ量を比較すると以下のようになる。
大体論文と同程度の数値になっている。

time (s) memory (MB)
MeCab 291.7 69.7
Jagger 19.1 21.9
# MeCab
$ /usr/bin/time -l mecab -Owakati -d "/usr/local/lib/mecab/dic/jumandic" -b 5242880 < ./jawiki-20240422_100000.txt > ./jawiki-20240422_100000_mecab.txt

      291.66 real       223.49 user        32.74 sys
            69718016  maximum resident set size
                   0  average shared memory size
                   0  average unshared data size
                   0  average unshared stack size
                8634  page reclaims
               10885  page faults
                   0  swaps
                   0  block input operations
                   0  block output operations
                   0  messages sent
                   0  messages received
                   0  signals received
                 337  voluntary context switches
              534425  involuntary context switches
       1106407465922  instructions retired
        705156422081  cycles elapsed
            26062848  peak memory footprint

# Jagger
$ /usr/bin/time -l jagger -w < ./jawiki-20240422_100000.txt > ./jawiki-20240422_100000_jagger.txt
       19.09 real        15.25 user         0.98 sys
            21913600  maximum resident set size
                   0  average shared memory size
                   0  average unshared data size
                   0  average unshared stack size
                 480  page reclaims
                5073  page faults
                   0  swaps
                   0  block input operations
                   0  block output operations
                   0  messages sent
                   0  messages received
                   0  signals received
                 509  voluntary context switches
               26916  involuntary context switches
         33718289406  instructions retired
         35822332288  cycles elapsed
              942080  peak memory footprint

定性的評価

分かち書き結果が異なる文を観察する。差異の部分を[]で括った。

MeCab: 人間 が 音声 や 文字 を 用いて 思想 ・ 感情 ・ 意志 [等 々] を 伝達 する ため に 用いる 記号 体系 。
Jagger: 人間 が 音声 や 文字 を 用いて 思想 ・ 感情 ・ 意志 [等々] を 伝達 する ため に 用いる 記号 体系 。

MeCab: 広義 の 言語 に は 、 verbal な ( 言葉 に 表す ) もの と non - verbal な ( 言葉 と して 表さ れ ない ) [も の] ( 各種 記号 、 アイコン 、 図形 、 ボディーランゲージ 等 ) の 両方 を 含み 、 日常 の コミュニケーション で は 狭義 の 言語 表現 に 身振り 、 手振り 、 図示 、 擬音 等 も 加えて 表現 さ れる こと も ある 。
Jagger: 広義 の 言語 に は 、 verbal な ( 言葉 に 表す ) もの と non - verbal な ( 言葉 と して 表さ れ ない ) [もの] ( 各種 記号 、 アイコン 、 図形 、 ボディーランゲージ 等 ) の 両方 を 含み 、 日常 の コミュニケーション で は 狭義 の 言語 表現 に 身振り 、 手振り 、 図示 、 擬音 等 も 加えて 表現 さ れる こと も ある 。

MeCab: 化学 式 は 自然 言語 の 文法 が 作用 して おら ず 、 化学 式 [独特 の] 文法 で 構成 さ れて いる 。
Jagger: 化学 式 は 自然 言語 の 文法 が 作用 して おら ず 、 化学 式 [独特の] 文法 で 構成 さ れて いる 。

MeCab: ジャック ・ デリダ と いう 、 一般に ポスト 構造 主義 の 代表 的 哲学 者 と 位置づけ られて いる フランス の 哲学 者 は 、 「 声 」 を 基礎 と し 文字 を その 代替 と する 発想 が 言語 学 に 存在 する 、 と 主張 し 、 それ に 対する 批判 を [投げ かける] 立場 を 主張 した 。
Jagger: ジャック ・ デリダ と いう 、 一般に ポスト 構造 主義 の 代表 的 哲学 者 と 位置づけ られて いる フランス の 哲学 者 は 、 「 声 」 を 基礎 と し 文字 を その 代替 と する 発想 が 言語 学 に 存在 する 、 と 主張 し 、 それ に 対する 批判 を [投げか ける] 立場 を 主張 した 。

それぞれの誤りの傾向として、MeCabは「等 々」のように正しくは一語になりそうな箇所を分けてしまっており、Jaggerは「独特の」と本来分割されるべき箇所を結合してしまっている(そもそも「独特の」のような不自然な語が辞書に含まれているのは謎であるが)。

MeCabは京都大学コーパス(新聞記事)から学習しているので、新聞では出現しない言い回しに対して、より出現頻度の高い文字へと、細かく分割しすぎてしまっていると考えられる。

一方、JaggerはKWDLC(Webコーパス)から学習しているので、多少砕けた表現にも妥当な分割を出力できている一方、最長一致パターンによる分割のため、不自然に長めの形態素を割り当ててしまっていると考えられる。

精度改善案

手軽な改善手法としては、とても解析速度が遅い代わりに高精度なJuman++を使用して、WebコーパスやWikipediaコーパスの形態素解析を行い、その出力結果をMeCab・Jaggerの仮の学習データとする方向性が考えられる。

結論

オプション機能や移植実装・ラッパーが充実しており、人間の感覚に近い出力をするMeCab、速度や消費メモリに利があるが、やや不自然な出力をするJagger。

それぞれあなたの必要に応じて使い分けが可能である。

後書き

この記事もいつかAIの出力する、意味はあるが価値のない文書の一部としてWebの輪廻を漂うのだろう。そのとき何かの偶然が重なって、ふたたびこの後書きがあなたの手元に現れることがあったのなら――

何も付け加えずにそっと削除して欲しい。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?