MeCabの辞書にipadicとNEologdを併用したものを使ってみる。

 

NEologdの公式ページによると、

github.com

 

Web上の文書の解析をする際には、NEologdと標準のシステム辞書(ipadic)を併用するのが良いらしいので、システム辞書にNEologdを追加したものを作り、実際に使ってみました。

 

 

環境

pythonMeCabはインストール済みです。

Windows & Ubuntuでのやり方

ここではWindowsUbuntuでのやり方を書いていきます。

こちらの記事を参考にさせて頂きました。

私はWindowsを使っているのでWindows Subsystem for Linuxを利用して作業を進めました。Ubuntuを使っている方も同じやり方で進めていけばインストールできると思います。

1. ipadicを用意する

まず管理者権限でターミナルを開いて適当な作業ディレクトリを作成し、そこに移動します。

$ mkdir workspace && cd workspace

次に以下のURLからipadicをダウンロードします。

https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM

ダウンロードフォルダにあると思うので、作業ディレクトリに移動させましょう。

移動させたら解凍します。

$ tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz

必要なパッケージをインストールしてから、辞書をインストールします。

$ sudo apt update && sudo apt upgrade
$ sudo apt install nkf
$ nkf --overwrite -Ew mecab-ipadic-2.7.0-20070801/*
$ cd mecab-ipadic-2.7.0-20070801/
$ /usr/lib/mecab/mecab-dict-index -f utf-8 -t utf-8
$ ./configure
$ sudo make install

辞書をコンパイルする際にmecab-dict-indexを使いますが、人によっては置かれている場所が異なるかもしれません。

そんなときは、例えばfindを使えば見つかると思います。

$ find /usr -name "mecab-dict-index"

2. Neologdを用意する

次にNEologdをダウンロードします。

作業ディレクトリに戻って、

$ cd ..
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

そして、辞書ファイルを解凍してipadicに移動させます。

$ xz -dkv mecab-ipadic-neologd/seed/*seed*
$ mv mecab-ipadic-neologd/seed/*.csv mecab-ipadic-2.7.0-20070801/

最後にシステム辞書に追加します。再コンパイルしてからインストールします。

$ cd mecab-ipadic-2.7.0-20070801
$ /usr/lib/mecab/mecab-dict-index -f utf-8 -t utf-8
$ sudo make install

3. 新しいシステム辞書を使えるようにする。

ipadicにNEologdを追加した新しい辞書を作ることができたので、これをWindowsで使えるようにしたいと思います。ここでは3通りの方法について書いてみます。

① パスを指定する。

普段MeCabを使うときは下のようにしている思います。

tagger = MeCab.Tagger('-Owakati')

 

オプション-dに続けて辞書のパスを指定すると、今回作った辞書を使うことができます。

#tagger = MeCab.Tagger(r'-Owakati -d /mnt/c/mecab')
tagger = MeCab.Tagger(r'-Owakati -d C:\mecab')

この例ではCドライブ直下にmecabと名付けたディレクトリを作り今回用意した辞書に必要なファイルを全てmecabに移しました。

$ mkdir /mnt/c/mecab
$ mv mecab-ipadic-2.7.0-20070801/* /mnt/c/mecab/

② デフォルトで使用されている辞書の中身を変更する。

人によってMeCabのインストール場所は異なると思いますが、Windowsを使っている私の場合MeCabC:\Program Files (x86)にあります。

そして、デフォルトで使用されている辞書はC:\Program Files (x86)\MeCab\dic\ipadicです。

今回用意した新しい辞書をデフォルトで使用されているところに移します。

念のためバックアップをとってから、

$ mkdir /mnt/c/Program\ Files\ \(x86\)/MeCab/dic/backup
$ mv /mnt/c/Program\ Files\ \(x86\)/MeCab/dic/ipadic/* /mnt/c/Program\ Files\ \(x86\)/MeCab/dic/backup/
$ mv mecab-ipadic-2.7.0-20070801/* /mnt/c/Program\ Files\ \(x86\)/MeCab/dic/ipadic/

これだと、

tagger = MeCab.Tagger('-Owakati')

辞書のパスを指定せずに新しい辞書が使えます。

③ mecabrcを書き換える

②の方法では必要なファイルをデフォルトで使用されているフォルダに移動させていましたが、この方法は新しく作った辞書がどこにあるのかをmecabrcに書き込みます。

mecabrcは私の環境だと、C:\Program Files (x86)\MeCab\etcにあります。

私は新しい辞書をCドライブ直下にmecabというディレクトリを作り、mecabrcのdicdirを以下のように書き換えました。

dicdir = C:\mecab
; dicdir = $(rcpath)\..\dic\ipadic

この方法ではMeCabを使うときに辞書のパスを指定する必要はありません。

tagger = MeCab.Tagger('-Owakati')