misima 旧字体変換機能訂正

旧字・旧仮名遣い変換 misima の旧字体変換機能について,以前から正さなければならないと考えていた問題点の対応を行った。久々のメンテナンス。

新字体と旧字体の対において,意味によっては新字体を旧字体に置き換えてはならない場合がある。たとえば,「余」(新字体)と「餘」(旧字体)について,剰余というような「あまり」の意味では「余」をその旧字体として「餘」に変換してもよいが,「われ」という代名詞の意味で用いられているときは「餘」とするのは誤りである。「余」のまま残さなければならない。

このような,意味によって文字を使い分けるべき「新字体:旧字体」の対には,次のようなものがある。予:豫,体:體,余:餘,党:黨,医:醫,台:臺,弁:辯辨瓣,担:擔,欠:缺,灯:燈,県:縣,糸:絲,缶:罐,虫:蟲,蚕:蠶,証:證,鉄:鐵。これらは学研の『改訂第四版 漢字源』から,全掲載文字についてチェックして拾ったものである。ここではそれぞれどのような意味の場合に後者への旧字体置換が誤りとなるかを示すことはしない。お手元の漢字字典で調べていただきたい。

misima には単純変換機能,用語用字変換機能というのがあり,misima 辞書に登録しておくことで,それぞれ,文字列レベル,単語の見出語レベルで変換操作を制御することが出来る。たとえば「あくび」という意味の「欠伸」は,通常の旧字変換では「缺伸」と誤変換されてしまうが,あらかじめ misima 旧字体変換機能の誤変換を見越して,単純変換辞書に「欠伸」(これが正しい表記)に戻すエントリを入れかつ単純変換機能を指定して変換することで,正しい結果が得られるようになっている(弊サイトサービス用の辞書にはすでに登録されている)。だいたいの場合においてはこの手法で誤変換を救うことが可能だと作者は考えている。

しかしながら,「われ」という意味の「余」と「予」は,一文字ということもあり辞書で誤変換を正すのは危険であるため,これまで対策を施さないでいた。すべて「餘」と「豫」に変換されていたのである。「余」,「予」以外の前掲の対で新字体のまま残さなければならないのは,「欠伸」のように熟語で判断できるか,もしくは極めて特殊な意味の場合のみなので,既存コードで対応可能である。後者の例では,「蚕」は,このまま旧字体としなければならないのは「ミミズ」の意味で使われるときのみで(日本では「蚯蚓」に「蚕」字をつくる例は稀ではなかろうか),いわゆる「かいこ」に関わる場合は「蠶」としてよいので,常に「蠶」に変換しても可なのである。

さて,「余」「予」問題の対策法は,misima が日本語文法解析で用いている日本語形態素解析ソフトウェア・茶筌 + 日本語辞書 ipadic の解析情報において,「余」と「予」が代名詞として解析される場合,変換しないようにすればよい。茶筌は日本語テキストを解析し,単語分割の過程で,「余」を代名詞だと判断すると,品詞番号に 14(=名詞-代名詞-一般)をセットして misima に返却する。つまり,単語(見出語)が一文字「余」に一致し,かつ品詞番号が 14 であれば変換操作を行わないようにすればよい。ただし,「予」については,茶筌はこれを品詞番号 17(=名詞-サ変接続)に解析してしまうようである。つまりは「予する」というサ変動詞の名詞部と解析してしまう。こんな語は普通使用しないので,品詞番号 17 の場合も見出語が「予」一文字ならば一律代名詞と判断してもよさそうである。茶筌の品詞解析は ipadic に基づいており,その詳細は『ipadic version 2.7.0 ユーザーズマニュアル』を参照されたい。

misima(コマンドラインで使用するコンソールプログラム。Web CGI 版で使用)及び misimaserver(マルチサーバ・デーモンプログラム。Web Servlet 版及び misima RESTful Web Service 版で使用)の旧字変換ルーチンの頭のところに,この判定を追加した。たった五行である。コードは以下のとおりである。

sub seiji_henkan {
    my $word_conv = shift; # 変換対象文字列(茶筌見出語)
    # 2014.09.22 追加
    # 「品詞番号14=名詞-代名詞-一般」または「品詞番号17=名詞-サ変接続」の「余」「予」は変換しない
    if (($hinsi_no == 14) || ($hinsi_no == 17)) {
        if (($word_conv eq '余') || ($word_conv eq '予')) {
            return;
        }
    }
    # 1文字ずつ旧字テーブルをチェック
    my $cw = ''; my ($we, $after, $chr);
    for (my $i = 0; $i < length($word_conv); $i++) {
        $we = substr($word_conv, $i, 1);
        if (exists $s_tbl{$we}) {       # 旧字テーブルにある場合
    ... 以下略

デバッグオプション(-d)を付け形態素解析表示させて,misima コマンドを試験してみる。「余は森鴎外であると言う。剰余を吐き出す。そして予はこうごうしくたおれる。予定は未定。」という入力テキストに対し,「余は森鷗外であると言ふ。剩餘を吐き出す。そして予はかうがうしくたふれる。豫定は未定。」という変換結果が得られるようになった。「予:豫」,「余:餘」を変換し分けることが出来るようになった。

$ cd ~/src/misima/module
$ ./misima -kyitqd -s c < t.txt
 
[入力]:
余は森鴎外であると言う。剰余を吐き出す。そして予はこうごうしくたおれる。予定は未定。
 
  余    余(基本形)-14(名詞) [旧]:(無) [用]:(無)
  は    は(基本形)-65(助詞) [旧]:(無) [用]:(無)
  森    森(基本形)-7(名詞) [旧]:(無) [用]:(無)
  鴎外  鴎外(基本形)-8(名詞) [旧]:(無) [用]:(無)
  で    だ(基本形)-74-55-4(助動詞-特殊・ダ-連用形) [旧]:(無) [用]:(無)
  ある  ある(基本形)-74-18-1(助動詞-五段・ラ行アル-基本形) [旧]:(無) [用]:(無)
  と    と(基本形)-62(助詞) [旧]:(無) [用]:(無)
  言う  言う(基本形)-47-21-1(動詞-五段・ワ行促音便-基本形) [旧]:(無) [用]:(無)
  。    。(基本形)-78(記号) [旧]:(無) [用]:(無)
  剰余  剰余(基本形)-2(名詞) [旧]:(無) [用]:(無)
  を    を(基本形)-61(助詞) [旧]:(無) [用]:(無)
  吐き出す  吐き出す(基本形)-47-12-1(動詞-五段・サ行-基本形) [旧]:(無) [用]:(無)
  。    。(基本形)-78(記号) [旧]:(無) [用]:(無)
  そして    そして(基本形)-58(接続詞) [旧]:(無) [用]:(無)
  予    予(基本形)-17(名詞) [旧]:(無) [用]:(無)
  は    は(基本形)-65(助詞) [旧]:(無) [用]:(無)
  こうごうしく  こうごうしい(基本形)-51-51-6(形容詞-形容詞・イ段-連用テ接続) [旧]:
かうがうしい 2 [用]:(無)
        **活用語旧仮名変換**
      - 変換前  : |こうごうしく|
      - 出現形  : |こうごうしく| 型 : 51
      - 基本形  : |こうごうしい|
      - 登録語  : |かうがうしい|
      - 語幹部  : |かうがうし|
      - 出語尾  : |く|
      - 登語尾  : |い|
      - 後語尾  : |く|
      - 語尾長  : 1
      - 語幹節  : 5
      - 後work  : |かうがうしく|
      - 変換後  : |かうがうしく|
  たおれる  たおれる(基本形)-47-6-1(動詞-一段-基本形) [旧]:たふれる 1 [用]:(無)
        **活用語旧仮名変換**
      - 変換前  : |たおれる|
      - 出現形  : |たおれる| 型 : 6
      - 基本形  : |たおれる|
      - 登録語  : |たふれる|
      - 語幹部  : |たふれる|
      - 出語尾  : ||
      - 登語尾  : ||
      - 後語尾  : ||
      - 語尾長  : 0
      - 語幹節  : 4
      - 後work  : |たふれる|
      - 変換後  : |たふれる|
  。    。(基本形)-78(記号) [旧]:(無) [用]:(無)
  予定  予定(基本形)-17(名詞) [旧]:(無) [用]:(無)
  は    は(基本形)-65(助詞) [旧]:(無) [用]:(無)
  未定  未定(基本形)-18(名詞) [旧]:(無) [用]:(無)
  。    。(基本形)-78(記号) [旧]:(無) [用]:(無)
 
[出力]
余は森鷗外であると言ふ。剩餘を吐き出す。そして予はかうがうしくたふれる。豫定は未定。
...

しかし。次のような場合はお手上げである。言葉は意味判断抜きに取り扱ってはならない,つまりは完全な機械処理は無理だと考えたほうがよい。

$ ./misima -kyitqd -s c < t2.txt
 
[入力]:
予定の予という文字。
 
  予定  予定(基本形)-17(名詞) [旧]:(無) [用]:(無)
  の    の(基本形)-71(助詞) [旧]:(無) [用]:(無)
  予    予(基本形)-17(名詞) [旧]:(無) [用]:(無)
  という という(基本形)-63(助詞) [旧]:といふ 7 [用]:(無)
  文字  文字(基本形)-2(名詞) [旧]:(無) [用]:(無)
  。    。(基本形)-78(記号) [旧]:(無) [用]:(無)
 
[出力]
豫定の予といふ文字。
...

新字体:旧字体の対でもうひとつやっかいな問題として,旧字体の略字に相当する新字体がもともと存在していた別の意味の文字とほぼ同形をなしている場合がある。芸術の「芸」の旧字体は「藝」であるが,この「芸」の字に似た,ミカン科の草の名や草の生い茂る様の意味で,「ウン」という字韻をもつ文字がある。これは「芸」の「」(草冠: U+8279)を真ん中が切れた「」(U+FA5E)でつくる文字で,Unicode にも定義されていない。ものの本には,「藝字に対しまったく意味の違うウン文字を新字体として宛てたのは国字政策の誤りだ」みたいなことを自信満々に書いているものもあるが,「藝」の新字体「芸」と「ウン」字は — 似てはいるが — そもそも別文字であるというのが『漢字源』の教えるところであってみれば,「意味の違う文字を宛てた」というのは勘違い・早とちりというべきである。

とはいえ,Unicode にない「ウン」字のほうもコンピュータ上で用いるときは「芸」を宛てるしか手だてがないとすれば,これも上掲の対と同等の問題があるといえる。misima では「藝」でなく「ウン」字韻文字として用いられたと思われる「芸」字は,熟語として判断できるものについて「芸」のまま残す辞書定義になっている。完全性は保証しないが。たとえば,「芸芸」,「芸香」などの「芸」は「藝」とせず「芸」のまま残すようになっている。

20140922-char-gei-un.png
芸・藝字とウン字韻字(学研『改訂第四版 漢字源』)

以下のアマゾンリンクは学研『漢字源』の最新版である。