2023年11月30日木曜日

漢字の音訓辞書 Onkun をつよつよにした

音訓辞書 Onkun をつよつよにしました。 常用漢字の教育用の音読み・訓読みのデータは政府が 2017年、2010年に公開しており、2010年はまだ楽だったので対応していました。 2017年は小中高ごとに履修すべき項目が用意されている一方、パース不能のため放置していました。 いつかはやらないとと思っていたので手作業で分類し、送り仮名も付けて、ライブラリ化しました。 常用漢字以外も一応、対応しています。

onkun

常用漢字以外の音訓データとして、たとえば今は亡き MJ 文字 にも音読み・訓読みデータがありますが、送り仮名の情報はありません。 他にも後述するようなリソースが色々あるにはあるのですが、送り仮名をどうするかがネックになりがちです。 またリソースが分散していて面倒すぎる問題があります。 Onkun では送り仮名問題は残っているのですが、様々なリソースをまとめて、簡単に処理できるようにしました。 以下のように使えます。昔のバージョンとは互換性がないですが、まあ仕方ない。
import { Onkun } from "onkun";

const onkun = new Onkun();
await onkun.loadJoyo("data/joyo-2017.csv");
await onkun.load("Joyo", "data/joyo-2010.csv");
await onkun.load("Unihan", "data/Unihan-2023-07-15.csv");

onkun.get("漢"); // --> { 小学: ["カン"], 中学: [], 高校: [], Joyo: ["カン"], Unihan: ["カン", "タン", "から"] }
のように様々な辞書のデータを取得できるようにしました。つよつよ。

辞書について

常用漢字までの教育用途の音訓は政府が用意してあるのでそちらを使ってます。 漢検と一致しないので若干わかりにくいですが、実用上は問題ないです。 平成22年のものは joyoKanji というオープンデータがあって、たぶんこれが一番使いやすいです。 Onkun はこのデータとの整合性チェックは行っているので、登録ミスはたぶんないと思う。 常用漢字以外については Unihan Database に頼るのが良さそうですが、送り仮名はありませんし精度はそこまで信用できません。

他に音読み・訓読みを取得する手段としては KANJIDIC があります。 送り仮名や英訳が付いている時もあり利点ですが、精度はほどほどです。 13,000 字くらいしか対応しておらず、ライセンスが面倒なので、今回は見送りました。 MJ 文字 も 6000字くらいしか対応しておらず、同様の理由で見送っています。 SudachiDict は一番期待していたのですが、対応は 6,000〜7,000 と少なめです。 また実際データを生成して中身を見てみると、漢字一文字のノイズが目立つので、ちょっと使いにくそう。 網羅的すぎるが故に、熟語生成器としては良いですが、音訓生成器としては微妙です。 音訓が不明な状態からデータが難読読みか判定できる方法ってあるのかな? 以上をまとめると、対応数が 50,000 字ある Unihan Database が良さそうの結論になります。

送り仮名は難しすぎない?

音訓を手動して付与している時に気付いたのですが、「交(ま)じる」は「交(まじ)わる」のように、漢字の読み方自体が変わるのですね。 このように漢字の読み方が変化 (ま vs まじ) するのは、すごく珍しい気がします。 たまには手動でデータを弄ると気付かされることもありますね。 常用漢字でも「行う」「行なう」のように送り仮名が一意に決まらないケースもあります。 この 2つが組み合わさって「荒(あら)い」「荒(あ)らす」「荒(あら)す」のようなケースもあります。 「荒(あ)れる」みたく語尾が揺れるから仕方ないんだろうけど、「荒い」の時だけ漢字の読み方が変わるのはムズいと思う…。 まあコレを言い始めると、「明(あ)かり」と「明(あか)り」「明(あか)るい」も地味に難しいと思う。

このように送り仮名の付け方が難しい漢字があるのですが、だいたいは 内閣告示・内閣訓令 > 送り仮名の付け方 にルールが記載されているようです。 しかしこれを読ませるくらいなら、最初からまともに使えるものを配布して欲しいなあ。

たとえば「助 (すけ)」と「助 (す)け」の区別は難しいですよね。 「助(す)ける」という言葉がきちんとあるので、活用は存在すると考えられ、後者が正しいはずです。 ただ「すけ」までしか書いていないので名詞扱いだとして、「すか」のような活用がない名詞だと言い張ったとしても、例外に記述がないので後者が正しいはずです。 ただ「活用のある語から転じた」に合致するとはいえ「助(す)ける」は表外の利用法なので、これで良いのか?と迷いはあります。 ちなみにネットの辞書を調べるとすべて前者になっている状態。いちおうコトバンクは説明がありましたが、他はなし。 …といった感じで、たかが常用漢字の音訓でさえ分類が難しいのは如何なものか。 間違いの気はしつつも、自分のほうが間違っている確率のほうが圧倒的に高いので、他に合わせておきました。


難読漢字の難しさ

難読漢字の音訓データは他の辞書がどうやって入力しているのか謎なところがあります。 たとえば「龕」などを例に上げると、MJ 情報基盤も Unihan Database も「ガン カン コン」の 3つで統一されています。 しかしネットの辞書で調べると、「ずし かつ れい」などの読み方もあると書かれています。 …が、そのデータはどこから来ているのでしょうか。 「ずし」は SudachiDict にも登録されています。 「れい」は KANJIDIC に登録されていますが、「れい」で使われるのを見たことないですね。 「かつ」はまったくわからないですが…予想では漢字検定が由来なんじゃないかなあ。 これも用例が少なすぎて信頼性は確認が難しいです。 「ガン カン コン」も「ガン」以外の読み方の例を見たことがないので、その信頼性さえわかりません。

このように常用外の漢字は情報源もほとんどなくなって信頼性が大きく下がります。 辞書を作りながら言うのもアレですが、常用漢字くらいが限度で、それ以上の精度は諦めるしかないんじゃないかな…。 漢検準1級くらいまでの表外読みは SudachiDict から抽出できますが、漢字によっては地獄のような量が抽出されるので、どう扱うかは迷います。 たぶんそれらはもはや難読漢字の区切りにしたほうがよくて、表外読みは下手に色々付けないほうが良いと思う。 とりあえず付けるなら Unihan Database くらいが良いのでは。


0 件のコメント: