MeCabを使って文章から名詞以外を取り除く

2020年11月1日

文書の自動タグ付けをする場合など、文章の名詞だけ欲しいときに使う

MeCabで形態素解析したあと、名詞かつ一般のものだけ取り出している

   
import MeCab
m = MeCab.Tagger ("-Ochasen")

def extract_nouns(text):
    node = m.parseToNode(text)
    nouns = []
    
    while node:
        features =  node.feature.split(',')
        
        if features[0] == '名詞' and features[1] == '一般':
            nouns.append(node.surface)
        
        node = node.next
    
    return set(nouns)



text = "私は文書の自動タグ付けのため、自然言語処理を勉強しています。"

形態素解析


print(m.parse(text))

私	ワタシ	私	名詞-代名詞-一般		
は	ハ	は	助詞-係助詞		
文書	ブンショ	文書	名詞-一般		
の	ノ	の	助詞-連体化		
自動	ジドウ	自動	名詞-一般		
タグ	タグ	タグ	名詞-一般		
付け	ヅケ	付け	名詞-接尾-一般		
の	ノ	の	助詞-連体化		
ため	タメ	ため	名詞-非自立-副詞可能		
、	、	、	記号-読点		
自然	シゼン	自然	名詞-形容動詞語幹		
言語	ゲンゴ	言語	名詞-一般		
処理	ショリ	処理	名詞-サ変接続		
を	ヲ	を	助詞-格助詞-一般		
勉強	ベンキョウ	勉強	名詞-サ変接続		
し	シ	する	動詞-自立	サ変・スル	連用形
て	テ	て	助詞-接続助詞		
い	イ	いる	動詞-非自立	一段	連用形
ます	マス	ます	助動詞	特殊・マス	基本形
。	。	。	記号-句点	

一般名詞だけ取り出す

words = extract_nouns(text)
print(words)	

{'文書', '自動', '言語', 'タグ'}

「自然」、「処理」、「勉強」が消えてしまっているので、必要に応じて残す品詞は調整する