[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-dev:00049] Re: 病名クラス



有家@松山記念病院です。

「病名修飾語かどうかを返すメソッド modifier?」を書いたのですが
あれを ChaSen の辞書に含める方法として
「病名修飾語 900」「基本病名」等々の記述をIPADICの付加情報として登録し
splitメソッドに反映する方法が、いちばん無理がないかなと考えています。
cf) http://chasen.aist-nara.ac.jp/stable/ipadic/ipadic-2.4.4.tar.gz

あと補足として、いくつかのメソッドを追加します。

▼
まず「基本病名(修飾語を含まない病名)かどうかを返すメソッド basename?」は
病名修飾語を含まない(すっぴんの)基本病名のリストを "basename.txt" とすると

class Disease < String
    bas_txt = "basename.txt"
    Base = open(bas_txt, "r"){|io| io.readlines}.each{|$_| chomp!}

    def basename?
        Base.include?(self)
    end
end

# 上記のopen文は(ちょっと気に入っているのですが)Rubyの作法としてどうか..

▼
ほかに
「病名(self)に含まれる修飾語の配列を返すメソッド modifiers」や
「病名(self)に含まれる基本病名の配列を返すメソッド basenames」なども
定義する必要がありますが、これらはちゃんとした splitメソッドが書けた後の
課題です。
ということで、以下は実行確認したコードではありません。

class Disease < String
    # 病名(self)に含まれる修飾語の配列を返す(暫定版)
    def modifiers
        (self).split.collect{|i|
            i if i.instance_of?(Disease) && i.modifier?
        }.compact
    end

    # 病名(self)に含まれる基本病名の配列を返す(暫定版)
    def basenames
        (self).split.collect{|i|
            i if i.instance_of?(Disease) && i.basename?
        }.compact
    end
end

-- 
pba00250@xxxxxxxxx
yoariie@xxxxxxxxxxxxxxx
-------------------------
有家佳紀  Yoshinori Ariie