Jagger - C++ implementation of Pattern-based Japanese Morphological Analyzer

developed by Naoki Yoshinaga at Yoshinaga Lab., IIS, University of Tokyo
(English page is here)
Skip to [ Features | Download | History | Usage | Performance | Contributions | References ]

About

Jagger は、辞書に基づく単語分割のための最長一致法と、機械学習の分類器の事前計算に着想を得た、特徴パターンに基づく高速・高精度・省メモリの形態素解析器[1]です。Jagger は形態素解析辞書や学習コーパスから抽出したパターンを入力テキストの先頭から適用し、同時かつ決定的に単語の分割位置、切り出した単語の品詞、見出し語を決定します。最小コスト法や点推定などに基づく既存の効率的な形態素解析器[2,3]と遜色ない解析精度で、1CPUで100万文/秒を超える速度で形態素解析を行うことができます(M2 MacBook Air上)。

Jagger を学術・商用利用する方は以下の参考文献を引用ください。

Naoki Yoshinaga
Back to Patterns: Efficient Japanese Morphological Analysis with Feature-Sequence Trie
The 61st Annual Meeting of the Association for Computational Linguistics (ACL-23). Toronto, Canada. July 2023

開発の経緯に興味がある方は

Naoki Yoshinaga
記号処理への回帰:パターンに基づく速度指向言語処理
自然言語処理.30巻4号 p. 1266-1271. 2023.
をどうぞ。実装の詳細は Yahoo! JAPAN での招待講演の資料で少し触れています。

Features

License: GNU GPLv2, LGPLv2.1, BSD

Download & Setup

> wget http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/jagger/jagger-latest.tar.gz
> tar zxvf jagger-latest.tar.gz
> cd jagger-YYYY-MM-DD

# 1) mecab-jumandic 形式の辞書を用意 (cf. mecab-jumandic-7.0-20130310.tar.gz)
> tar zxvf mecab-jumandic-7.0-20130310.tar.gz
> patch -p0 < mecab-jumandic-7.0-20130310.patch # 助動詞の文字化けを修正

# 2) 京都大学ウェブ文書リード文コーパスを用いる場合 (デフォルト)
> git clone https://github.com/ku-nlp/KWDLC
> configure

# 2') または、京都大学テキストコーパスを用いる場合
> git clone https://github.com/ku-nlp/KyotoCorpus
> cd KyotoCorpus; auto_conv -d PATH_TO_MAINICHI_NEWS_DIR; cd ..
> configure --with-corpus=kyoto

# 3) 標準分割からモデルを学習し、評価も行った上でインストール
> make model-benchmark && make install

# 3') 自分で用意した形態素解析辞書、注釈付き学習データ、評価データを用いて学習・評価を行う場合
> make install
> train_jagger -d DICT_FILE TRAIN_FILE_WITH_POS > PATTERN_DIR/patterns
> jagger -m PATTERN_DIR [-wf] < TEST_FILE > result.JAG
> eval.py result.JAG TEST_FILE_WITH_POS

言語資源の入手先:

ToDo

History

Usage

Tagging

コマンドラインで jagger -h とタイプすると、以下の usage が表示されします。デフォルトではインストール時に指定した辞書とコーパスから学習したモデルを読み込みます。

jagger: Pattern-based Jappanese Morphological Analyzer
Copyright (c) 2023- Naoki Yoshinaga, All rights reserved.

Usage: src/jagger [-m dir w] < input

Options:
 -m dir	directory for compiled patterns (default: JAGGER_DEFAULT_MODEL)
 -w	perform only segmentation

-w オプションをつけて実行すると、単語分割のみを行います。-f は出力にブロックIOを用いる高速モードです。コマンドライン上でインタラクティブに解析を行いたい場合はつけないでください。

Training

コマンドラインで train_jagger とタイプすると、以下の usage を表示します。

train_jagger: Extract patterns for Jagger from dictionary and training data
Copyright (c) 2023- Naoki Yoshinaga, All rights reserved.

Usage: src/train_jagger [-m dir -d dict -u dict] train

Options:
 -m dir 	directory to store patterns
 -d dict	dictionary in CSV format
 -u user_dict	user-defined dictionary in CSV format

dict, user_dict は MeCab (jumandic) 形式の辞書ファイルです(コスト等は無視されます。フィールド数さえ合っていれば良く、0で埋めて良い)。train は Jagger (MeCab) の出力と同じ形式の品詞タグ付きデータです。

How to add user-defined patterns

旧バージョンを使うか、パターンに対応する部分学習データ(対象とする形態素と前後文脈のみ学習事例を含む)を train_jagger に与えてください。将来的には(簡潔な実装を思いつけば)、推論時にパターンを動的に変更する機能を追加する予定です。

Performance Comparison

参考文献 [1]を確認ください。

Third-Party Contributions

C++ 以外のプログラミング言語で Jagger を使いたい方のためのポートやバインディング(ラッパー)には以下があります。

Disclaimer

文献 [1] で提案したアルゴリズムを除き、他の高速化手法については、特許が取得されていないかどうかは未確認です。どの手法も既存の OSS で広く実装・利用されているものなので、問題はないだろうと思いますが、本ソフトウェアを商用利用する際は、各自の責任でご使用ください。

Acknowledgments

本研究は JSPS 科研費 JP21H03494 および JST CREST JPMJCR19A4 の助成を受けたものです。

References

  1. Naoki Yoshinaga. Back to Patterns: Efficient Japanese Morphological Analysis with Feature-Sequence Trie. ACL-23. 2023
  2. Taku Kudo and Yuji Matsumoto. Applying Conditional Random Fields to Japanese Morphological Analysis. EMNLP-04. 2004
  3. Graham Neubig, Yosuke Nakata, and Shinsuke Mori. Pointwise Prediction for Robust, Adaptable Japanese Morphological Analysis. ACL-11. 2011

Copyright © 2023 Naoki Yoshinaga, All right Reserved.
last-modified: Mar 27 11:06:14 2024, written by XHTML 1.1