	   学年別ひらがな変換機能追加パッチ for KAKASI

			  2002年12月6日
		 馬場 肇 <baba.hajime@nifty.com>

パッチの説明
============

これは、未習得の漢字を含む単語を平仮名に変換したり振り仮名を振る機
能をKAKASIに追加するパッチです。漢字を学習中の子供あるいは外国人に
役立つかもしれない機能です。

  -l[123456jn] 仮名表記モード
  -L[123456jn] 振り仮名モード

の二種類のオプションが追加されます。既習得漢字のレベルとして、小学
校1年生〜6年生までに習う漢字、常用漢字(中学校卒業程度)、人名用漢字
が設定できます。


実行例
======

たとえば、

  KAKASI は、漢字かなまじり文をひらがな文や
  ローマ字文に変換することを目的として作成した
  プログラムと辞書の総称です。
  
というサンプル文を考えてみます。

[仮名表記モード]
----------------

既知の漢字が1年生程度の場合、-l1 オプションを与えると、
1年生で習った漢字だけで構成される単語はそのまま漢字表記し、
2年生以上で習う漢字を含む単語は仮名書きします。
  
  % ./kakasi -l1 < sample.txt
  KAKASI は、かんじかなまじり文をひらがな文や
  ローマ字文にへんかんすることをもくてきとしてさくせいした
  プログラムとじしょのそうしょうです。
  
これが小学校卒業程度になると、以下のようになります。
  
  % ./kakasi -l6 < sample.txt
  KAKASI は、漢字かなまじり文をひらがな文や
  ローマ字文にへんかんすることを目的として作成した
  プログラムと辞書のそうしょうです。

平仮名に開かれる単語の数が1年生のときに比べて減っていることが
わかります。


[振り仮名モード]
----------------

既知の漢字が1年生程度の場合、-L1 オプションを与えると、
2年生以上で習う漢字を含む単語に対して振り仮名を振ります。

  % ./kakasi -L1 < sample.txt
  KAKASI は、漢字[かんじ]かなまじり文をひらがな文や
  ローマ字文に変換[へんかん]することを目的[もくてき]として作成[さくせい]した
  プログラムと辞書[じしょ]の総称[そうしょう]です。
  
これが小学校卒業程度になると、以下のようになります。

  % ./kakasi -L6 < sample.txt
  KAKASI は、漢字かなまじり文をひらがな文や
  ローマ字文に変換[へんかん]することを目的として作成した
  プログラムと辞書の総称[そうしょう]です。
  
振り仮名を付与される単語の数が1年生のときに比べて減っていることが
わかります。


特徴
====

現状のKAKASIでも -f オプションにて振り仮名を指定することができます
が、(さらに -p オプションを追加すれば可能性のある複数の読みを表示
することもできますが)、-f オプションではすべての単語に対して振り仮
名を振ってしまいます。本パッチでは、振り仮名を振る漢字のレベルを指
定できるところが特長です。おそらくは、小学生の読めない難しい漢字に
対して振り仮名を振る -L6 オプションか、常用漢字あるいは人名用漢字
以外の漢字はすべて平仮名に開く-ln オプションなどがそこそこ実用的な
のではないかとおもいます。

機能的には、富士通ラーニングメディアの「ひらがなナビィ
(http://www.knowledgewing.com/kids/)」の学年別ひらがな変換機能と同
じです。こいつを使って delegate などでフィルタするようなものを適当
に作ってやれば、「キッズgoo (http://kids.goo.ne.jp/)」に搭載の漢字
⇔ひらがな変換機能のようなものも作れるんじゃないかとおもいます。


制限・コメント
==============

・単語の一部が指定学年までに学習していない漢字の場合、その単語はす
  べて平仮名に変換し(あるいは振り仮名を振り)ます。交ぜ書き変換はで
  きません(後述)。

・漢字ひらがな変換機能は完全な変換を保証するものではありません。１
  つの漢字で複数の読み方が存在する場合などは、正しく表示されない場
  合があります。

・振り仮名モードの場合、初出の単語ののみ振り仮名を振って二度目以降
  は振り仮名を振らないというような高度なことはできません。

・漢字が平仮名に変換する(あるいは振り仮名を振る)だけで、内容につい
  ては変更できません。漢字を平仮名に開いたからといって子供が読めて
  も理解できる文章になるわけでは必ずしもありません。内容を易しく書
  き直すのは自分で直してください。

・そもそも、作成したクイズの問題文が「漢字が難しくて読めない」とい
  う子供達からの声を受けたために作ってみたものです。ロジックは極め
  て簡単なので、同じ機能は ChaSen にも組み込めるはずです。


「交ぜ書き」について
====================

前述の例で挙げた「総称」という単語の場合、「総」は4年生で習う漢字
ですが、「称」は小学校で習わない漢字ということになっています(常用
漢字に含まれており中学校以降で習う)。このような場合、「総しょう」
と表記することも考えられます。このように単語の一部を仮名書きにする
ことを「交ぜ書き」と呼ぶようです。

このパッチは、交ぜ書き変換をする機能は含んでいません。「へんかん」
と全部ひらがなに開くか、片一方は知っている漢字であっても「変換[へ
んかん]」のように無理に振り仮名を振るかしか選択できません。これは、
習っていない漢字に対応する部分の読みを適切に決定することが(KAKASI 
の内部で使っているコードを流用するだけでは)技術的にかなり困難だっ
たためです。また、「常用漢字表」に掲げられていない漢字を含む語の場
合は、平仮名書きにするときに語全体を仮名書きにするのが一般的なよう
です。実際に、新聞や一般の雑誌・書籍においては交ぜ書きを避ける傾向
にあります。


用いた漢字表
============

・学年別漢字配当表
  小学校学習指導要領 付学校教育法施行規則（抄）
  の「第２章　各教科  第１節　国語」掲載の別表に掲げられた1006字。
  http://www.mext.go.jp/b_menu/shuppan/sonota/990301b/990301d.htm

・常用漢字
  昭和56年10月1日内閣告示第一号「常用漢字表」
  「一般の社会生活における、現代国語表記上の漢字使用の目安」(1945字)。

・人名用漢字
  戸籍法施行規則（昭和二十二年十二月二十九日司法省令第九十四号、
  最終改正：平成一四年二月一八日法務省令第九号）の別表第二
  「常用漢字表に掲げる漢字、片仮名または平仮名に加え、子供の名前に
    用いることのできる文字」として定められた漢字(285字)。


以上
