MeCab解析済みの結果を読み取るcorpus readerを書いた

More than 5 years have passed since last update.

勉強のためにmhagiwaraさんが書かれていたchasen.pyを真似してmecab.pyを書いた。


mecab.py

NLTKとnltk_dataがインストール、ダウンロード済みであることが前提。

データはnltk_data/corpora以下へ置いておくか、シンボリックリンクを作成する。

import nltk

corpora_path = nltk.data.find('corpora/test')
"""
your data must be stored or linked in nltk/corpora
"""

fileids = r'.*\.mecab'
"""
:param corpus name: regular expression or list of corpus name.
:type corpus: list or strings
"""

reader = MeCabCorpusReader(corpora_path, fileids, encoding='utf8')
print reader.raw()
print ', '.join(reader.words())
for w, t in reader.tagged_words():
print w, t
for para in reader.paras():
for sent in para:
for word in sent:
print word
for para in reader.tagged_paras():
for sent in para:
for (word, pos) in sent:
print word, pos

corpora/testはMeCab解析済みのファイルを含むディレクトリで、拡張子がmecabとなっている。

ファイルの中身はこんな感じ。

すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ

も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

出力は

raw()

すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

words()
すもも, も, もも, も, もも, の, うち

tagged_words()
すもも info: 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も info: 助詞,係助詞,*,*,*,*,も,モ,モ
もも info: 名詞,一般,*,*,*,*,もも,モモ,モモ
も info: 助詞,係助詞,*,*,*,*,も,モ,モ
もも info: 名詞,一般,*,*,*,*,もも,モモ,モモ
の info: 助詞,連体化,*,*,*,*,の,ノ,ノ
うち info: 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

paras()
すもも

もも

もも

うち

tagged_paras()
すもも info: 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も info: 助詞,係助詞,*,*,*,*,も,モ,モ
もも info: 名詞,一般,*,*,*,*,もも,モモ,モモ
も info: 助詞,係助詞,*,*,*,*,も,モ,モ
もも info: 名詞,一般,*,*,*,*,もも,モモ,モモ
の info: 助詞,連体化,*,*,*,*,の,ノ,ノ
うち info: 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ