字種による形態素の切り出しプログラム(辞書を用いない)

まず、文を漢字、カタカナ、ひらがなのまとまりに分離するプログラムを書く。(連続する2文字の字種が違う場合、改行記号を出力)

(例)

人工知能のプログラムを書きます。

を、

人工知能

プログラム


きます

としたい。

aparser.py

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import re

kanj = re.compile(ur'^[一-龥]*$')
hira = re.compile(ur'^[あ-ん]*$')
kata = re.compile(ur'^[ァ-ン]*$')

class Hantei:
    def hantei(self,moji):
        if (kanj.search(moji)!=None):
            return "kanji"
        elif(hira.search(moji)!=None):
            return "hiragana"
        elif(kata.search(moji)!=None):
            return "katakana"

cutmorph.py

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import re
from aparser import Hantei

ha = Hantei()

class Cutmorph:
    def cut(self,sent):
        #sent = raw_input("カットしたい文字列を入力:").decode("utf-8")
        numarray = [-1]
        for x in range(len(sent)-1):
            if ha.hantei(sent[x]) != ha.hantei(sent[x+1]):
                numarray.append(x)
        numarray.append(len(sent))
        array = []
        for y in range(len(numarray)-1):
            before = int (numarray[y]) + 1
            last = int (numarray[y+1] ) + 1
            array.append(sent[before:last])
        return array