LoginSignup
3

More than 1 year has passed since last update.

Python+Windows10でMeCabをインストール (2022/4/13)

Last updated at Posted at 2022-04-12

 形態素解析器として日本語を扱う上で有名なMeCabですが、Windows環境でPythonから使えるようにするのは結構大変でした。Web上に色々な情報が散乱していますが、なかなか上手く行かなかったため、備忘録として残しておきます。
(本記事は2022/4/13時点での最新版であるmecab-python3 1.0.5に合わせたものとなっています。バージョンが異なる場合、他の方法が必要となる可能性がありますが、予めご了承ください)

 基本的には MecabをインストールしてPythonから使ってみた の記事を参考に進めます。

1. MeCab本体のインストール

 まず、公式ページ からMeCab本体を入手し、インストールしてください。Windowsの場合は自己解凍型のインストーラーがあるため、それを使えばインストールは簡単です。
 注意点として、Pythonから利用するためには、インストーラーから聞かれる文字コードをUTF-8にしておく必要があるようです。

 その後、(MeCabインストール先)\binディレクトリを環境変数PATHに設定してください。
 ここでコマンドラインからmecabコマンドを叩いて実行できれば成功です。(失敗している場合は、「コマンドが存在しない」的なエラーになります)
 実行すると入力待ち状態になるため、見かけ上は何も表示されません。また、文字コードの問題で、日本語文を入力しても実行結果の出力が文字化けしますが、どちらも問題ありません。
(コマンドから使いたい場合は、mecab <in.txt >out.txtなど、ファイルを介して入出力すれば正常に使えるはずです)

2. mecab-python3のインストール

 普通にpip install mecab-python3をするとエラーが発生しました。Windowsの場合は自分でビルドが必要とのことです。

2.1. mecab-python3ソースコードの入手と書き換え

 まず、PyPIのページ からソースコードを入手しましょう。
 ダウンロードしたファイルを適当な場所で展開すると、直下にsetup.pyが見つかります。こちらを開いてください。
 こちらのファイルの177行目に定義されている変数WIN_MECAB_DIRに、MeCabのインストール先を指定します。この時、インストールしたフォルダ内sdkディレクトリを指定してください。
(このファイルは参考サイトと異なっています。ご注意ください)

setup.py
// 175行目から引用
# Windows requires special prep
if os.name == 'nt':
    WIN_MECAB_DIR = r'(MeCabインストール先)\MeCab\sdk' // ここを変更

    include_dirs = [WIN_MECAB_DIR]
    library_dirs = [WIN_MECAB_DIR]
    libraries = ['libmecab']
    data_files = [("lib\\site-packages\\MeCab\\",
                  ["{}\\libmecab.dll".format(WIN_MECAB_DIR)])]
    MECAB_EXTENSION = Extension("MeCab._MeCab",
                                ["src/MeCab/MeCab_wrap.cpp"],
                                libraries=libraries,
                                include_dirs=include_dirs,
                                library_dirs=library_dirs)
    # We use a prebuilt MeCab so this is taken care of
    cmdclass = {}
else:
    // ...

2.2. MeCab本体側スクリプトの書き換え

 最初にインストールしたMeCabのスクリプトも一部書き換えが必要です。(MeCabインストール先)\sdkフォルダにあるmecab.hをテキストエディタで開いてください。C++のコードですが、内容は理解できなくても大丈夫なのでご安心ください。
 ここで、779行目の後にvirtual void set_result(const char *str) = 0;という行を追加します。

mecab.h
// 775行目から
/**
 * Lattice class
 */
class MECAB_DLL_CLASS_EXTERN Lattice {
public:

  virtual void set_result(const char *str)        = 0; //追加

  /**
   * Clear all internal lattice data.
   */
  virtual void clear()              = 0;
// ...

2.3. dllファイルのコピー

 (MeCabインストール先)\binフォルダにはlibmecab.dllファイルが存在していますが、インストール段階でうまく参照されません。このファイルを(MeCabインストール先)\sdkフォルダにコピーしてください。
 ファイルを移動すると、インストールできても実行の際に失敗してしまうため、binディレクトリとsdkディレクトリの両方にlibmecab.dllファイルがある状態にしてください。

2.4. インストール

 以上で準備は完了です。最後に、コマンドラインからインストールを行います。
 まず、コマンドラインでsetup.pyがあるディレクトリに移動します。そこで

python setup.py install

を実行します。上手く行けばインストールが成功するはずです。
 赤文字で何かエラーが出た方はインストールに失敗しています。MeCabのインストールとパス設定などを見直してみてください。

2.5. 動作確認

 Pythonを起動して、以下のスクリプトを実行してみてください。(MecabをインストールしてPythonで使う【Windows】より拝借しました)

import MeCab
 
mecab = MeCab.Tagger()
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))

 ImportError等のエラーなく、形態素に分解された情報が出力されればインストール完了です。

2.6. 後始末

 追加した諸々のファイルのうち、不要なものを削除します。(削除しなくても使用上は問題ありません)
 まず、2.1.でダウンロードした、mecab-python3のソースは、全く必要ありません。フォルダごと削除しましょう。
 また、2.3.でコピーしたsdk\libmecab.dllについても削除して構いません。通常使用時はbinディレクトリのものが使用されます。(間違えて.libファイルまで削除しないよう気を付けてください)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3