はじめに
この記事はmecab-python3で辞書をunidic-liteからunidicに変える|Pythonの続き
今回は、使用する辞書をunidicに変えて形態素解析を行っていく
形態素解析
前回も使用したコードを再掲する
import MeCab
tagger_keitaiso = MeCab.Tagger()
keitaiso = tagger_keitaiso.parse("これは形態素解析のテストです")
print(type(keitaiso))
print(keitaiso)
実行結果
<class 'str'>
これ 代名詞,,,,,,コレ,此れ,これ,コレ,これ,コレ,和,"","","","","","",体,コレ,コレ,コレ,コレ,"0","","",3599534815060480,13095
は 助詞,係助詞,,,,,ハ,は,は,ワ,は,ワ,和,"","","","","","",係助,ハ,ハ,ハ,ハ,"","動詞%F2@0,名詞%F1,形容詞%F2@-1","",8059703733133824,29321
形態 名詞,普通名詞,一般,,,,ケイタイ,形態,形態,ケータイ,形態,ケータイ,漢,"","","","","","",体,ケイタイ,ケイタイ,ケイタイ,ケイタイ,"0","C2","",3024215389381120,11002
素 接尾辞,名詞的,一般,,,,ソ,素,素,ソ,素,ソ,漢,"","","","","","",接尾体,ソ,ソ,ソ,ソ,"","C3","",5752103704338944,20926
解析 名詞,普通名詞,サ変可能,,,,カイセキ,解析,解析,カイセキ,解析,カイセキ,漢,"","","","","","",体,カイセキ,カイセキ,カイセキ,カイセキ,"0","C2","",1590177315299840,5785
の 助詞,格助詞,,,,,ノ,の,の,ノ,の,ノ,和,"","","","","","",格助,ノ,ノ,ノ,ノ,"","名詞%F1","",7968444268028416,28989
テスト 名詞,普通名詞,サ変可能,,,,テスト,テスト-test,テスト,テスト,テスト,テスト,外,"","","","","","",体,テスト,テスト,テスト,テスト,"1","C1","",6912913105363456,25149
です 助動詞,,,,助動詞-デス,終止形-一般,デス,です,です,デス,です,デス,和,"","","","","","",助動,デス,デス,デス,デス,"","形容詞%F2@-1,動詞%F2@0,名詞%F2@1","",7051468750332587,25653
EOS
形態素解析の出力はstr型で返ってくることがわかる
EOSはEnd Of Sentenceで文の終わりを示す
分割してリストにする
このままでは扱いにくいので、今回はとりあえずlist型にする(一番楽そうなので)
dict型やpandas.dataframe型にしたほうが扱いやすい場合もあると思う
今回は2重リスト(2次元リスト)にする。
具体的には、str型を形態素のlist型に変換し、さらにその形態素のもつ情報もlist型にする
サンプルコード
import re
# 改行記号を手がかりに、形態素別へ分割
keitaiso_list = keitaiso.split('\n')
# 1形態素ずつ処理してリストに追加
result = []
for s in keitaiso_list:
if s == 'EOS':
break
result.append(re.split(r'\t|,', s))
print(result)
形態素解析の結果は1形態素につき1行表示されるので、’\n’で分割すればよい
形態素の情報は、表層形と品詞の間だけ’\t’で、その他は’,’で区切られている
一度に複数の区切り文字で区切る場合は正規表現を用いる
(この程度なら正規表現を使わずにsplitメソッドを2回使ってもいいが)
実行結果
2次元リストで表示されたらOK
[['これ', '代名詞', '', '', '', '', '', 'コレ', '此れ', 'これ', 'コレ', 'これ', 'コレ', '和', '""', '""', '""', '""', '""', '""', '体', 'コレ', 'コレ', 'コレ', 'コレ', '"0"', '""', '""', '3599534815060480', '13095'], ['は', '助詞', '係助詞', '', '', '', '', 'ハ', 'は', 'は', 'ワ', 'は', 'ワ', '和', '""', '""', '""', '""', '""', '""', '係助', 'ハ', 'ハ', 'ハ', 'ハ', '""', '"動詞%F2@0', '名詞%F1', '形容詞%F2@-1"', '""', '8059703733133824', '29321'], ['形態', '名詞', '普通名詞', '一般', '', '', '', 'ケイタイ', '形態', '形態', 'ケータイ', '形態', 'ケータイ', '漢', '""', '""', '""', '""', '""', '""', '体', 'ケイタイ', 'ケイタイ', 'ケイタイ', 'ケイタイ', '"0"', '"C2"', '""', '3024215389381120', '11002'], ['素', '接尾辞', '名詞的', '一般', '', '', '', 'ソ', '素', '素', 'ソ', '素', 'ソ', '漢', '""', '""', '""', '""', '""', '""', '接尾体', 'ソ', 'ソ', 'ソ', 'ソ', '""', '"C3"', '""', '5752103704338944', '20926'], ['解析', '名詞', '普通名詞', 'サ変可能', '', '', '', 'カイセキ', '解析', '解析', 'カイセキ', '解析', 'カイセキ', '漢', '""', '""', '""', '""', '""', '""', '体', 'カイセキ', 'カイセキ', 'カイセキ', 'カイセキ', '"0"', '"C2"', '""', '1590177315299840', '5785'], ['の', '助詞', '格助詞', '', '', '', '', 'ノ', 'の', 'の', 'ノ', 'の', 'ノ', '和', '""', '""', '""', '""', '""', '""', '格助', 'ノ', 'ノ', 'ノ', 'ノ', '""', '"名詞%F1"', '""', '7968444268028416', '28989'], ['テスト', '名詞', '普通名詞', 'サ変可能', '', '', '', 'テスト', 'テスト-test', 'テスト', 'テスト', 'テスト', 'テスト', '外', '""', '""', '""', '""', '""', '""', '体', 'テスト', 'テスト', 'テスト', 'テスト', '"1"', '"C1"', '""', '6912913105363456', '25149'], ['です', '助動詞', '', '', '', '助動詞-デス', '終止形-一般', 'デス', 'です', 'です', 'デス', 'です', 'デス', '和', '""', '""', '""', '""', '""', '""', '助動', 'デス', 'デス', 'デス', 'デス', '""', '"形容詞%F2@-1', '動詞%F2@0', '名詞%F2@1"', '""', '7051468750332587', '25653']]
おわりに
次回はこの結果の見方について勉強する予定
続き→MeCabで形態素解析した結果の見方|Python
コメントを残す