Python入門トップページ


目次

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

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

MeCab の第一歩

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

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

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

「自然言語処理の基本を説明します」という文章を形態素解析してみよう.なお,mac 環境では辞書を指定して実行します.mac環境で辞書の保存場所が異なれば,正しい辞書のパスを指定してください.Windowsの場合は特に引数を指定する必要はありません.

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

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

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

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

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

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

分かち書き
t = mc.Tagger('-Owakati')  # for Windows
# t = mc.Tagger('-r /dev/null -d /opt/homebrew/lib/mecab/dic/ipadic -Owakati')  # for macOS
sent = "自然言語処理の基本を説明します"
print(t.parse(sent))
自然 言語 処理 の 基本 を 説明 し ます

mecab-ipadic-NEologd 辞書の利用

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

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

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

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

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

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

目次に戻る