Ein persönlicher Hinweis bei Verwendung von MeCab aus Python.
mecab.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MeCab
m = MeCab.Tagger()
print m.parse("Wenn ein Hund geht, trifft er einen Stock.")
$ ./mecab.py
Hund Nomen,Allgemeines,*,*,*,*,Hund,Hund,Hund
Auch Assistent,Hilfe,*,*,*,*,Ebenfalls,Mo.,Mo.
Verb gehen,Unabhängigkeit,*,*,Fünf-Dan / Ka-Linie,Angenommene Form,gehen,Arche,Arche
Ba Assistent,Verbindungsassistent,*,*,*,*,Wenn,Ba,Ba
Stick Nomen,Allgemeines,*,*,*,*,Stange,Bogen,Baud
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Hit Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Grundform,Schlagen,Atal,Atal
.. Symbol,Phrase,*,*,*,*,。,。,。
EOS
mecab_from_file.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
param = sys.argv
infile = param[1]
f = open(infile)
line = f.readline()
import MeCab
m = MeCab.Tagger()
while line:
res = m.parseToNode(line)
while res:
print res.feature
#Substantiv,Allgemeines,*,*,*,*,Hund,Hund,Hund
res = res.next
line = f.readline()
Es ist einfacher, collection.defaultdict beim Zählen von Elementen zu verwenden.
mecab_class_count.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
param = sys.argv
infile = param[1]
f = open(infile)
line = f.readline()
import MeCab
m = MeCab.Tagger()
from collections import defaultdict
frequency = defaultdict(int)
while line:
res = m.parseToNode(line)
while res:
# print res.feature
#Substantiv,Allgemeines,*,*,*,*,Hund,Hund,Hund
arr = res.feature.split(",")
class_1 = arr[0]
frequency[class_1] += 1
res = res.next
line = f.readline()
# print frequency
# defaultdict(<type 'int'>, {'...
for k, v in frequency.iteritems():
print k, v
$ ./mecab_morph_count.py input.txt
Verb 4
BOS/EOS 8
Nomen 9
Hilfs 7
Hilfsverb 1
#MeCab-Instanz
m = MeCab.Tagger(' -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/mecab-ipadic-neologd')
m = MeCab.Tagger('-r my_mecabrc')