TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

Juman++v2をWindowsでビルドする

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を使用する。CMakeWindows版をインストールして環境変数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のパスを指定する。