JUMAN++ver2をwindows10にインストールするまでが滅茶苦茶大変だったので、忘れないためにも備忘しておく。

プログラミング

思っていたより10000倍大変だったので備忘として残す。

結論としては1日半かけて動かすことができるようになった。

BERTのサンプルプログラムを動かしたかっただけなのだが、まさかこんなに時間をとられるとは・・・。(

とほほ)

これだけ時間がかかった原因の一つとしては、参考にした記事があったのだが、文章だけでいかんせん何をしていいのかわからなかったということが考えられる。

やっぱり環境構築系はスクショ付き説明されたほうがわかりやすいですよね・・・?

なのでこの備忘では極力画像付きで説明を残しておきたいと思います。

Juman++ Version: 2.0.0-rc3 をWindowsにインストールする手順

  1. Cmakeをインストールする
  2. Visual Studio 2017 communityをインストールする
  3. Juman++ Version: 2.0.0-rc3をダウンロードする
  4. jumanpp-2.0.0-rc3.tar.xzを展開する
  5. jumanpp-2.0.0-rc3.tarを展開する
  6. jumanpp-2.0.0-rc3をビルドする
  7. jumanpp_v2.exe、jumandic.conf、jumandic.jppmdlをコピーしてC直下に移動させる
  8. batファイルを作成する
  9. 環境変数にpathを通す
  10. 実行して動作を確認する。

全体の流れとしては以上になります。

それでは詳細を説明していきます。

その前に・・・、そもそもなんでこんなめんどくさいことをしなければいけないのかという気持ちはあります。

ぶっちゃけJUMANを動かすのに必要なファイルは3つだけです。

ビルドをして生成される、jumanpp_v2.exe、jumandic.conf、jumandic.jppmdlになります。

このファイルをGoogle Driveか何かにアップロードして、ダウンロードできるようにしちゃダメなんですかね・・・。(誰かやりそうなものだが・・・調べても出てこない。)

とまぁ愚痴をいっても仕方ないですね。ビルドする必要があるのであれば、するしかないでしょう。

所要時間はだいたい(エラーがなければ)1時間くらいで完了できると思います。

ビルドをするのに挫折した人も多いようですが、これを見て成功させられることを祈っております。

Cmakeをインストールする

まずCmakeをインストールします。

公式サイトのダウンロードページからexeファイルをダウンロードしてインストールします。

基本的にデフォルト設定のまま、インストールしていきました。

ということでインストールが完了したら、cmakeが動くかどうか確認します。

はい、動きませんね。環境変数を編集して、pathを通しましょう。

(インストーラーでpathを通すを選んだはずなんだが・・・。)

\CMake\binにpathを通したら、コマンドプロンプトは一度閉じて、開きなおすようにしましょう。

意外と開いたままのコマンドプロンプトでコマンドを試して動かないーなんで?となることがあります。

注意しましょう。

pathが通っていれば「where cmake」で結果が返ってくるはずです。

Visual Studio 2017 communityをインストールする

続いてvisual studio 2017をインストールします。

この段階で「は?なんでやねん」と思う人もいるでしょう。私も思いました。

厳密にいうと必要なのはvisual studio 2017で得られるビルド用のツールです。

PCに変なソフトは入れたくないなと思っていたし、めんどくさくてやる気が起きませんでしたがインストールを決意します。

visual studioは2019が最新で(2020年9月現在)、2017は前のバージョンになります。

ここで私は「2017でもできるんだから2019でもできるだろう」と考えて2019をインストールしたのですが、結局よくわからないことになったので、2019と2017のどちらもインストールする羽目になりました・・・。

(多分2019でもできると思います。最初のインストール画面で、「C++によるデスクトップ環境」を選択して、インストールを押せば2019でもいけるはず・・・!)

ここでは2017の画面で説明をするので、2017をインストールすることをおすすめします。

Visual Studio 2017ダウンロードページ

インストールが完了したら、次に進みましょう。

Juman++ Version: 2.0.0-rc3をダウンロードして、展開する

https://github.com/ku-nlp/jumanpp/releases

Juman++をgitからダウンロードしていきます。

ファイルの大きさは300MBくらいです。

ファイル名は「jumanpp-2.0.0-rc3.tar.xz」になっていました(2020年9月現在)

解凍には7-Zipを使いました。

解凍用のファイルがない方もよっぽど理由がない限りは7-Zipを使えばいいと思います。

インストールは以下からおこなえます。

https://sevenzip.osdn.jp/

7-Zipが用意できたら解凍していきます。

僕は以下のように展開していきました。

最終的に「jumanpp-2.0.0-rc3」というフォルダができ、その中にビルドに必要なファイルが入っています。

jumanpp-2.0.0-rc3をビルドする

では準備が整ったのでビルドしていきます。

ちなみにビルドとは、「実行できる形にファイルを変換し、組み立てること」です。

ダウンロードしてきたファイルも、使えない形では無用の長物ということですね。

ではコマンドプロンプトでCMakeを実行していきます。

その前にjumanを解凍したファイルまでcdしておきしょう。

そして移動できたらビルドされたファイルが格納されるフォルダを[jumanpp-2.0.0-rc3]にmkdirします。

私は[cmake-build-dir]というフォルダを作りました。

コマンドにすると以下になります。

$ cd ●●●/●●●/ ... /jumanpp-2.0.0-rc3  ←展開したファイルまで移動
$ mkdir cmake-build-dir
$ cd cmake-build-dir

ここまで出来たらCmakeしていきます。

コードとしては以下のようになります。

$ cmake -G "Visual Studio 15 2017 Win64" ..
$ cmake --build . --config Release
$ ctest -C Release --output-on-failure

ですが、私のほうはさっそくエラーです。

(py37) C:\Users\●●●\Downloads\jumanpp-2.0.0-rc3.tar\jumanpp-2.0.0-rc3\bld>cmake -G "Visual Studio 15 2017 Win64" ..
-- Building for: NMake Makefiles
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:2 (project):
  The CMAKE_C_COMPILER:

    cl

  is not a full path and was not found in the PATH.

  To use the NMake generator with Visual C++, cmake must be run from a shell
  that can use the compiler cl from the command line.  This environment is
  unable to invoke the cl compiler.  To fix this problem, run cmake from the
  Visual Studio Command Prompt (vcvarsall.bat).

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.


CMake Error at CMakeLists.txt:2 (project):
  The CMAKE_CXX_COMPILER:

    cl

  is not a full path and was not found in the PATH.

  To use the NMake generator with Visual C++, cmake must be run from a shell
  that can use the compiler cl from the command line.  This environment is
  unable to invoke the cl compiler.  To fix this problem, run cmake from the
  Visual Studio Command Prompt (vcvarsall.bat).

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!
See also "C:/Users/sena/Downloads/jumanpp-2.0.0-rc3.tar/jumanpp-2.0.0-rc3/bld/CMakeFiles/CMakeOutput.log".
See also "C:/Users/sena/Downloads/jumanpp-2.0.0-rc3.tar/jumanpp-2.0.0-rc3/bld/CMakeFiles/CMakeError.log".

Cのコンパイラがないと言われているようです。

同じようなエラーになる方もいるかと思ったのでエラー文を載せておきました。

これが出た方は、visual studio 2017の「x64 Native tools comand prompt」を開いてください。開き方はスタートボタンから探すなり、虫眼鏡マークから検索するなりででてくると思います。

要するにCmakeをするためのコンパイラはvisual studioの中にあって、通常のコマンドプロンプトからは使えないってことなんですかね・・・?

正直よくわかっていませんが、「x64 Native tools comand prompt」を押すと出てくるプロンプトでcmakeしていきます。cdで[jumanpp-2.0.0-rc3]まで移動するのを忘れずに。

そしてCMakeを実行します。

念のためもう一度実行するコードを貼っておきます。

$ cmake -G "Visual Studio 15 2017 Win64" ..
$ cmake --build . --config Release
$ ctest -C Release --output-on-failure

1行実行するたびに待ち時間が3分~5分くらいあるかもしれません。

ビルド画面は黄色い文字やら水色の文字やらがでてきてエラーがでているのか、でていないのかよくわかりませんが、一旦待ちます。

このCMakeですが、最初やった時エラーが頻発して心が折れそうになりました。

恐らくjumanppを使ってみようと思ってトライする人の多くがここで挫折するのではと思っています。

ビルドが終わると[cmake-build-dir]の中にはファイルがたくさん生成されていることが確認できます。

ここまでできたらあと少しです・・・が、僕はここから滅茶苦茶時間がかかりました。

jumanpp_v2.exe、jumandic.conf、jumandic.jppmdlをコピーしてC直下に移動させる

ビルドされたフォルダにはファイルがたくさんありますが、前述のとおり使うファイルは3つだけです。

jumanを実行するのに必要なファイル

  • jumanpp_v2.exe
  • jumandic.conf
  • jumandic.jppmdl
  • \jumanpp-2.0.0-rc3\cmake-build-dir\src\jumandic\Releaseの中にjumanpp_v2.exeはあります。
  • \jumanpp-2.0.0-rc3.tar\jumanpp-2.0.0-rc3\modelの中に、jumandic.conf.inとjumandic.jppmdlがあります。jumandic.conf.inは最後の.inを消してしまいましょう

この3つのファイルがあればjumanは動くので、別の場所にこの3つのファイルを移動します。Cドライブ直下に[jumanpp]というフォルダを作成しますが、そこへ3つのファイルを格納しましょう。

格納はjumanpp直下にjumanpp_v2.exe。残りの2つはjumanppの中にもう一つフォルダを作成してそこに格納しておきます。今回名前は[libexec]という名前にしました。

最終的には以下のようになります。

見慣れないbatファイルがありますが、これは今から作っていくので、今はなくて大丈夫です。

jumandic.confの編集とjumanpp.batの作成

jumandic.confをメモ帳でもなんでもいいので編集します。

中身をいかに書き換えてください。(といっても1行目しか変わらないと思います。)

--model=C:/jumanpp/libexec/jumandic.jppmdl
--rnn-nce-bias=5.62844432562
--rnn-unk-constant=-3.4748115191
--rnn-unk-length=-2.92994951022
--feature-weight-perceptron=1
--feature-weight-rnn=0.0176

ここで使用するモデルのファイルパスを記載するようです。

最初は相対パスになっているので、絶対パスに書き換えます。

これでjumanを使えるようになっているのですが、実行をするためには --configというパラメータでconfigファイルのパスを指定しなければいけません。実行のたびにconfigパラメータを書いていてはめんどくさいので、batファイルで常にconfigが参照されるようにします。

exeファイルと同じ場所に[jumanpp.bat]を作成しましょう(右クリックからファイルを作成で大丈夫です)

できたら、batファイルに以下の内容を書き込みます。

@echo off
jumanpp_v2 --config=C:\jumanpp\libexec\jumandic.conf %*

これで、jumanppを実行するだけで、勝手にconfigファイルが参照されるようになりました。

環境変数を編集してpathを通す

これで最後です。

環境変数を編集してpathを通しましょう。

pathを通したらコマンドプロンプトを新規で開き、満を持して動かしてみます。

ちなみにjumanはUTF-8にしか対応していないので、コマンドプロンプトの文字コードをUTF-8に変更してからでないと文字化けします。(chcpで文字コードを変更)

$ chcp 65001
$ echo 見るんじゃない、感じるんだ| jumanpp

見る みる 見る 動詞 2 * 0 母音動詞 1 基本形 2 "代表表記:見る/みる 自他動詞:自:見える/みえる 補文ト"
んじゃ んじゃ んだ 助動詞 5 * 0 ナ形容詞 21 ダ列タ系連用ジャ形 14 NIL
ない ない ない 接尾辞 14 形容詞性述語接尾辞 5 イ形容詞アウオ段 18 基本形 2 "代表表記:ない/ない"
、 、 、 特殊 1 読点 2 * 0 * 0 NIL
感じる かんじる 感じる 動詞 2 * 0 母音動詞 1 基本形 2 "代表表記:感じる/かんじる 補文ト"
んだ んだ んだ 助動詞 5 * 0 ナ形容詞 21 基本形 2 NIL
EOS

うおおおおおおおおおおおお、動いたああああああああああ!!!

となぜここまで感動しているかというと、configの設定がうまくできず、エラー地獄をさまよっていたからです。

InvalidParameter: failed to fixup path:  reason=Windows Error Code 87: パラメーターが間違っています・∪縺吶€・

backtrace:
    jumanpp::jumandic::`anonymous-namespace'::fixupModelPath at C:\Users\sena\Downloads\jumanpp-2.0.0-rc3.tar\jumanpp-2.0.0-rc3\src\jumandic\shared\jumanpp_args.cc:327
    jumanpp::jumandic::parseArgs at C:\Users\sena\Downloads\jumanpp-2.0.0-rc3.tar\jumanpp-2.0.0-rc3\src\jumandic\shared\jumanpp_args.cc:370

jumanのコマンドを実行しても無限にこのエラーがでてきて発狂寸前でした。

(ただconfig設定をちゃんとすれば解決できることだったんですけどね・・・)

最後に

ということで丸2日かかりましたが、windowsでもjumanを動かすことができました。

資料が少ない&わかりにくいので、わかりやすさを優先して記事にしました。

これでもわからんorエラーが解消できないということになったらtwitterやこのサイトの問い合わせから質問いただければ一緒に考えます。(力になれるかどうかは保証しません・・・)

以上です。

これでBERTが動かせるぞおおお!!(たぶん)

参考にしたサイト

NLP準備運動 : 分かち書き環境の構築 Mecab , Juman++ver2 - Qiita

Juman++v2をWindowsでビルドする - TadaoYamaokaの日記

Windows の Python で JUMAN++ を使う - YouTube