きっと続かんブログ

勉強したことや人に言いたいことを書く。

MeCabで文章を分かち書き

実装①単純な形態素解析

import MeCab
m = MeCab.Tagger()
print m.parse(text)

実装②必要な品詞のみ抽出

'''
文や文章を渡すと、MeCabで必要な品詞だけ抽出する関数。
'''
def getTokenlistFromline(text,hinshi):
    token_list = []
    m = MeCab.Tagger('-Ochasen') #オプション : 茶筅互換形式で出力
    m.parse(text) #parseToNodeを使うために必要
    node = m.parseToNode(text) #形態素1つ1つを操作するため

    while node: #形態素の先頭からたどる
        feats = node.feature.split(',') #featureをカンマで区切ってリスト化。feats[0]に品詞情報。
        if feats[0] in hinshi:
            token_list.append(node.surface)
        node = node.next #次の形態素へ
    return token_list

実行例

text = '大きな力で空に浮かべたらルララ宇宙の風に乗る'
hinshi = ['名詞','形容詞','動詞']

print (tdata.getTokenlistFromline(text,hinshi))
['力', '空', '浮かべ', 'ルララ', '宇宙', '風', '乗る']