readこんにちは、日本語のテキスト処理してますか。最近はBERTやらTFhubで使えるのEmbeddingのモデルが一段と増えてきて、楽しいですね。BERTで用いられるWordPieceや、MeCabの作者としても有名な工藤さんの新作、SentencePieceといった新しいTokenizerが出てくる一方で、TFhubで用意されているNNLMのtokenizerは公開されていないので結局MeCabで頑張らないといけない(少なくとも当初Tokenizerなんて要らないよという返事をされた)など、2018年の今でもMeCabの重要性は変わらず続いています。そこで、今回はWindowsでも形態素解析をしたいという人にどうしたらいいんだっけという話の2018年12月版をしたいと思います。tl;dr64bit版のMeCabインストーラーが欲しい場合はikegami-yukinoさんのこちらの非公式インストーラが便利でしょう。Pythonはmecab-python-windowsもPypiに用意していただいています最新のWindows用のMeCabのexeとdll、ipadicがzipでほしいという人は、私がCIでビルドしている物を使ってください。拓の{ProductTitle}。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。Python実装のJanomeからUnidicベースのMeCabに移行されました。需要は高まっています。(mecab-python3)また、日本語の機械学習の本が新たに出ていますが、大抵の場合Pythonでmecab-python3を使いましょうとありますが、現状まだwheelの提供もないためSWIGも用意しsourceからのビルドが前提です。Windowsの人にそれを要求するのはハードルが高いです。OSを使っているということが前提だと思います。いえ、MeCabの公式サイトには32bit版のバイナリしか存在しておらず、自前のビルド環境を用意していないことが多いWindowsの皆様におかれましては面倒くさい状況になっていると言えます。8年前の自分の記事が役に立つときが来るとは...。3年前のMinGW用の修正が今年になってマージされたときにMSVCでのビルドが壊れてしまいました。一応PRを投げましたが、いつマージされるかはわからない状況です。ikegami-yukinoさんという方が64bit版exeを配布されていますが(windows用wheelも)、CIでexe実行してインストーラ回すのどうすればいいんだっけということで、zipで固められたものがほしいなぁと思いました。Python用のwheelをbuildしているのを見つけました。いうことで、車輪の再発明をしました。32bitバイナリを公開しています。build.batにだいたい詰まっていますが、先程送ったPRをベースにMSVC用のMakefileを改めて作り、それらをCIでビルドしています。各Pythonバージョンごとのwheelも作っています。libmecab.dllを使えばRubyなど別の言語のMeCabバインディングからも利用することができます。libmecab.dllがあるとnatto経由で使えて便利というのを手元で確認しています。scriptやawk、perlの塊でビルドする必要があり、WSL使ってUbuntu用意するのが最短のようです(敗北感しかない)。Python拡張モジュールのbuildの話そもそも、Pythonのパッケージでは予めビルドされたwheelという仕組みがあります。するだけでC拡張があるパッケージが入れられるわけです。苦しまなくても良いような仕組みがあるということです。Studioのバージョン(あるいはビルドツール)を用意しないといけません。詳しくはPythonコミッター稲田さんの以下の記事をご参照ください。考えようによっては、MSVCの環境を用意すればWindowsのバージョンに依存しないバイナリパッケージが用意できるので、非常に楽です。少なくともmacOSはもっと楽なのですが、なぜ楽と言えるのかについてもお話しようと思います。Linux用wheelを用意するLinuxにおいては、様々なディストリビューションの違いがある中で、各種環境で共通のwheelを用意するのは難しい問題でした。Windows/macOSでwheelが使われるようになり、その恩恵をLinuxでもあずかれるようにということでmanylinuxという枠組みができました。imageをベースとしてwheelをビルドします。513に詳細は記述されています。作り方等々は稲田さんの記事と、PyPAのpython-manylinux-demoリポジトリが参考になるでしょう。5ベースのgccで新しいプロダクトのbindingを用意するのは地獄です。(非常に議論が沸き起こっているところですが)TensorFlowはmanylinux1というタグを使っているにもかかわらずもっと新しい環境で用意したwheelを用意しています。2010が準備されています。以下のissueを見る限りでは、次のpipからmanylinux2010を扱えるようになり、そろそろ準備が整ってきているようです。installできるようにしました。本家にもPRを送ったんですが、appveyorの設定がまだされていないので、fork版をお使いください。Windowsも入るようになっています。2.7は除く)issueがあればこちらにどうぞ。