MeCabでわかち書き

MeCabのインストール

仕事でAIを使って自然言語分析をしなければならなくなったので、 覚書です。

MeCab とは京都大学とNTTコミュニケーションズの共同研究で開発された オープンソースのわかち書きを行うエンジンです。

「わかち書き」とは、形態素解析とも言いますが、自然言語を意味を持つ最小 単位で品詞に分解していく作業です。AIの分野では自然言語を扱うことが一つの テーマですが、大体形態素分析してベクターや構文解析などを行い意味の把握を行う という進め方のようです。

仕事ではうちの製品を使えという制約が出てきそうですが、 研究なのでここではオープンソースの MeCab を試して見ます。

Mac の場合、Homebrew で辞書も含めて MeCab を簡単にインストールできます。

$ brew install mecab
$ brew install mecab-ipadic
$ brew install mecab-jumandic
$ brew install mecab-unidic

IPAコーパス、京都コーパス、BBCWJコーパスに基づいた3つの辞書をインストールして います。

RubyからMeCabを試す。

Rubyからそれぞれの辞書を簡単に試すためのコードです。

require 'mecab'

DICTIONARY = {
  ipadic: '/usr/local/lib/mecab/dic/ipadic',
  jumandic: '/usr/local/lib/mecab/dic/jumandic',
  unidic: '/usr/local/lib/mecab/dic/unidic',
}

def wakati(text,dic)
  node = MeCab::Tagger.new("-d #{DICTIONARY[dic]}").parseToNode(text)
  wakati = ''
  while node
    if not(node.feature.include?( "BOS/EOS" ))
      wakati << "#{node.surface} : #{node.feature}\n"
    end
    node = node.next
  end
  return wakati
end

text = "この映画は、私が今まで見た中で最低の出来だった。"
puts "ipadic"
print wakati(text,:ipadic)
puts '-'*80
puts "jumandic"
print wakati(text,:jumandic)
puts '-'*80
puts "unidic"
print wakati(text,:unidic)
puts '-'*80

色々試すとUniDicが一番良さそうです。

ipadic
この : 連体詞,*,*,*,*,*,この,コノ,コノ
映画 : 名詞,一般,*,*,*,*,映画,エイガ,エイガ
は : 助詞,係助詞,*,*,*,*,は,ハ,ワ
、 : 記号,読点,*,*,*,*,、,、,、
私 : 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
が : 助詞,格助詞,一般,*,*,*,が,ガ,ガ
今 : 名詞,副詞可能,*,*,*,*,今,イマ,イマ
まで : 助詞,副助詞,*,*,*,*,まで,マデ,マデ
見 : 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た : 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
中 : 名詞,非自立,副詞可能,*,*,*,中,ナカ,ナカ
で : 助詞,格助詞,一般,*,*,*,で,デ,デ
最低 : 名詞,一般,*,*,*,*,最低,サイテイ,サイテイ
の : 助詞,連体化,*,*,*,*,の,ノ,ノ
出来 : 名詞,一般,*,*,*,*,出来,デキ,デキ
だっ : 助動詞,*,*,*,特殊・ダ,連用タ接続,だ,ダッ,ダッ
た : 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 : 記号,句点,*,*,*,*,。,。,。
--------------------------------------------------------------------------------
jumandic
この : 指示詞,連体詞形態指示詞,*,*,この,この,*
映画 : 名詞,普通名詞,*,*,映画,えいが,代表表記:映画/えいが カテゴリ:抽象物 ドメイン:文化・芸術
は : 助詞,副助詞,*,*,は,は,*
、 : 特殊,読点,*,*,、,、,*
私 : 名詞,普通名詞,*,*,私,わたし,代表表記:私/わたし 漢字読み:訓 カテゴリ:人
が : 助詞,格助詞,*,*,が,が,*
今 : 名詞,時相名詞,*,*,今,いま,代表表記:今/いま 漢字読み:訓 カテゴリ:時間
まで : 助詞,格助詞,*,*,まで,まで,*
見た : 動詞,*,母音動詞,タ形,見る,みた,代表表記:見る/みる 補文ト 自他動詞:自:見える/みえる
中 : 名詞,副詞的名詞,*,*,中,なか,代表表記:中/なか
で : 助詞,格助詞,*,*,で,で,*
最低の : 形容詞,*,ナノ形容詞,ダ列特殊連体形,最低だ,さいていの,代表表記:最低だ/さいていだ 反義:形容詞:最上だ/さいじょうだ
出来 : 動詞,*,母音動詞,基本連用形,出来る,でき,代表表記:出来る/できる
だった : 判定詞,*,判定詞,ダ列タ形,だ,だった,*
。 : 特殊,句点,*,*,。,。,連語
--------------------------------------------------------------------------------
unidic
この : 連体詞,*,*,*,*,*,コノ,此の,この,コノ,この,コノ,和,*,*,*,*
映画 : 名詞,普通名詞,一般,*,*,*,エイガ,映画,映画,エーガ,映画,エーガ,漢,*,*,*,*
は : 助詞,係助詞,*,*,*,*,ハ,は,は,ワ,は,ワ,和,*,*,*,*
、 : 補助記号,読点,*,*,*,*,,、,、,,、,,記号,*,*,*,*
私 : 代名詞,*,*,*,*,*,ワタクシ,私-代名詞,私,ワタクシ,私,ワタクシ,和,*,*,*,*
が : 助詞,格助詞,*,*,*,*,ガ,が,が,ガ,が,ガ,和,*,*,*,*
今 : 名詞,普通名詞,副詞可能,*,*,*,イマ,今,今,イマ,今,イマ,和,*,*,*,*
まで : 助詞,副助詞,*,*,*,*,マデ,まで,まで,マデ,まで,マデ,和,*,*,*,*
見 : 動詞,非自立可能,*,*,上一段-マ行,連用形-一般,ミル,見る,見,ミ,見る,ミル,和,*,*,*,*
た : 助動詞,*,*,*,助動詞-タ,連体形-一般,タ,た,た,タ,た,タ,和,*,*,*,*
中 : 名詞,普通名詞,副詞可能,*,*,*,ナカ,中,中,ナカ,中,ナカ,和,*,*,*,*
で : 助詞,格助詞,*,*,*,*,デ,で,で,デ,で,デ,和,*,*,*,*
最低 : 名詞,普通名詞,形状詞可能,*,*,*,サイテイ,最低,最低,サイテー,最低,サイテー,漢,*,*,*,*
の : 助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,*
出来 : 名詞,普通名詞,一般,*,*,*,デキ,出来,出来,デキ,出来,デキ,和,*,*,*,*
だっ : 助動詞,*,*,*,助動詞-ダ,連用形-促音便,ダ,だ,だっ,ダッ,だ,ダ,和,*,*,*,*
た : 助動詞,*,*,*,助動詞-タ,終止形-一般,タ,た,た,タ,た,タ,和,*,*,*,*
。 : 補助記号,句点,*,*,*,*,,。,。,,。,,記号,*,*,*,*
--------------------------------------------------------------------------------

思ったより簡単にできそうなので、この後意味解析を考えないといけない。


Comments !