-
Notifications
You must be signed in to change notification settings - Fork 52
(very experimental) NEologd 辞書を内包した janome をビルドする方法
ビルド済みパッケージを こちらからダウンロードできます。 更新は不定期です。
バージョン 0.3.3 で,mmap サポート と 内包辞書ビルドの並列化 を行い,mecab-ipadic-neologd 辞書を内包した janome を実験的にビルドできるようになりました。
ビルドしたパッケージは,実行環境に配布して,ふつうの janome 同様に pip でインストールできます。
制限・留意事項を了解のうえ,お試しください。
- 環境によっては動作しなかったり,ここに記載の手順ではビルドできなくなる可能性があります。
- ビルドには,相応の CPU 時間とメモリを消費します。
- ビルドした janome パッケージは 200 MB 程度になります。(2017-07-17 の NEologd アップデートでビルドした場合です。NEologd のエントリが増えれば,パッケージサイズは大きくなります。)
- 解析時は,1 GB ~ メモリを消費します。また, PyPI 公開の janome を使う場合より解析が遅くなります。
- 解析時は, mmap を使います。GAE や Heroku など PaaS 環境では動かないかもしれませんが未確認です。
- NEologd 辞書の著作権について,こちら を参照してください。
- NEologd 辞書のビルドに必要なソフトウェアについては mecab-ipadic-neologd の要件を参照してください。
- janome のパッケージングには Python 3.6 以上が必要です。
- サポートする Python バージョンは PyPI 配付版と同じです。
- mmap が使える必要があります。
- インストール・動作には最低,2GB 以上の RAM が必要です。
$ git clone git@github.com:neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./libexec/make-mecab-ipadic-neologd.sh
実行すると, mecab-ipadic-neologd/build/ 以下に NEologd 辞書が作成されます。
※ NEologd インストールの必要はありません。
デフォルトでは,2 ワーカープロセスを使ってビルドを行います(並列処理できる箇所のみ,マルチプロセスで実行します)。4GB 程度のメモリが必要です。ビルドには時間がかかるので,気長にお待ちください ☕ 。 2017-07-17 の NEologd アップデートでは,Core i5-2300 のデスクトップマシンで1時間弱かかりました。
※ マルチコア環境で CPU をフルに使える場合は ipadic/build.sh
の環境変数 WORKER_PROCESS=2
の値を空に設定し, WORKER_PROCESS=
としてください。システムの CPU と同数のワーカープロセスが稼働し,速くビルドが終わります。
ワーカープロセスごとに約 2GB 程度のメモリを消費するので,メモリ使用量に注意してください! 4 ワーカープロセス なら 2 x 4 = 8GB 必要です。
#
# 環境構築
#
$ git clone git@github.com:mocobeta/janome.git
$ cd janome
$ python -m venv .venv && source .venv/bin/activate
$ python setup.py develop
#
# 辞書ビルド
#
$ cd janome/ipadic
$ ./build.sh \
<path-to-neologd-repo>/build/mecab-ipadic-2.7.0-20070801-neologd-<YYYYMMDD> \
utf8
PyPI 公開の janome と区別するため,version.py を変更しておくことをおすすめします。
$ cd <path-to-janome-repo>
$ vi janome/version.py
JANOME_VERSION = '0.4.0.neologd20200813'
setup スクリプトでパッケージを作成します。少し(5分程度)時間がかかります。 dist/
以下にパッケージができれば成功です。 🙌
$ python setup.py sdist
$ ls dist/
Janome-0.4.0.neologd20200813.tar.gz
作成したパッケージを pip でインストールします。インストール時にすべての .py をプリコンパイルすると長い時間がかかってしまうため, --no-compile
オプションをつけてインストールしください(下記実行例を参照)。
(venv)$ pip install dist/Janome-0.4.0.neologd20200813.tar.gz --no-compile
mmap mode で実行するため, -m
オプションをつけてください。
※インストール後の初回の解析には,時間がかかります。
(venv)$ echo "改元にともない、退位礼正殿の儀が2019年4月30日に、剣璽等承継の儀が2019年5月1日 に行われる。" | janome -m
改元 名詞,サ変接続,*,*,*,*,改元,カイゲン,カイゲン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
ともない 動詞,自立,*,*,五段・ワ行促音便,連用形,ともなう,トモナイ,トモナイ
、 記号,読点,*,*,*,*,、,、,、
退位礼正殿の儀 名詞,固有名詞,一般,*,*,*,退位礼正殿の儀,タイイレイセイデンノギ,タイーレイセイデンノギ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
2019年 名詞,固有名詞,一般,*,*,*,2019年,ニセンジュウキュウネン,ニセンジュウキュウネン
4月30日 名詞,固有名詞,一般,*,*,*,4月30日,シガツサンジュウニチ,シガツサンジュウニチ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
、 記号,読点,*,*,*,*,、,、,、
剣璽等承継の儀 名詞,固有名詞,一般,*,*,*,剣璽等承継の儀,ケンジトウケイショウノギ,ケンジトウケイショウノギ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
2019年 名詞,固有名詞,一般,*,*,*,2019年,ニセンジュウキュウネン,ニセンジュウキュウネン
5月1日 名詞,固有名詞,一般,*,*,*,5月1日,ゴガツツイタチ,ゴガツツイタチ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行わ 動詞,自立,*,*,五段・ワ行促音便,未然形,行う,オコナワ,オコナワ
れる 動詞,接尾,*,*,一段,基本形,れる,レル,レル
。 記号,句点,*,*,*,*,。,。,。
Tokenizer 初期化時,mmap=False
オプションは併用できません。
(venv)$ python
>>> from janome.tokenizer import Tokenizer
>>> t = Tokenizer()
>>> s = '改元にともない、退位礼正殿の儀が2019年4月30日に、剣璽等承継の儀が2019年5月1日 に行われる。'
>>> for token in t.tokenize(s):
... print(token)
...
改元 名詞,サ変接続,*,*,*,*,改元,カイゲン,カイゲン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
ともない 動詞,自立,*,*,五段・ワ行促音便,連用形,ともなう,トモナイ,トモナイ
、 記号,読点,*,*,*,*,、,、,、
退位礼正殿の儀 名詞,固有名詞,一般,*,*,*,退位礼正殿の儀,タイイレイセイデンノギ,タイーレイセイデンノギ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
2019年 名詞,固有名詞,一般,*,*,*,2019年,ニセンジュウキュウネン,ニセンジュウキュウネン
4月30日 名詞,固有名詞,一般,*,*,*,4月30日,シガツサンジュウニチ,シガツサンジュウニチ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
、 記号,読点,*,*,*,*,、,、,、
剣璽等承継の儀 名詞,固有名詞,一般,*,*,*,剣璽等承継の儀,ケンジトウケイショウノギ,ケンジトウケイショウノギ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
2019年 名詞,固有名詞,一般,*,*,*,2019年,ニセンジュウキュウネン,ニセンジュウキュウネン
5月1日 名詞,固有名詞,一般,*,*,*,5月1日,ゴガツツイタチ,ゴガツツイタチ
記号,空白,*,*,*,*, ,*,*
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行わ 動詞,自立,*,*,五段・ワ行促音便,未然形,行う,オコナワ,オコナワ
れる 動詞,接尾,*,*,一段,基本形,れる,レル,レル
。 記号,句点,*,*,*,*,。,。,。
NEologd 開発者の @overlast さんに感謝いたします。
Gitter room または Twitter で声をかけてください。