BERTの日本語Pretrainedモデルを試してみたくなったので、その準備として、Juman++v2のWindowsでのビルドを行った。
ほぼ公式通りなので、あまり記事にする意味はないが手順をメモしておく。
Juman++v1はWindowsに対応していなかったが、v2は公式でWindowsにも対応している。
現在rc2がリリースされているが、ビルド済みバイナリは配布されていないため自分でビルドする必要がある。
rc2のダウンロード
GitHubのリリースからv2.0.0-rc2をダウンロードして適当なディレクトリに展開する。
jumanpp-2.0.0-rc2.tar.xzの中にソースと学習済みモデルが含まれている。
Visual Studio 2017のインストール
ビルドにはVisual Studio 2017 Communityを使用する。
CMakeのインストール
ビルドツールにCMakeを使用する。CMakeのWindows版をインストールして環境変数PATHを設定する。
(Visual Studio 2017 CommunityのオプションでCMakeをインストールしている場合は不要)
ビルド
スタートメニューから「VS 2017用 x64 Native Tools コマンドプロンプト」を起動して、jumanpp-2.0.0-rc2.tar.xzを展開したディレクトリで以下の順にコマンドを実行する。
mkdir cmake-build-dir cd cmake-build-dir cmake -G "Visual Studio 15 2017 Win64" .. MSBuild jumanpp.sln /t:build /p:Configuration=RelWithDebInfo;Platform="x64"
src\jumandic\RelWithDebInfoに実行ファイル「jumanpp_v2.exe」が生成される。
テスト
Juman++v2が対応している文字コードはUTF-8のため、コマンドプロンプトのコードページをUTF-8に変更してテストする。
chcp 65001 cd src\jumandic\RelWithDebInfo echo 魅力がたっぷりと詰まっている| jumanpp_v2 --model=..\..\..\..\model\jumandic.jppmdl
以下のように表示される。
魅力 みりょく 魅力 名詞 6 普通名詞 1 * 0 * 0 "代表表記:魅力/みりょく カテゴリ:抽象物" が が が 助詞 9 格助詞 1 * 0 * 0 NIL たっぷり たっぷり たっぷりだ 形容詞 3 * 0 ナノ形容詞 22 語幹 1 "代表表記:たっぷりだ/たっぷりだ" と と と 助詞 9 格助詞 1 * 0 * 0 NIL 詰まって つまって 詰まる 動詞 2 * 0 子音動詞ラ行 10 タ系連用テ形 14 "代表表記:詰まる/つまる ドメイン:料理・食事 自他動詞:他:詰める/つめる" いる いる いる 接尾辞 14 動詞性接尾辞 7 母音動詞 1 基本形 2 "代表表記:いる/いる" EOS
別の例
echo 外国人参政権| jumanpp_v2 --model=..\..\..\..\model\jumandic.jppmdl
外国 がいこく 外国 名詞 6 普通名詞 1 * 0 * 0 "代表表記:外国/がいこく ドメイン:政治 カテゴリ:場所-その他" 人 じん 人 名詞 6 普通名詞 1 * 0 * 0 "代表表記:人/じん カテゴリ:人 漢字読み:音" @ 人 じん 人 名詞 6 普通名詞 1 * 0 * 0 "代表表記:人/ひと カテゴリ:人 漢字読み:訓" 参政 さんせい 参政 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:参政/さんせい ドメイン:政治 カテゴリ:抽象物" 権 けん 権 名詞 6 普通名詞 1 * 0 * 0 "代表表記:権/けん カテゴリ:抽象物 漢字読み:音" EOS
Juman++v2は、v1に比べて250倍速くなっているようなので、未知語を多く含む場合MeCabに代わる形態素解析として使えそうな気がします。それでもMeCabよりは1桁以上遅いようです。
2019/7/28 追記
モデルは、モデルファイルを直接渡さずに、jumandic.confを引数に指定する方が良い。
jumanpp-2.0.0-rc2.tar.xzに含まれるmodel/jumandic.conf.inをmodel/jumandic.confにリネームして、--modelの行にモデルファイルのパスを設定する。
jumanpp_v2の引数には、
--config=H:\src\jumanpp-2.0.0-rc2\model\jumandic.conf
のようにjumandic.confのパスを指定する。