MeCabのセットアップとPythonでの形態素解析

Posted on May 18, 2017 by D4prog

この記事の内容

  1. MeCab/形態素解析とは
  2. MeCabのセットアップ
  3. Python3からMeCabを使う

MeCab/形態素解析とは

MeCabとは、日本語を対象とする形態素解析エンジンです。 では形態素解析エンジンとは何か、という話になりますが、自然言語を単語に分割して品詞を判定する作業を行うプログラムです。

国語の授業で、文節や単語に分割して品詞を書く課題、ありましたよね? あれです。

import MeCab
t = MeCab.Tagger()
print(t.parse("これは日本語で書かれた品詞に分割される文章です"))
これ	名詞,代名詞,一般,*,*,*,これ,コレ,コレ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
日本語	名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
で	助詞,格助詞,一般,*,*,*,で,デ,デ
書か	動詞,自立,*,*,五段・カ行イ音便,未然形,書く,カカ,カカ
れ	動詞,接尾,*,*,一段,連用形,れる,レ,レ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
品詞	名詞,一般,*,*,*,*,品詞,ヒンシ,ヒンシ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
分割	名詞,サ変接続,*,*,*,*,分割,ブンカツ,ブンカツ
さ	動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れる	動詞,接尾,*,*,一段,基本形,れる,レル,レル
文章	名詞,一般,*,*,*,*,文章,ブンショウ,ブンショー
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス

形態素解析ができると何が嬉しいか

botが作れます

というのは一例で、上述したように、単語の区切りがどこで品詞が何かをプログラムに伝えることができるので、自然言語を対象とした処理の前処理として形態素解析をすると色々と楽です。

といった、ちょっと日本語を品詞レベルで解析する必要があるときに便利です。

形態素解析は何ではないか

MeCabのセットアップ

[@debian, ubuntu] # apt install -y mecab libmecab-dev mecab-ipadic-utf8

yumでMeCabをインストール - Qiita

[@CentOs] # rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm && yum makecache
          # yum install -y mecab mecab-ipadic

Python3からMeCabを使う

# pip3 install mecab-python3
import MeCab
t = MeCab.Tagger()

def wordAttr(str):
    [word, attrs] = str.split('\t')
    return word, attrs.split(',')

sentence = "これはNHKやJASRACやミッキーマウスといった固有名詞を含む文章です"

words = [wordAttr(r) for r in t.parse(sentence).split('\n')[0:-2]]
props = [word for word, attrs in words if attrs[1] == "固有名詞"]
print(props)
['NHK', 'ミッキーマウス']

JASRACは '名詞', '一般' と出ていました。ちっ。

さいごに

今回改めてインストールがどれだけ短くなるかやってみたら、前にやった時の何倍も簡単な方法を見つけてしまったので今回記事のインストール部分がとても短くなっております