MeCabで形態素解析
外国人向けの日本語教育の研究をしてる友人がいて、海外での教材出版などを私も共著者として数回手伝ったりしたのですが、彼が20冊ぐらいの日本語教科書の本文に出てくる単語をひたすらエクセルに入力した表を持っていて、それに品詞名を付けたいと言っていました。
こんな感じのCSV(といっても1列しかないのでカンマが出てこないですがw)で、単語一覧が縦に並んでいる。この各単語の横に、その品詞を挿入したいそうです。単語は延べ3万8000語ぐらいあるので、手作業は厳しい。
というわけで、オープンソースの日本語形態素解析エンジンとして有名なMeCabと、MeCabをRから使うRMeCabパッケージを導入して、手伝いました。ついでにPythonバインディングもインストールしました。
形態素解析ってのは、日本語の文章を単語(品詞)ごとに区切ってくれる技のことです。日本語テキストをコンピュータで処理する際に、たとえば単語の数を数えようと思っても、英語のように「分かち書き」されていないのでどこが区切りか分からない。だから、いったんテキストの全体に形態素解析をかけて、単語単位で区切ってやる必要があります。
ちなみに、友人がやりたがっていたのは「すでに単語に分けられたデータに品詞を振る」だけの作業だったので、今回は分かち書きの処理自体は不要のはずだったのですが、実際には単語単位に分けきってない不完全なデータだったので、結局形態素解析は必要でした。
Macの場合、MeCabはコマンドラインでインストールするので、慣れてないと色々不安な面もありますが、やってみたらすんなり行けました。以下、私なりのメモを書いておきますが、すごく参考になるようなものではないと思います。ターミナルからコマンドラインで操作するのがイマイチわからんという人には参考になるかもしれないです。
なお、インストール後に行った友人の作業手伝いの内容については、次のエントリでまとめてあります。
インストール方法の説明サイトはいくつかみましたが、Macの場合、
MacにMecabをインストールする (2013.3) - Qiita
このページを参考にするのが良いと思います。アンインストールのやりかたも書いてありますね。
MeCabの本家サイトにも説明が色々載ってるんですが、WindowsとLINUXのインストール方法しか載っていません。
MacもLINUXとほとんど同じなのでべつに良いとは言えるのですが、文字コードを指定するオプションとか付けないとダメっぽいです。
ちなみに私のMacのOSはYosemiteです。
ダウンロード
まずはMeCab本体とIPA辞書をダウンロードします。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
このページにいくと下の方に「ダウンロード」ってのがあるので、「MeCab本体 Source」をダウンロードします。
「mecab-0.996.tar.gz」という名前の圧縮ファイルが手に入ります。
次に、その下にある「IPA辞書」ってのをダウンロードします。
「mecab-ipadic-2.7.0-20070801.tar.gz」という名前の圧縮ファイルが手に入ります。
インストールに入る前に、ファイルの置き場をどうするか考えます。
解説サイトを読むとだいたい、ダウンロードフォルダ(~/Downloads)内で圧縮ファイルを展開して、そこからインストールの作業をやってるのですが、ダウンロードしてきたデータ一式はアンインストールの時に必要だったりするし、私はダウンロードフォルダはなるべく常に空にしておきたいので、保存場所を決めることにしました。
Dropboxと同期しているフォルダ内にR用のフォルダを設けてあるので、その中にMeCab用のフォルダをつくって、そこ(~/Dropbox/R/MeCab)に圧縮ファイルを移動させてからスタートすることにしました。
なお、ダウンロード自体もターミナルからやるのであれば、ターミナルを立ち上げて
$ cd ~/Dropbox/R/MeCab/ # 保存したいディレクトリに移動 $ curl -O https://mecab.googlecode.com/files/mecab-0.996.tar.gz $ curl -O https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
とすればいいですね。
コマンドラインをふだん使わない人向けにいうと、ターミナルで何か操作するときは1行のなかでまず冒頭でコマンドを書き、次にスペースをあけて「-」とか「--」で始まるオプション(設定みたいな意味)を必要があれば書き、その後に処理対象とかを具体的に記載します。
上記のコマンドの「cd」ってのはchange directoryの略で、直後で指定するディレクトリへ移動するという意味。「~」はホームディレクトリといって、通常は自分のユーザ名が付いたディレクトリが設定されていますので、「~/Dropbox」と書くと、ホームディレクトリの中にある「Dropbox」ディレクトリに移動するという意味になります。
curlというのはダウンロードするときにつかうコマンドで、「-O」というオプションを付けた上で、URLを直後に書くと、ファイルがダウンロードされます。
以下、ターミナルでのコマンドは頭に「$」が付いてますが、これはターミナルを開いてみれば意味わかります。
MBA2012:~ yk$ cd ~/Desktop
ってなってますが、MBA2012:というのはコンピュータの名前を示し、その後のykってのはログインしてるユーザ名を指します。その後の$から後が自分が打ったコマンドです。以下の記述では、だいたい$以降を表示してます。
「#」以降はコメントアウトです。
インストール
あとは、解説サイトに従って、コマンドラインでインストールを行います。
インストールの大まかな流れは、
- ダウンロードしてきたtarファイル(アーカイブ)をtarコマンドで展開する。
- 展開後のフォルダに移動する。
- ./configureコマンドでコンパイル環境の設定を行う。
- makeコマンドでコンパイルする。
- make checkコマンドでコンパイルエラーのチェックを行う。
- make installコマンドでインストールを行う。
という感じで、これをMeCab本体とIPA辞書のそれぞれに対して実施します。
まずはMeCab本体のインストールを進めていきます。
以下のコマンドを順番に打っていきます。(「~/Dropbox/R/MeCab/」という場所に先ほどダウンロードしたファイルが保存されていることが前提です。)
$ cd ~/Dropbox/R/MeCab/ # MeCabフォルダに移動 $ tar zxfv mecab-0.996.tar.gz # tarアーカイブを展開 $ cd mecab-0.996 # 展開されて出てきたフォルダに移動 $ ./configure # コンパイル環境の自動設定を行う $ make # コンパイル
これで、通常であればコンパイルが行われます。
なお、./configureと打った後などは、処理が始まってターミナル上に大量の文字列が勝手に流れてくるので、止まるまで放置してればいいです。
参考:Xcodeライセンスへの同意
さて、ここまできて、あくまで私の場合にたまたま起きた出来事なのですが、
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
というメッセージが出ました。XCodeのライセンスへの同意が必要みたいなことを言ってますね。
これは発生条件がよく分かりませんが、ググってみると、OSのアプデとかをした後に求められるものらしいです。
osx mavericks - "sudo xcodebuild -license" fails to cure recurring xcode license prompt - Stack Overflow
sudoで打ち直すと、
MBA2012:mecab-0.996 yk$ sudo make Password: You have not agreed to the Xcode license agreements. You must agree to both license agreements below in order to use Xcode. Hit the Enter key to view the license agreements at '/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf'
と出て、やはりXcodeのライセンスに同意しろということのようです。
returnキーを押すとライセンスに関する記述(長い英文)が表示されます。
これを下へ送って行くと最後に、
By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel]
と表示されたので、「agree」と打ったら終わりました。
ところが、その後「make」が続いていくのかと思ったら、「makefileがありません」的なメッセージが表示されて何もできなくなりました。そこで一旦ターミナルを終了して、./configureからやり直したら、コンパイルが無事始まりました。
このXcodeライセンスの件は、たまたま私の場合このタイミングで起きたものであり、MeCabとは直接関係ないのですが、せっかくなのでメモっときました。
インストール
さて、コンパイルが完了したら、
$ make check # チェック(テストが実施される)
と打って、コンパイル結果のチェックを走らせます。
↑のように、テスト完了という表示が出たら成功ですね。何もエラーが出ていなかったので、インストールに進みます。
$ sudo make install # インストールの実施
sudoを頭につけるとsuper user、つまり特権的な権限で何かを実行するという意味になり、Macへのログインやアプリインストールのときなどに使っているパスワードの入力を求められます(Apple IDのパスワードとは別ですよ)。ターミナル上でパスワードを入力してreturn(enter)を押せばOKです。
ここでも、文字列が大量に流れてくるので止まるまで放置し、何もエラーを出さずに停止したら、インストール完了です。
辞書のインストール
次は形態素解析に使われるIPA辞書のインストールです。
$ cd ~/Dropbox/R/MeCab/ # MeCabフォルダに移動 $ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz # tarアーカイブを展開 $ cd mecab-ipadic-2.7.0-20070801 # 展開して出てきたフォルダに移動 $ ./configure --with-charset=utf8 # 文字コードがUTF-8になるオプションをつける $ make # コンパイル $ sudo make install # インストール
デフォルトでは文字コードがEUCになるらしいので、./configureのオプションとしてUTF-8指定は必要ですね。
形態素解析を実行
さて、これでインストールは完了しているはずです。
ターミナル上で「mecab」と打ってreturnを押し、その後に文字列を入れると、解析が実行されます。
たとえば、他の解説サイトにならって、
$ mecab すもももももももものうち
と入力してみます。すると・・・
MBA2012:mecab-ipadic-2.7.0-20070801 yk$ mecab すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
おおおお、成功しました!
MeCabで実行できるその他の処理や辞書のカスタマイズなどは、ググると色々出てきます。
なお、こんなややこしいことしなくても、Homebrew等のパッケージ管理ソフトからインストールできるようです。
MacにMacPortsを使ってmecabを入れる | joppot
Python で Mecabを利用する【mac】 - 39Si
どこかに、MacPortsでのインストールは非推奨と書いてあったような気がしますが。
RMeCabのインストール
さて次は、MeCabをRから使えるようにするRMeCabパッケージをRに導入します。これにより、日本語テキストに対して統計解析を行えるようになるというわけです。
インストールはめちゃめちゃ簡単で、CRANパッケージではないんですが、
http://continue-is-power.com
ここに書いてあるように、Rを起動して、コンソール上で、
install.packages("RMeCab", repos = "http://rmecab.jp/R")
というコマンド一発打ったら終わりです。
これ以降は、Rから、
> library(RMeCab) > RMeCabC("すもももももももものうち") [[1]] 名詞 "すもも" [[2]] 助詞 "も" [[3]] 名詞 "もも" [[4]] 助詞 "も" [[5]] 名詞 "もも" [[6]] 助詞 "の" [[7]] 名詞 "うち"
こんな感じで形態素解析が実行できます。
RMeCabの使い方はいろんなところに解説がありますね。
RパッケージRMeCabで用意されている関数
Pythonからも動かせるように
次に、PythonからMeCabを動かすやつを入れてみます。
$ cd ~/Dropbox/Python/MeCab/ # 移動しておく $ wget https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz # ダウンロード $ pip install mecab-python-0.996.tar.gz # インストール
これで一瞬で終了しました。
ダウンロードはwgetではなく
curl -O https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
でもいいです。(Macは標準ではwgetコマンドがはいってないし。)
使い方は、
https://taku910.github.io/mecab/bindings.html
ここに載ってますが、
>>> import MeCab >>> m = MeCab.Tagger ("-Ochasen") >>> print m.parse ("すもももももももものうち") すもも スモモ すもも 名詞-一般 も モ も 助詞-係助詞 もも モモ もも 名詞-一般 も モ も 助詞-係助詞 もも モモ もも 名詞-一般 の ノ の 助詞-連体化 うち ウチ うち 名詞-非自立-副詞可能 EOS
できました。
MeCabのアンインストール
最初の解説サイトに載ってた内容そのまんまですが、MeCabをアンインストールするには、アーカイブを展開したフォルダに移動してから「make uninstall」すればいいだけです。
# 辞書をアンインストール $ cd ~/Dropbox/R/MeCab/mecab-ipadic-2.7.0-20070801 $ sudo make uninstall # MeCabをアンインストール $ cd ~/Dropbox/R/MeCab/mecab-0.996 $ sudo make uninstall