WSL上にソースコードからMeCabをインストール

スポンサーリンク
環境構築
スポンサーリンク

Windows上で形態素解析エンジンMeCabを使うにはWindows版のMeCabをインストールする方法と、DocekerやWSLなどの仮想環境のLinux上でmecabをインストールする方法があります。今回は、WSLでソースコードからMeCabをインストールする方法をまとめみます。

形態素解析エンジンmecabについて

「MeCab」は『京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジン』です。(公式ページ

私の過去のブログでDockerを使ってmecabの環境構築方法をまとめています。ubuntuでaptコマンドで簡単にインストール可能ですので、Dockerが使える環境であればそちらが簡単です。今回はDockerの環境構築が面倒な場合でも場合でもできるWSL環境でのインストールを試してみます。下にWSL2の導入方法とDockerでのmecabの導入方法の記事のリンクを貼っておきます。Dockerを使うためには多分WSL環境を設定する必要があるので、WSLの設定はする必要はあるかと思います。。。

参考:Windows11へのLinux環境の構築(WSL2の設定)
参考:Dockerで日本語形態素解析エンジンMeCabのPython開発環境を構築

MeCabをソースコードからインストールする手順

以下の手順でインストールしていきます。

  1. MeCabのソースコードと辞書ファイルをダウンロード
  2. ダウンロードしたファイルを解凍
  3. MakeFileの生成
  4. MeCabのコンパイル
  5. MeCabのインストール

今回は、上記に加えて、辞書ファイルの文字コードをWindowsと相性の良いUTF-8に変換します。

MeCabのソースコードと辞書ファイルのダウンロード

MeCabの公式サイトから、ソースコードとIPA辞書ファイルをダウンロードします。
ソースコード:mecab-0.996.tar.gz
IPA辞書:mecab-ipadic-2.7.0-20070801.tar.gz

ダウンロードしたファイルはエクスプローラーなどで、WSL環境のhomeディレクトリなど、分かりやすいところにコピーします。下の例では、WSLで作成した「Ubuntu2」という環境のディレクトリを開いたところです。

MeCabのインストール

では、WSLのターミナルからMeCabのインストールをしてきます。まず、前準備として、makeコマンドなどを実施するためのビルドツールと、辞書をUTF-8に変換するための文字コード変換ツールnkfをインストールします。まず、「apt-get update」でパッケージリストとそれらのインストールをaptコマンドで実施します。「Permission denied」のエラーが起こる場合は、先頭に「sudo」を付けます。(以下も同様)

$ sudo apt-get update
$ sudo apt install build-essential
$ sudo apt-get install nkf

続いて、ダウンロードしたMeCabのtarファイルの保存しているディレクトにいって、tarファイルを解凍します。今回はhomeの下にmecabというディレクトリを作成し、その中に入れています。
解凍すると「mecab-0.996」というディレクトリの中に解凍されるので、cdコマンドで移動して中を確認してみます。

(base) home@DESKTOP-0BCJOPC:~/mecab$ ls
mecab-0.996.tar.gz  mecab-ipadic-2.7.0-20070801.tar.gz
(base) home@DESKTOP-0BCJOPC:~/mecab$ sudo tar zxfv mecab-0.996.tar.gz
(base) home@DESKTOP-0BCJOPC:~/mecab$ ls
mecab-0.996  mecab-0.996.tar.gz  mecab-ipadic-2.7.0-20070801.tar.gz
(base) home@DESKTOP-0BCJOPC:~/mecab$ cd mecab-0.996
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-0.996$ ls
AUTHORS    GPL          Makefile.in     aclocal.m4    config.sub    example     mecab-config.in  mkinstalldirs
BSD        INSTALL      Makefile.train  config.guess  configure     install-sh  mecab.iss.in     src
COPYING    LGPL         NEWS            config.h.in   configure.in  ltmain.sh   mecabrc.in       swig
ChangeLog  Makefile.am  README          config.rpath  doc           man         missing          tests

引き続いて、公式ホームページの説明に従って「./configure」で、Makefileを生成します。
また、つづいて、コンパイルを実施し、インストールします。mecabを確認したときに、下記のように辞書(libmecab)がないと怒られたら、インストールが成功です。

(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-0.996$ sudo ./configure
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-0.996$ sudo make
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-0.996$ sudo make check
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-0.996$ sudo make install
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-0.996$ mecab -v
mecab: error while loading shared libraries: libmecab.so.2: cannot open shared object file: No such 
file or directory

辞書ファイルのインストール

再びダウンロードしたtarファイルのある場所に戻り、今度は辞書を解凍します。
解凍後、nkfでutf-8に文字コードを上書きします。次いで、辞書ファイルのディレクトリに入ります。

(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-0.996$ cd ..
(base) home@DESKTOP-0BCJOPC:~/mecab$ ls
mecab-0.996  mecab-0.996.tar.gz  mecab-ipadic-2.7.0-20070801.tar.gz
(base) home@DESKTOP-0BCJOPC:~/mecab$ sudo tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
(base) home@DESKTOP-0BCJOPC:~/mecab$ nkf --overwrite -w mecab-ipadic-2.7.0-20070801/*
(base) home@DESKTOP-0BCJOPC:~/mecab$ cd mecab-ipadic-2.7.0-20070801/

その中の「dicrc」をメモ帳などでひらいて、config-charsetをEUC-JPからUTF-8に書き換えます。

;
; Configuration file of IPADIC
;
; $Id: dicrc,v 1.4 2006/04/08 06:41:36 taku-ku Exp $;
;
cost-factor = 800
bos-feature = BOS/EOS,*,*,*,*,*,*,*,*
eval-size = 8
unk-eval-size = 4
config-charset = UTF-8

(以下、略)

configureを実行して「Makefile」を作成します。

(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-ipadic-2.7.0-20070801$ sudo ./configure 

作成した「Makefile」の252行目付近にある文字コード設定部分のEUC-JPとeuc-jpをそれぞれ、UFT-8とutf-8に書き換えます

(252行目付近)
matrix.bin char.bin sys.dic unk.dic:
	$(mecab_dict_index) -d . -o . -f UTF-8 -t utf-8

引き続き、「ldconfig」により共有ファイルを認識させた後、「make」と「make install」でコンパイルとインストールをします。「mecab -v」でMeCab0.906がインストールされていることを確認します。

(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-ipadic-2.7.0-20070801$ sudo ldconfig
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-ipadic-2.7.0-20070801$ sudo make
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-ipadic-2.7.0-20070801$ sudo make install
(base) home@DESKTOP-0BCJOPC:~/mecab/mecab-ipadic-2.7.0-20070801$ mecab -v
mecab of 0.996

MeCabのテストとPython下での使用

では、MeCabを使ってみます。直接、「mecab」と入力するとMeCabが起動し、そこに日本語を入力すると、形態素解析をしてくれます。

(base) home@DESKTOP-0BCJOPC:~/test$ mecab
私は学校まで歩いていきます。
私      名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
学校    名詞,一般,*,*,*,*,学校,ガッコウ,ガッコー
まで    助詞,副助詞,*,*,*,*,まで,マデ,マデ
歩い    動詞,自立,*,*,五段・カ行イ音便,連用タ接続,歩く,アルイ,アルイ
て      助詞,接続助詞,*,*,*,*,て,テ,テ
いき    動詞,非自立,*,*,五段・カ行促音便,連用形,いく,イキ,イキ
ます    助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。      記号,句点,*,*,*,*,。,。,。
EOS

また、Pythonで使うためにはMeCabのPythonのラッパーである「mecab-python3」をインストールする必要があります。pipコマンドなどでライブラリをインストールします。

(base) home@DESKTOP-0BCJOPC:~$ pip install mecab-python3

使用方法はMeCab.Tagger()で作ったオブジェクトにparseでテキストを与えると形態素解析をしてくれます。

import MeCab
tagger = MeCab.Tagger()
text = "MeCabは有用な形態素解析のツールです。"
print(tagger.parse(text))
MeCab	名詞,固有名詞,組織,*,*,*,*
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
有用	名詞,形容動詞語幹,*,*,*,*,有用,ユウヨウ,ユーヨー
な	助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
形態素	名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析	名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
ツール	名詞,一般,*,*,*,*,ツール,ツール,ツール
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,。,。,。
EOS

コメント