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 この : 連体詞,*,*,*,*,*,コノ,此の,この,コノ,この,コノ,和,*,*,*,* 映画 : 名詞,普通名詞,一般,*,*,*,エイガ,映画,映画,エーガ,映画,エーガ,漢,*,*,*,* は : 助詞,係助詞,*,*,*,*,ハ,は,は,ワ,は,ワ,和,*,*,*,* 、 : 補助記号,読点,*,*,*,*,,、,、,,、,,記号,*,*,*,* 私 : 代名詞,*,*,*,*,*,ワタクシ,私-代名詞,私,ワタクシ,私,ワタクシ,和,*,*,*,* が : 助詞,格助詞,*,*,*,*,ガ,が,が,ガ,が,ガ,和,*,*,*,* 今 : 名詞,普通名詞,副詞可能,*,*,*,イマ,今,今,イマ,今,イマ,和,*,*,*,* まで : 助詞,副助詞,*,*,*,*,マデ,まで,まで,マデ,まで,マデ,和,*,*,*,* 見 : 動詞,非自立可能,*,*,上一段-マ行,連用形-一般,ミル,見る,見,ミ,見る,ミル,和,*,*,*,* た : 助動詞,*,*,*,助動詞-タ,連体形-一般,タ,た,た,タ,た,タ,和,*,*,*,* 中 : 名詞,普通名詞,副詞可能,*,*,*,ナカ,中,中,ナカ,中,ナカ,和,*,*,*,* で : 助詞,格助詞,*,*,*,*,デ,で,で,デ,で,デ,和,*,*,*,* 最低 : 名詞,普通名詞,形状詞可能,*,*,*,サイテイ,最低,最低,サイテー,最低,サイテー,漢,*,*,*,* の : 助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,* 出来 : 名詞,普通名詞,一般,*,*,*,デキ,出来,出来,デキ,出来,デキ,和,*,*,*,* だっ : 助動詞,*,*,*,助動詞-ダ,連用形-促音便,ダ,だ,だっ,ダッ,だ,ダ,和,*,*,*,* た : 助動詞,*,*,*,助動詞-タ,終止形-一般,タ,た,た,タ,た,タ,和,*,*,*,* 。 : 補助記号,句点,*,*,*,*,,。,。,,。,,記号,*,*,*,* --------------------------------------------------------------------------------
思ったより簡単にできそうなので、この後意味解析を考えないといけない。