字種を利用した名詞、動詞、形容詞、形容動詞の判定

次の規則のもとに判定する。

漢字だけの並び→名詞
漢字の並びにひらがな「い」が後続する→形容詞
漢字の並びにひらがな「う」が後続する→動詞
漢字の並びにひらがな「だ」が後続する→形容動詞

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