Une note personnelle lors de l'utilisation de MeCab de Python.
mecab.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import MeCab
m = MeCab.Tagger()
print m.parse("Si un chien marche, il frappe un bâton.")
$ ./mecab.py
Chien substantif,Général,*,*,*,*,chien,Chien,Chien
Aussi assistant,Assistance,*,*,*,*,Aussi,Mo,Mo
Verbe de marche,Indépendance,*,*,Ligne Five-Dan / Ka,Forme assumée,marcher,Arche,Arche
Assistant BA,Assistant de connexion,*,*,*,*,Si,Ba,Ba
Bâton substantif,Général,*,*,*,*,barre,Arc,baud
Auxiliaire,Assistant de cas,Général,*,*,*,À,ré,ré
Hit verbe,Indépendance,*,*,Cinq étapes, La ligne,Forme basique,Frappé,Atal,Atal
.. symbole,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
#nom,Général,*,*,*,*,chien,Chien,Chien
res = res.next
line = f.readline()
Il est plus facile d'utiliser collections.defaultdict lors du comptage des éléments.
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
#nom,Général,*,*,*,*,chien,Chien,Chien
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
Verbe 4
BOS/EOS 8
Nom 9
Auxiliaire 7
Verbe auxiliaire 1
#Instance MeCab
m = MeCab.Tagger(' -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/mecab-ipadic-neologd')
m = MeCab.Tagger('-r my_mecabrc')
Recommended Posts