この記事の内容

  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は ‘名詞’, ‘一般’ と出ていました。ちっ。

さいごに

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