#はじめに
pirkaを作ってる最中に形態素解析をJanomeでさせてたらフリーズしたので、mecab-pythonで高速に解析できるプログラムを作った。紹介する。
#環境
PC:Raspberry Pi 3 Model B+
OS:Raspbian GNU/Linux 9.4 (stretch)
#必要なモジュールのインストール
ターミナルを開いて以下のコマンドを入力する。
$ sudo pip3 install mecab-python3
#作ったプログラム
こんな感じ。
import MeCab
def tokenizer(text):
t = MeCab.Tagger("")
t.parse("")
m = t.parseToNode(text)
tokens = []
while m:
tokenData = m.feature.split(",")
token = [m.surface]
for data in tokenData:
token.append(data)
tokens.append(token)
m = m.next
tokens.pop(0)
tokens.pop(-1)
return tokens
tokenizer("ぼんやりとした花曇りの白い空。百人が乗った車輛、千人を運ぶ列車、その千本が流れる街。") #『小説 君の名は。』より
これで実行する。
$ python3 analyzer.py
[
['ぼんやり', '名詞', 'サ変接続', '*', '*', '*', '*', 'ぼんやり', 'ボンヤリ', 'ボンヤリ'],
['と', '助詞', '格助詞', '一般', '*', '*', '*', 'と', 'ト', 'ト'],
['し', '動詞', '自立', '*', '*', 'サ変・スル', '連用形', 'する', 'シ', 'シ'],
['た', '助動詞', '*', '*', '*', '特殊・タ', '基本形', 'た', 'タ', 'タ'],
['花曇り', '名詞', '一般', '*', '*', '*', '*', '花曇り', 'ハナグモリ', 'ハナグモリ'],
['の', '助詞', '格助詞', '一般', '*', '*', '*', 'の', 'ノ', 'ノ'],
['白い', '形容詞', '自立', '*', '*', '形容詞・アウオ段', '基本形', '白い', 'シロイ', 'シロイ'],
['空', '名詞', '一般', '*', '*', '*', '*', '空', 'ソラ', 'ソラ'],
['。', '記号', '句点', '*', '*', '*', '*', '。', '。', '。'],
['百', '名詞', '数', '*', '*', '*', '*', '百', 'ヒャク', 'ヒャク'],
['人', '名詞', '接尾', '助数詞', '*', '*', '*', '人', 'ニン', 'ニン'],
['が', '助詞', '格助詞', '一般', '*', '*', '*', 'が', 'ガ', 'ガ'],
['乗っ', '動詞', '自立', '*', '*', '五段・ラ行', '連用タ接続', '乗る', 'ノッ', 'ノッ'],
['た', '助動詞', '*', '*', '*', '特殊・タ', '基本形', 'た', 'タ', 'タ'],
['車輛', '名詞', '一般', '*', '*', '*', '*', '車輛', 'シャリョウ', 'シャリョー'],
['、', '記号', '読点', '*', '*', '*', '*', '、', '、', '、'],
['千', '名詞', '数', '*', '*', '*', '*', '千', 'セン', 'セン'],
['人', '名詞', '接尾', '助数詞', '*', '*', '*', '人', 'ニン', 'ニン'],
['を', '助詞', '格助詞', '一般', '*', '*', '*', 'を', 'ヲ', 'ヲ'],
['運ぶ', '動詞', '自立', '*', '*', '五段・バ行', '基本形', '運ぶ', 'ハコブ', 'ハコブ'],
['列車', '名詞', '一般', '*', '*', '*', '*', '列車', 'レッシャ', 'レッシャ'],
['、', '記号', '読点', '*', '*', '*', '*', '、', '、', '、'],
['その', '連体詞', '*', '*', '*', '*', '*', 'その', 'ソノ', 'ソノ'],
['千', '名詞', '数', '*', '*', '*', '*', '千', 'セン', 'セン'],
['本', '名詞', '接尾', '助数詞', '*', '*', '*', '本', 'ホン', 'ホン'],
['が', '助詞', '格助詞', '一般', '*', '*', '*', 'が', 'ガ', 'ガ'],
['流れる', '動詞', '自立', '*', '*', '一段', '基本形', '流れる', 'ナガレル', 'ナガレル'],
['街', '名詞', '一般', '*', '*', '*', '*', '街', 'マチ', 'マチ'],
['。', '記号', '句点', '*', '*', '*', '*', '。', '。', '。']
]
全ての項目をリストにした。ここから品詞や読みを取得できる。
#終わりに
Janomeが重すぎて困っていたときに「MeCab速いよ」と教えてくださった東京工業大学の方、ありがとうございます。