BETA

PythonでMeCabを使った形態素解析

投稿日:2020-01-16
最終更新:2020-01-21

少し自然言語処理で遊ぼうと企んでいます。
最終的に出来上がったものも投稿予定ですが、その過程もメモレベルで残しておきます。

MeCabとは

MeCabとは、オープンソースの形態素解析エンジンです。
形態素解析エンジンとしてJanomeと2人で番を張ってます。

形態素解析とは

形態素解析とは、文章を形態素まで分割し、それぞれの品詞や変化などを表すことです。
自然言語処理ではよく用いられます。
※形態素 = 意味を有する最小の言語単位

形態素解析とは - IT用語辞典 e-Words

MeCabをインストール

macであればhomebrewで二撃で導入できます。

$ brew install mecab  
$ brew install mecab-ipadic  

mecabはMeCab本体で、mecab-ipadicはMeCabが形態素解析で利用する辞書になります。
利用する辞書によっても形態素解析の精度は変化しますが、今回は一番王道なものを利用します。

新し目の辞書を使ってMeCabをPythonから利用する

この時点でTerminalからはMeCabを使えます。

$ mecab  
今日はよく眠れそうな気分です。  
今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー  
は    助詞,係助詞,*,*,*,*,は,ハ,ワ  
よく    副詞,一般,*,*,*,*,よく,ヨク,ヨク  
眠れ    動詞,自立,*,*,一段,連用形,眠れる,ネムレ,ネムレ  
そう    名詞,接尾,助動詞語幹,*,*,*,そう,ソウ,ソー  
な    助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ  
気分    名詞,一般,*,*,*,*,気分,キブン,キブン  
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス  
。    記号,句点,*,*,*,*,。,。,。  
EOS  

実際に動いたものを見ると形態素解析がどんなものか理解しやすいです。

PythonからMeCabを使う

Terminalからいちいち叩いてると日が暮れるので、PythonからMeCabを動かせるようにします。
ライブラリはpipでいれます。

$ pip install mecab-python3  

試しにそれぞれの品詞を抽出してみます。

import MeCab  

text = "今日はあまり眠れなかったです。"  

m = MeCab.Tagger("-Ochasen")  
node = m.parseToNode(text).next  
while node.next:  
    word = node.surface  
    word_class = node.feature.split(",")[0]  
    print(word + ":" + word_class)  

    node = node.next  

# 今日:名詞  
# は:助詞  
# あまり:副詞  
# 眠れ:動詞  
# なかっ:助動詞  
# た:助動詞  
# です:助動詞  
# 。:記号  

いい感じに動いてくれています。
自然言語処理では名詞や動詞だけを教師データとすることが多いそうなので、不要データは抜いてあげたらよさそうです。

あとがき

製作物の一部分として一旦まとめました。
自分はこれ以上テキストを前処理する予定はないですが、実際にはもっと前処理があったほうがいいみたい。

自然言語処理の前処理・素性いろいろ
めちゃくちゃわかりやすくまとめてくれています。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

えんじにあ ひよこ組

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう