形態素解析をやってみよう ‐ MeCab入門

PythonでMeCabを使ってみます。

準備

MeCabを使うにはライブラリと辞書が必要になります。
私はライブラリとしてmecab-python3、辞書としてunidic-liteを使っています。
次のようにしてインストールします。

pip install mecab-python3
pip install unidic-lite

基本

MeCabを使うと分かち書きをしてくれます。文章を形態素に分解することです。
parseを使うとスペース区切りの文字列を返します。
これをsplitでリストにします。

import MeCab
src = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。"
wakati = MeCab.Tagger("-Owakati")
dst = wakati.parse(src)
terms = dst.split()
print(dst)
print(terms)

【実行結果】

吾輩 は 猫 で ある 。 名前 は まだ 無い 。 どこ で 生れ た か と んと 見当 が つか ぬ 。
['吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', '無い', '。', 'どこ', 'で', '生れ', 'た', 'か', 'と', 'んと', '見当', 'が', 'つか', 'ぬ', '。']

詳細

MeCab.Taggerのところで出力モードを指定します。
-Owakati とすると、分かち書きします。
指定しないと、元の文字列、読み、品詞など全体を出力します。

import MeCab
src = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。"
wakati = MeCab.Tagger("")
print(wakati.parse(src))

【実行結果】

吾輩    ワガハイ        ワガハイ        我が輩  代名詞                  0
は      ワ      ハ      は      助詞-係助詞
猫      ネコ    ネコ    猫      名詞-普通名詞-一般                      1
で      デ      ダ      だ      助動詞  助動詞-ダ       連用形-一般
ある    アル    アル    有る    動詞-非自立可能 五段-ラ行       終止形-一般     1
。                      。      補助記号-句点
名前    ナマエ  ナマエ  名前    名詞-普通名詞-一般                      0
は      ワ      ハ      は      助詞-係助詞
まだ    マダ    マダ    未だ    副詞                    1
無い    ナイ    ナイ    無い    形容詞-非自立可能       形容詞  終止形-一般     1
。                      。      補助記号-句点
どこ    ドコ    ドコ    何処    代名詞                  1
で      デ      デ      で      助詞-格助詞
生れ    ウマレ  ウマレル        生まれる        動詞-一般       下一段-ラ行     連用形-一般     0
た      タ      タ      た      助動詞  助動詞-タ       終止形-一般
か      カ      カ      か      助詞-終助詞
と      ト      ト      と      助詞-格助詞
んと    ント    ウント  うんと  感動詞-フィラー                 0
見当    ケントー        ケントウ        見当    名詞-普通名詞-一般                      3
が      ガ      ガ      が      助詞-格助詞
つか    ツカ    ツク    付く    動詞-非自立可能 五段-カ行       未然形-一般     1,2
ぬ      ヌ      ズ      ず      助動詞  助動詞-ヌ       終止形-一般
。                      。      補助記号-句点
EOS

別の方法

import MeCab
src = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。"
wakati = MeCab.Tagger("")
node = wakati.parseToNode(src)
while node:
  feature = node.feature.split(',')
  print(feature)
  node = node.next

【実行結果】

['BOS/EOS', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*']
['代名詞', '*', '*', '*', '*', '*', 'ワガハイ', '我が輩', '吾輩', 'ワガハイ', '吾輩', 'ワガハイ', '混', '*', '*', '*', '*', 'ワガハイ', 'ワガハイ', 'ワガハイ', 'ワガハイ', '*', '*', '0', '*', '*']
['助詞', '係助詞', '*', '*', '*', '*', 'ハ', 'は', 'は', 'ワ', 'は', 'ワ', '和', '*', '*', '*', '*', 'ハ', 'ハ', 'ハ', 'ハ', '*', '*', '*', '"動詞%F2@0', '名詞%F1', '形容詞%F2@-1"', '*']
['名詞', '普通名詞', '一般', '*', '*', '*', 'ネコ', '猫', '猫', 'ネコ', '猫', 'ネコ', '和', '*', '*', '*', '*', 'ネコ', 'ネコ', 'ネコ', 'ネコ', '*', '*', '1', 'C4', '*']
['助動詞', '*', '*', '*', '助動詞-ダ', '連用形-一般', 'ダ', 'だ', 'で', 'デ', 'だ', 'ダ', '和', '*', '*', '*', '*', 'デ', 'ダ', 'デ', 'ダ', '*', '*', '*', '名詞%F1', '*']
['動詞', '非自立可能', '*', '*', '五段-ラ行', '終止形-一般', 'アル', '有る', 'ある', 'アル', 'ある', 'アル', '和', '*', '*', '*', '*', 'アル', 'アル', 'アル', 'アル', '*', '*', '1', 'C3', '*']
['補助記号', '句点', '*', '*', '*', '*', '', '。', '。', '', '。', '', '記号', '*', '*', '*', '*', '', '', '', '', '*', '*', '*', '*', '*']
['名詞', '普通名詞', '一般', '*', '*', '*', 'ナマエ', '名前', '名前', 'ナマエ', '名前', 'ナマエ', '和', '*', '*', '*', '*', 'ナマエ', 'ナマエ', 'ナマエ', 'ナマエ', '*', '*', '0', 'C2', '*']
['助詞', '係助詞', '*', '*', '*', '*', 'ハ', 'は', 'は', 'ワ', 'は', 'ワ', '和', '*', '*', '*', '*', 'ハ', 'ハ', 'ハ', 'ハ', '*', '*', '*', '"動詞%F2@0', '名詞%F1', '形容詞%F2@-1"', '*']
['副詞', '*', '*', '*', '*', '*', 'マダ', '未だ', 'まだ', 'マダ', 'まだ', 'マダ', '和', '*', '*', '*', '*', 'マダ', 'マダ', 'マダ', 'マダ', '*', '*', '1', '*', '*']
['形容詞', '非自立可能', '*', '*', '形容詞', '終止形-一般', 'ナイ', '無い', '無い', 'ナイ', '無い', 'ナイ', '和', '*', '*', '*', '*', 'ナイ', 'ナイ', 'ナイ', 'ナイ', '*', '*', '1', 'C3', '*']
['補助記号', '句点', '*', '*', '*', '*', '', '。', '。', '', '。', '', '記号', '*', '*', '*', '*', '', '', '', '', '*', '*', '*', '*', '*']
['代名詞', '*', '*', '*', '*', '*', 'ドコ', '何処', 'どこ', 'ドコ', 'どこ', 'ドコ', '和', '*', '*', '*', '*', 'ドコ', 'ドコ', 'ドコ', 'ドコ', '*', '*', '1', '*', '*']
['助詞', '格助詞', '*', '*', '*', '*', 'デ', 'で', 'で', 'デ', 'で', 'デ', '和', '*', '*', '*', '*', 'デ', 'デ', 'デ', 'デ', '*', '*', '*', '"動詞%F2@0', '名詞%F1"', '*']
['動詞', '一般', '*', '*', '下一段-ラ行', '連用形-一般', 'ウマレル', '生まれる', '生れ', 'ウマレ', '生れる', 'ウマレル', '和', '*', '*', '*', '*', 'ウマレ', 'ウマレル', 'ウマレ', 'ウマレル', '*', '*', '0', 'C2', '*']
['助動詞', '*', '*', '*', '助動詞-タ', '終止形-一般', 'タ', 'た', 'た', 'タ', 'た', 'タ', '和', '*', '*', '*', '*', 'タ', 'タ', 'タ', 'タ', '*', '*', '*', '"動詞%F2@1', '形容詞%F4@-2"', '*']
['助詞', '終助詞', '*', '*', '*', '*', 'カ', 'か', 'か', 'カ', 'か', 'カ', '和', '*', '*', '*', '*', 'カ', 'カ', 'カ', 'カ', '*', '*', '*', '"動詞%F2@0', '形容詞%F2@-1', '名詞%F1"', '*']
['助詞', '格助詞', '*', '*', '*', '*', 'ト', 'と', 'と', 'ト', 'と', 'ト', '和', '*', '*', '*', '*', 'ト', 'ト', 'ト', 'ト', '*', '*', '*', '"名詞%F1', '動詞%F1', '形容詞%F2@-1"', '*']
['感動詞', 'フィラー', '*', '*', '*', '*', 'ウント', 'うんと', 'んと', 'ント', 'んと', 'ント', '和', '*', '*', '*', '*', 'ント', 'ント', 'ント', 'ント', '*', '*', '0', '*', '*']
['名詞', '普通名詞', '一般', '*', '*', '*', 'ケントウ', '見当', '見当', 'ケントー', '見当', 'ケントー', '漢', '*', '*', '*', '*', 'ケントウ', 'ケントウ', 'ケントウ', 'ケントウ', '*', '*', '3', 'C2', '*']
['助詞', '格助詞', '*', '*', '*', '*', 'ガ', 'が', 'が', 'ガ', 'が', 'ガ', '和', '*', '*', '*', '*', 'ガ', 'ガ', 'ガ', 'ガ', '*', '*', '*', '"動詞%F2@0', '名詞%F1"', '*']
['動詞', '非自立可能', '*', '*', '五段-カ行', '未然形-一般', 'ツク', '付く', 'つか', 'ツカ', 'つく', 'ツク', '和', 'ツ濁', '基本形', '*', '*', 'ツカ', 'ツク', 'ツカ', 'ツク', '*', '*', '"1', '2"', 'C1', '*']
['助動詞', '*', '*', '*', '助動詞-ヌ', '終止形-一般', 'ズ', 'ず', 'ぬ', 'ヌ', 'ぬ', 'ヌ', '和', '*', '*', '*', '*', 'ヌ', 'ヌ', 'ヌ', 'ヌ', '*', '*', '*', '動詞%F4@0', '*']
['補助記号', '句点', '*', '*', '*', '*', '', '。', '。', '', '。', '', '記号', '*', '*', '*', '*', '', '', '', '', '*', '*', '*', '*', '*']
['BOS/EOS', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*']

コメント

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