今回は、形態素解析エンジンのMeCabをPythonと一緒に使ってみます。本記事は、Pythonで形態素解析やってみたいなぁと思った方が取り敢えず使いはじめることが出来る状態になることをゴールとしています。
参考にした記事はこちら
Python で Mecabを利用する【mac】
ところで、MeCabの読み方は「ミーキャブ」?「めかぶ」?
MeCab (和布蕪)とは
(中略)
ちなみに和布蕪(めかぶ)は, 作者の好物です。
MeCab: Yet Another Part-of-Speech and Morphological Analyzerにこのように書かれているので、読み方は「めかぶ」が正解でしょう。
では、本題。
環境
- Mac OSX El Capitan
- Homebrew 0.9.9
- Python 3.5.0
- pip 8.0.2
Python2.7系でも動きますが、Unicodeの扱いが面倒なのでPython3系をおすすめします。
(追記:2017/03/11)Python3系のインストール方法はこちらの記事にまとめました。
【超初心者向け】MacにPython 3をインストールする方法+アンインストール方法
インストール
MeCabのインストール
1 |
$ brew install mecab-ipadic |
※brew install mecabと打たなくても、依存関係にあるmecabをちゃんとインストールしてくれます。
1 2 |
$ mecab -v mecab of 0.996 |
インストールされたMeCabのバージョンが表示されたら成功です。
試しにTerminal上で使ってみましょう。適当な文章を打ってreturnキーを押します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ mecab めかぶは体にいいって本当ですか? め 名詞,一般,*,*,*,*,め,メ,メ かぶ 動詞,自立,*,*,五段・ラ行,体言接続特殊2,かぶる,カブ,カブ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 体 名詞,一般,*,*,*,*,体,カラダ,カラダ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ って 助詞,格助詞,連語,*,*,*,って,ッテ,ッテ 本当 名詞,一般,*,*,*,*,本当,ホントウ,ホントー です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ ? 記号,一般,*,*,*,*,?,?,? EOS |
残念ながら「めかぶ」が名詞であることは理解出来なかったようですが、動いていることを確認できます。
終了したいときはcontrol + cで終わってください。
PythonでMeCabを使えるようにする
PythonでMeCabを使うにはnatto-pyが必要です。メカブに納豆にとにかく食べ物の名前が出てきますがインストールしましょう。
1 |
$ pip install natto-py |
環境によってはpip3 install natto-py
と打つ必要があります。
インストールの際に下記のようなエラーメッセージが出るかもしれません。
1 2 3 4 5 |
c/_cffi_backend.c:15:10: fatal error: 'ffi.h' file not found #include ; ^ 1 error generated. error: command 'clang' failed with exit status 1 |
その際は、次のコマンドを打って再度pip installしてください。(参考:pip cffi package installation failed on osx)
1 |
$ xcode-select --install |
では、PythonでMeCabが使えるようになったか確認しましょう。
1 2 |
$ python3 from natto import MeCab |
特にエラーが出なければ成功です。
Pythonコードを書いてみよう
Python の MeCab バインディング natto-py を使うのサンプルコードをそのまま使います。
1 2 3 4 5 6 7 8 9 |
# -*- coding: utf-8 -*- from natto import MeCab mc = MeCab() text = "アルバイト・パート本社は明治42年創業、大阪中央郵便局内に職員食堂として開業。以後順調に業績を延ばし、全国20ケ所に営業所を開設している。" print(mc.parse(text)) |
このファイルを実行すると以下の様な内容で出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
アルバイト 名詞,サ変接続,*,*,*,*,アルバイト,アルバイト,アルバイト ・ 記号,一般,*,*,*,*,・,・,・ パート 名詞,一般,*,*,*,*,パート,パート,パート 本社 名詞,一般,*,*,*,*,本社,ホンシャ,ホンシャ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 明治 名詞,固有名詞,一般,*,*,*,明治,メイジ,メイジ 4 名詞,数,*,*,*,*,4,ヨン,ヨン 2 名詞,数,*,*,*,*,2,ニ,ニ 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン 創業 名詞,サ変接続,*,*,*,*,創業,ソウギョウ,ソーギョー 、 記号,読点,*,*,*,*,、,、,、 大阪 名詞,固有名詞,地域,一般,*,*,大阪,オオサカ,オーサカ (以下省略) |
名詞だけを抽出してみる
形態素解析を使う理由の一つとしてこのようなことがあるのではないでしょうか。長い文章の中にどのような言葉がよく使われているのか。よく使われている言葉は、「人気のキーワード」としてサジェストに加えたい。キーワードといえば名詞なので、MeCabを使って長い文章から名詞だけを抽出するプログラムを書いてみます。
サンプルコードはGistに上げましたのでご自由にお使いください。
これで名詞だけを抽出することができました。あとはDBに入れるなりして頻出ワードを解析することができます。
以上、思ったよりも簡単に形態素解析ができました。
Pythonに興味がある方は、動画で本格的に勉強してみませんか? みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 (Udemy) 参加条件は以下のとおりです。
- 中学レベルの数学で十分です。高度な数学は必要ありません。
- プログラミングが全くの未経験でも問題ありません。
- MacでもWindowsでも大丈夫です。
コメント
コメントは停止中です。