Python入門トップページ


目次

  1. 準備
  2. MeCab の第一歩
  3. 簡単な形態素解析
  4. TF-IDF を計算してみよう
  5. ワードクラウドを作成してみよう

Python で自然言語処理をしてみよう - MeCab 編

MeCab の第一歩

まずは MeCab モジュールをインポートする.もしもエラーが表示されたら,準備を参考に,mecab-python3 をインストールしよう.

モジュールのインポートimport MeCab as mc

IPA 辞書(標準辞書)の利用

「自然言語処理の基本を説明します」という文章を形態素解析してみよう.なお,標準の辞書に IPA辞書が指定されている状況で実行しています.

自然言語処理の基本を説明しますmecab = mc.Tagger()
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然	名詞,形容動詞語幹,*,*,*,*,自然,シゼン,シゼン
言語	名詞,一般,*,*,*,*,言語,ゲンゴ,ゲンゴ
処理	名詞,サ変接続,*,*,*,*,処理,ショリ,ショリ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
基本	名詞,一般,*,*,*,*,基本,キホン,キホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
説明	名詞,サ変接続,*,*,*,*,説明,セツメイ,セツメイ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS

上の出力フォーマットは次の通りです.

表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音

次に,同じ文章を形態素解析し,茶筌形式で出力してみよう.

茶筌形式で出力mecab = mc.Tagger('-Ochasen')
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然	シゼン	自然	名詞-形容動詞語幹
言語	ゲンゴ	言語	名詞-一般
処理	ショリ	処理	名詞-サ変接続
の	ノ	の	助詞-連体化
基本	キホン	基本	名詞-一般
を	ヲ	を	助詞-格助詞-一般
説明	セツメイ	説明	名詞-サ変接続
し	シ	する	動詞-自立	サ変・スル	連用形
ます	マス	ます	助動詞	特殊・マス	基本形
EOS

さらに,同じ文章を分かち書きしてみよう.

分かち書きmecab = mc.Tagger('-Owakati')
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然 言語 処理 の 基本 を 説明 し ます

mecab-ipadic-NEologd 辞書の利用

Mac や Linux を利用し,かつ,mecab-ipa-NEologd 辞書をインストールできていれば,この辞書を使ってみよう.mecab-ipa-NEologd を使えば「自然言語処理」を認識できるようになるはずです.ただし,辞書の保存場所の指定は環境によって異なる可能性があります.次のコードは Mac での指定方法です.例えば,ここの手順に従って構築した仮想開発環境の場合でも,同じ場所に辞書がインストールされるので,同じコードで動作するはずです.残念ながら,Windows 環境に mecab-ipa-NEologd 辞書をインストールするのは面倒そうです.

自然言語処理の基本を説明しますmecab = mc.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/')
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然言語処理	名詞,固有名詞,一般,*,*,*,自然言語処理,シゼンゲンゴショリ,シゼンゲンゴショリ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
基本	名詞,一般,*,*,*,*,基本,キホン,キホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
説明	名詞,サ変接続,*,*,*,*,説明,セツメイ,セツメイ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS

次に,同じ文章を形態素解析し,茶筌形式で出力してみよう.

茶筌形式で出力mecab = mc.Tagger('-Ochasen -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/')
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然言語処理	シゼンゲンゴショリ	自然言語処理	名詞-固有名詞-一般
の	ノ	の	助詞-連体化
基本	キホン	基本	名詞-一般
を	ヲ	を	助詞-格助詞-一般
説明	セツメイ	説明	名詞-サ変接続
し	シ	する	動詞-自立	サ変・スル	連用形
ます	マス	ます	助動詞	特殊・マス	基本形
EOS

さらに,同じ文章を分かち書きしてみよう.

分かち書きmecab = mc.Tagger('-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/')
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然言語処理 の 基本 を 説明 し ます自然言語処理 の 基本 を 説明 し ます

なお,ここの手順で mecab-ipa-NEologd 辞書を標準辞書に設定している場合は,辞書を指定せずに実行すると mecab-ipa-NEologd が利用されます.

mecab-ipa-NEologd 辞書(標準辞書)の利用mecab = mc.Tagger()
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然言語処理	名詞,固有名詞,一般,*,*,*,自然言語処理,シゼンゲンゴショリ,シゼンゲンゴショリ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
基本	名詞,一般,*,*,*,*,基本,キホン,キホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
説明	名詞,サ変接続,*,*,*,*,説明,セツメイ,セツメイ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS

なお,ここの手順で mecab-ipa-NEologd 辞書を標準辞書に設定している場合に,IPA 辞書を指定することも可能です.

IPA 辞書の利用mecab = mc.Tagger('-d /usr/local/lib/mecab/dic/ipadic')
sent = "自然言語処理の基本を説明します"
print(mecab.parse(sent))
自然	名詞,形容動詞語幹,*,*,*,*,自然,シゼン,シゼン
言語	名詞,一般,*,*,*,*,言語,ゲンゴ,ゲンゴ
処理	名詞,サ変接続,*,*,*,*,処理,ショリ,ショリ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
基本	名詞,一般,*,*,*,*,基本,キホン,キホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
説明	名詞,サ変接続,*,*,*,*,説明,セツメイ,セツメイ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS

目次に戻る