MeCabをインストールしてPythonで動作させるまでの手順

はじめに
日本語による文章を解析してみたいと思い、色々調べたところMeCabという形態素解析エンジンがあることを知りました。自然言語処理自体に全く縁がありませんでしたが、手始めとしてMeCabをインストールして実際に動作させたのでその手順をメモします。
環境と前提
以下の環境と前提です。今回使用したOSは純粋なUbuntu18.04ですが、Windows Subsystem LinuxやVagrant上のUbuntuでも同じ手順で進められると思います。 なお、Pythonの実行環境はAnacondaを使用して構築済です。もしAnacondaでPython環境を構築していない場合は、UbuntuにAnacondaをインストールしてPythonとJupyter Notebookを動かすまでの手順を見てみてください。
- OS : Ubuntu18.04
- Pythonのバージョン:python3.5(Anaconda)
MeCabとは
MeCabはオープンソース形態素解析エンジンです。形態素解析とは、ある文章、フレーズなどを単語毎に分割したり各単語の品詞を判定したりする解析作業のことです。 文章の中にどのような単語が含まれておりその単語の品詞は何かを判定したり、どの単語が何回出現するかなどを解析できます。 形態素解析エンジンは、MeCabだけでなく他にもいくつかありますが、ここではおそらく一番情報が多いMeCabを使ってみます。 MeCab: Yet Another Part-of-Speech and Morphological Analyzer
できるようになること
この記事では、MeCabをインストールし、Pythonを使って適当な文章を与えて出現する単語に関する情報を表示するところまでの手順をメモします。 例えば、以下のような文章を与えます。
これをMeCabによって以下のように単語毎に分割して品詞を表示します。
MeCabに必要なパッケージをインストールする
今回はMeCabをUbuntu18.04上にインストールします。MeCabが動作するために必要なパッケージをapt
で事前にインストールしておきます。
MeCabをインストールする
続いてpip
コマンドでMeCabをインストールします。なお、MeCabの開発者様のWebサイトからソースをダウンロード、解凍してコンパイルすることでインストールも可能です。
なお、本来であればAnacondaのconda
とpip
の両方を使ってパッケージをインストールすることは避けるべきですが、ここでは最悪環境が壊れても良い前提で手っ取り早くpip
コマンドでインストールします。ちなみに運が良かったのか何度かこの記事の同様の手順を行っていますが、これまで特に問題が起きたことはまだないです。
ここではホームディレクトリ直下にmecab
という名前の適当なディレクトリを作成し、そこで以下のコマンドを実行します。
正常にインストールされると以下のように表示されます。
実際にmecab
コマンドでバージョンを確認してみると、以下のように表示されると思います。
以上でMeCabのインストールは完了です。続いてPythonを使って動作確認を行います。
インストール中にエラーが表示される場合
インストールの際に私が遭遇したエラーを以下にメモしておきます。
IndexError: list index out of range
インストールを実行したところ、以下のようなエラーが表示されました。
これは前述した必要なパッケージ(mecab, mecab-ipadic-utf8, libmecab-dev, swig)がインストールされていない場合に出ました。
したがって、冒頭で述べたようにこれらのパッケージをapt
コマンドでインストールします。その後改めてpip install mecab-python3
を実行すると正常にインストールできました。
PythonからMeCabを使ってみる
実際に簡単なPythonのプログラムを作成してMeCabを使用してみます。以下にサンプルプログラムを載せます。ファイル名はmecab-test.py
としました。
上記を実行してみると以下のように各単語と品詞が表示されます。
どのような情報を出力するかを指定する出力フォーマットはMeCab.Tagger("-Ochasen")
の-O
オプションによって指定できます。
上記で-O
オプションの値として渡したchasen
というのは、別の形態素解析であるChaSen
の出力フォーマットのようです。
そして-O
に渡す値を変更することで出力フォーマットを変更できます。以下に別の3つのオプションをそれぞれ指定した場合の結果をメモします。
wakatiオプション
wakati
はわかち書きを出力するためのオプションです。わかち書きとは、文章で語の区切りに空白を挟んで記述することです。
wakati
を指定すると(すなわち、前述したサンプルプログラムでmecab = MeCab.Tagger ("-Owakati")
とする)、以下のような結果が得られます。
yomiオプション
yomi
は読みを出力するためのオプションです。
yomi
を指定すると(すなわち、前述したサンプルプログラムでmecab = MeCab.Tagger ("-Oyomi")
とする)、以下のような結果が得られます。
dumpオプション
dump
は全ての情報を出力するためのオプションです。
dump
を指定すると(すなわち、前述したサンプルプログラムでmecab = MeCab.Tagger ("-Odump")
とする)、以下のような結果が得られます。
上記の結果がそれぞれ何を出力しているかは、以下のサイト様の「-O --output-format-type」部分に記載されていました。 MeCabのコマンドライン引数一覧とその実行例
まとめ
MeCabを使ってみることで形態素解析に触れることができ面白いです。MeCabを使って色々な文章を解析して遊ぶことができそうです。
関連記事
- 公開日:2019/06/03 更新日:2019/06/03
自然言語処理ライブラリのGiNZAを使って係り受け解析を試す
自然言語処理ライブラリのGiNZAを使って係り受け解析を行ってみたのでその手順をまとめます。指定した文章の係り受け木を作成して、単語間の修飾関係を可視化してみます。また、条件に合致する文章の検索、名詞節の抽出も行います。
- 公開日:2019/05/30 更新日:2019/05/30
News APIへの登録とPythonでニュースを取得するまでの手順
News APIは、いくつかのニュースサイトからトップニュースや条件指定して合致したニュースをJSON形式で取得できるAPIです。2019年5月時点では30,000ほどのニュースサイト等のソースに対応しています。この記事では、実際にNews APIを使用してニュースを取得するまでの手順をまとめます。
- 公開日:2019/04/15 更新日:2019/04/15
UbuntuにAnacondaをインストールしてPythonとJupyter Notebookを動かすまでの手順
AnacondaをUbuntuにインストールしました。Anacondaをインストールすることで、PythonとJupyter Notebookの環境が構築できます。ここではその手順をメモします。
- 公開日:2016/03/13 更新日:2016/03/13
vagrant上のUbuntuでTensor Flowを動かすまでの手順
Tensor FlowはGoogleが2015年11月にオープンソース化して公開した機械学習ライブラリです。少し興味を持ったのでまずはTensor Flowを動かすための環境として、vagrant上のubuntuにインストールして動作させてみました。その手順をメモします。
開発アプリ
