「MeCab」をWindowsで動かし形態要素分析。日本語の文章を品詞ごとに分割する方法

「MeCab」をWindowsで動かし形態要素分析。日本語の文章を品詞ごとに分割する方法 ソフトウェア

WindowsにMeCabをインストールして、様々な日本語の文章を品詞ごとに分割し、読みなども合わせて推測する方法を解説します。
複数あるMeCabのオプションも実例付きで解説!!

すぐに動かせるコピペ用コードもあります。

以下のように文章を形態要素分析できます。

入力テキスト:「涼宮ハルヒの憂鬱」は伝説的なアニメだと思うんだが?!

['「', '「', '補助記号-括弧開', '涼宮', 'スズミヤ', 'スズミヤ', 'スズミヤ', '名詞-固有名詞-人名-姓', '2', 'ハルヒ', 'ハルヒ', 'ハルヒ', 'ハルヒ', '名詞-固有名詞-人名-
名', '1', 'の', 'ノ', 'ノ', 'の', '助詞-格助詞', '憂鬱', 'ユーウツ', 'ユウウツ', '憂鬱', '名詞-普通名詞-形状詞可能', '0', '」', '」', '補助記号-括弧閉', 'は', 'ワ', ' ハ', 'は', '助詞-係助詞', '伝説', 'デンセツ', 'デンセツ', '伝説', '名詞-普通名詞-一般', '0', '的', 'テキ', 'テキ', '的', '接尾辞-形状詞的', 'な', 'ナ', 'ダ', 'だ', '助動詞', '助動詞-ダ', '連体形-一般', 'アニメ', 'アニメ', 'アニメ', 'アニメ-animation', '名詞-普通名詞-一般', '1,0', 'だ', 'ダ', 'ダ', 'だ', '助動詞', '助動詞-ダ', '終止 形-一般', 'と', 'ト', 'ト', 'と', '助詞-格助詞', '思う', 'オモウ', 'オモウ', '思う', '動詞-一般', '五段-ワア行', '連体形-一般', '2', 'ん', 'ン', 'ノ', 'の', '助詞-準体助詞', 'だ', 'ダ', 'ダ', 'だ', '助動詞', '助動詞-ダ', '終止形-一般', 'が', 'ガ', 'ガ', 'が', '助詞-接続助詞', '?', '?', '補助記号-句点', '!', '!', '補助記号-句点', 'EOS']

1,形態要素分析を行う事前準備

環境構築

私はPython 3.10.7で動作確認しました。

以下の2つのモジュールをインストールします。

まず、形態要素分析する本体をインストールします。

install mecab-python3

そして形態要素分析用の辞書も合わせてインストール。

pip install unidic-lite

2. 実際に形態要素分析する

動作確認する

import MeCab

text = "「涼宮ハルヒの憂鬱」は伝説的なアニメだと思うんだが?!"
tagger = MeCab.Tagger("-Owakati")
after_split = tagger.parse(text).split()
print(after_split)

上記コードを実行すると、以下の通り出力されます。

['「', '涼宮', 'ハルヒ', 'の', '憂鬱', '」', 'は', '伝説', '的', 'な', 'アニメ', 'だ', 'と', '思う', 'ん', 'だ', 'が', '?', '!']

MeCabの表示オプション

「MeCab.Tagger(“”)」には以下のようなオプションがあります。(引数)

  • MeCab.Tagger(“-Owakati“):シンプルな形態素解析
  • MeCab.Tagger(“”):ほど良く絞られた情報
  • MeCab.Tagger(“-Odump”):全情報

MeCab.Tagger(“-Owakati“)の場合

['「', '涼宮', 'ハルヒ', 'の', '憂鬱', '」', 'は', '伝説', '的', 'な', 'アニメ', 'だ', 'と', '思う', 'ん', 'だ', 'が', '?', '!']

MeCab.Tagger(“”)の場合

['「', '「', '補助記号-括弧開', '涼宮', 'スズミヤ', 'スズミヤ', 'スズミヤ', '名詞-固有名詞-人名-姓', '2', 'ハルヒ', 'ハルヒ', 'ハルヒ', 'ハルヒ', '名詞-固有名詞-人名-
名', '1', 'の', 'ノ', 'ノ', 'の', '助詞-格助詞', '憂鬱', 'ユーウツ', 'ユウウツ', '憂鬱', '名詞-普通名詞-形状詞可能', '0', '」', '」', '補助記号-括弧閉', 'は', 'ワ', ' ハ', 'は', '助詞-係助詞', '伝説', 'デンセツ', 'デンセツ', '伝説', '名詞-普通名詞-一般', '0', '的', 'テキ', 'テキ', '的', '接尾辞-形状詞的', 'な', 'ナ', 'ダ', 'だ', '助動詞', '助動詞-ダ', '連体形-一般', 'アニメ', 'アニメ', 'アニメ', 'アニメ-animation', '名詞-普通名詞-一般', '1,0', 'だ', 'ダ', 'ダ', 'だ', '助動詞', '助動詞-ダ', '終止 形-一般', 'と', 'ト', 'ト', 'と', '助詞-格助詞', '思う', 'オモウ', 'オモウ', '思う', '動詞-一般', '五段-ワア行', '連体形-一般', '2', 'ん', 'ン', 'ノ', 'の', '助詞-準体助詞', 'だ', 'ダ', 'ダ', 'だ', '助動詞', '助動詞-ダ', '終止形-一般', 'が', 'ガ', 'ガ', 'が', '助詞-接続助詞', '?', '?', '補助記号-句点', '!', '!', '補助記号-句点', 'EOS']

MeCab.Tagger(“-Odump”)の場合

['0', 'BOS', 'BOS/EOS,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*', '0', '0', '0', '0', '0', '0', '2', '1', '0.000000', '0.000000', '0.000000', '0', '1', '「', '補助記号,括弧開,*,*,*,*,,「,「,,「,,記号,*,*,*,*,,,,,*,*,*,*,*', '0', '3', '5973', '5973', '1', '3', '0', '1', '0.000000', '0.000000', '0.000000', '-470', '8', '涼宮', '名詞,固有名詞,人名,姓,*,*,スズミヤ,スズミヤ,涼宮,スズミヤ,涼宮,スズミヤ,固,*,*,*,*,スズミヤ,スズミヤ,スズミヤ,スズミヤ,*,*,2,*,*', '3', '9', '4790', '4790', '1', '2', '0', '1', '0.000000', '0.000000', '0.000000', '9511', '21', 'ハルヒ', '名詞,固有名詞,人名,名,*,*,ハルヒ,ハルヒ,ハルヒ,ハルヒ,ハルヒ,ハルヒ,固,*,*,*,*,ハルヒ,ハルヒ, ハルヒ,ハルヒ,*,*,1,*,*', '9', '18', '4789', '4789', '1', '7', '0', '1', '0.000000', '0.000000', '0.000000', '9618', '61', 'の', '助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,*,ノ,ノ,ノ,ノ,*,*,*,名詞%F1,*', '18', '21', '802', '802', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '10891', '69', '憂鬱', '名詞,普通名詞,形状 詞可能,*,*,*,ユウウツ,憂鬱,憂鬱,ユーウツ,憂鬱,ユーウツ,漢,*,*,*,*,ユウウツ,ユウウツ,ユウウツ,ユウウツ,*,*,0,C2,*', '21', '27', '5159', '5159', '1', '2', '0', '1', '0.000000', '0.000000', '0.000000', '17424', '71', '」', '補助記号,括弧閉,*,*,*,*,,」,」,,」,,記号,*,*,*,*,,,,,*,*,*,*,*', '27', '30', '5972', '5972', '1', '3', '0', '1', '0.000000', '0.000000', '0.000000', '16360', '73', 'は', '助詞,係助詞,*,*,*,*,ハ,は,は,ワ,は,ワ,和,*,*,*,*,ハ,ハ,ハ,ハ,*,*,*,"動詞%F2@0,名詞%F1,形容詞%F2@-1",*', '30', '33', '662', '662', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '18235', '84', '伝説', '名詞,普通名詞,一般,*,*,*,デンセツ,伝説,伝説,デンセツ,伝説,デンセツ,漢,*,*,*,*,デンセツ,デンセツ,デンセツ,デンセツ,*,*,0,C2,*', '33', '39', '5146', '5146', '1', '2', '0', '1', '0.000000', '0.000000', '0.000000', '26500', '86', '的', '接尾辞,形状詞的,*,*,*,*,テキ,的,的,テキ,的,テキ,漢,*,*,*,*,テキ,テキ,テキ,テキ,*,*,*,C4,*', '39', '42', '5929', '5929', '1', '2', '0', '1', '0.000000', '0.000000', '0.000000', '31939', '89', 'な', '助動詞,*,*,*,助動詞-ダ,連体形-一般,ダ,だ,な,ナ,だ,ダ,和,*,*,*,*,ナ,ダ,ナ,ダ,*,*,*,名詞%F1,*', '42', '45', '272', '272', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '32134', '105', 'アニメ', '名詞,普通名詞,一般,*,*,*,アニメ,アニメ-animation,アニメ,アニメ,アニメ,アニメ,外,*,*,*,*,アニメ,アニ メ,アニメ,アニメ,*,*,"1,0",C2,*', '45', '54', '5144', '5144', '1', '7', '0', '1', '0.000000', '0.000000', '0.000000', '35806', '152', 'だ', '助動詞,*,*,*,助動詞-ダ,終 止形-一般,ダ,だ,だ,ダ,だ,ダ,和,*,*,*,*,ダ,ダ,ダ,ダ,*,*,*,名詞%F1,*', '54', '57', '263', '263', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '41447', '159', 'と', '助詞,格助詞,*,*,*,*,ト,と,と,ト,と,ト,和,*,*,*,*,ト,ト,ト,ト,*,*,*,"名詞%F1,動詞%F1,形容詞%F2@-1",*', '57', '60', '793', '793', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '42354', '169', '思う', '動詞,一般,*,*,五段-ワア行,連体形-一般,オモウ,思う,思う,オモウ,思う,オモウ,和,*,*,*,*,オモウ,オモウ,オモウ,オモウ,*,*,2,C1,*', '60', '66', '1452', '1452', '1', '2', '0', '1', '0.000000', '0.000000', '0.000000', '47036', '192', 'ん', '助詞,準体助詞,*,*,*,*,ノ,の,ん,ン,ん,ン,和,*,*,*,*, ン,ン,ン,ン,*,*,*,"動詞%F2@0,形容詞%F2@-1",*', '66', '69', '827', '827', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '50533', '202', 'だ', '助動詞,*,*,*,助動詞-ダ,終止形-一般,ダ,だ,だ,ダ,だ,ダ,和,*,*,*,*,ダ,ダ,ダ,ダ,*,*,*,名詞%F1,*', '69', '72', '263', '263', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '49487', '206', 'が', '助詞,接続助詞,*,*,*,*,ガ,が,が,ガ,が,ガ,和,*,*,*,*,ガ,ガ,ガ,ガ,*,*,*,"動詞%F2@0,形容詞%F2@-1",*', '72', '75', '727', '727', '1', '6', '0', '1', '0.000000', '0.000000', '0.000000', '51371', '211', '?', '補助記号,句点,*,*,*,*,,?,?,,?,,記号,*,*,*,*,,,,,*,*,*,*,*', '75', '78', '5970', '5970', '1', '3', '0', '1', '0.000000', '0.000000', '0.000000', '51583', '213', '!', '補助記号,句点,*,*,*,*,,!,!,,!,,記号,*,*,*,*,,,,,*,*,*,*,*', '78', '81', '5970', '5970', '1', '3', '0', '1', '0.000000', '0.000000', '0.000000', '51521', '215', 'EOS', 'BOS/EOS,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*', '81', '81', '0', '0', '0', '0', '3', '1', '0.000000', '0.000000', '0.000000', '49382']

形態要素分析により、例えば言語モデルの語尾だけを置き換えキャラ付けしたり、出現する単語のベクトルを算出して似た意味の文章を見つけたり、色々応用の夢が広がる技術ですね☆

タイトルとURLをコピーしました