次の規則のもとに判定する。
漢字だけの並び→名詞 漢字の並びにひらがな「い」が後続する→形容詞 漢字の並びにひらがな「う」が後続する→動詞 漢字の並びにひらがな「だ」が後続する→形容動詞
main.py
#! /usr/bin/env python # -*- coding: utf-8 -*- import re from cutmorph import Cutmorph from aparser import Hantei cu = Cutmorph() ha = Hantei() moji = raw_input(u"カットしたい文字列を入力:").decode("utf-8") array = cu.cut(moji) def kisoku(array): parsed = {} for x in range(len(array)-1): if ha.hantei(array[x]) == "kanji": indicator = array[x+1] factor = indicator[-1] # factorはunicode if factor == u"い": parsed[array[x]]="keiyoshi" elif factor == u"う": parsed[array[x]]="doshi" elif factor == u"だ": parsed[array[x]]="keiyodoshi" else: parsed[array[x]]="meishi" return parsed parsed = kisoku(array) print parsed
ファイル入力させる形に変更した。
#! /usr/bin/env python # -*- coding: utf-8 -*- import re import codecs from cutmorph import Cutmorph from aparser import Hantei cu = Cutmorph() ha = Hantei() #moji = raw_input(u"カットしたい文字列を入力:").decode("utf-8") filename = raw_input("カットしたいファイル名を入力:") file = codecs.open(filename,"r","utf-8") mojiarray = [] for line in file: mojiarray.append(line) moji = "".join(mojiarray) array = cu.cut(moji) def kisoku(array): parsed = {} for x in range(len(array)-1): if ha.hantei(array[x]) == "kanji": indicator = array[x+1] factor = indicator[-1] # factorはunicode if factor == u"い": parsed[array[x]+array[x+1]]="keiyoshi" elif factor == u"う": parsed[array[x]+array[x+1]]="doshi" elif factor == u"だ": parsed[array[x]+array[x+1]]="keiyodoshi" else: parsed[array[x]]="meishi" return parsed parsed = kisoku(array) print parsed fout = open("dict_"+filename,"w") posdict = [] for (k,v) in parsed.iteritems(): word = k.encode("utf-8") pos = v posdict.append(word+":"+pos) for posd in posdict: fout.write(posd+"\n") file.close() fout.close()
坊ちゃんのテキストから辞書を作った。
(一部抜粋)
大抵:meishi
温良:meishi
誇:meishi
喜んでるどころじゃない:keiyoshi
出来:meishi
手前のわるい:keiyoshi
免職さしたらよかろう:doshi
全体中学校:meishi
大抵平仮名:meishi
昔小学校:meishi
返せないんじゃない:keiyoshi
会見するそうだ:keiyodoshi
修行:meishi
直行:meishi
好きなのだろう:doshi
少しはいたずらもしたもんだ:keiyodoshi
別問題だ:keiyodoshi
一着手:meishi
団子屋:meshi