見出し画像

旧仮名キーボード開発記#6|辞書をつくる

長いこと放置していましたが、今日は辞書をどうするかについて考えていきます。

***


先人の辞書を見てみる

普段旧仮名を使っている人たちは、旧仮名の単語が大量に定義されたCSVファイルを「ユーザー辞書」としてIMEに取り込み、擬似的に旧仮名変換を実現しているようです。

今回はライセンスの関係上および自分で色々整理したい都合上、ネットに転がっている旧仮名辞書は利用しません。ただし、仕様を検討するにあたっては、以下のような辞書を参考にしました。

※敬称略
旧仮名口語UniDic(国立国語研究所)
快適仮名遣ひ(歴史的仮名遣教室)
Google日本語入力用正字正かな辭書(野嵜健秀)
モバイル餠辭書(押井徳馬)
北極三號辭書(千田俊太郎)
北極三號改(tadakiti)

また、mozcを改変して旧仮名変換をできるようにしている人も見つけました。辞書も自前で作成しているらしいです。ちなみに公開されているのは、PC向けにビルド済みの実行ファイルだけのようでした。

Mozc for Classical Kana Spelling "恆存"(仮称)(akirakubo)

今回作ろうとしている旧仮名キーボードは、akirakuboさんの開発物とちょっと似ています。下敷きにしているリソースとリリース先のデバイスが違うくらいですかね。

新しい辞書をつくる

NAIST Japanese Dictionaryという辞書(以下、NAIST辞書と呼ぶ)を下敷きにして独自の辞書を作っていこうと思います。

NAIST辞書は、以下のような形式のCSVファイルです。

NAIST辞書
表層形, 左文脈ID, 右文脈ID, コスト, 品詞, 品詞細分類1, 品詞細分類2, 品詞細分類3, 活用型, 活用形, 原形, 読み, 発音, 漢字表記の例, XML情報

今回はこれを以下のような形式に改変し、辞書データを作っていくことにしました。

旧仮名入力用の辞書
旧仮名読み, 左文脈ID, 右文脈ID, コスト, 品詞, 品詞細分類1, 品詞細分類2, 品詞細分類3, 活用型, 活用形, 新字新仮名表層形, 新字旧仮名表層形, 新字旧仮名表層形(字音なし), 旧字新仮名表層形, 旧字旧仮名表層形, 旧字旧仮名表層形(字音なし)

第1列の「表層形」を「旧仮名読み」に変更した理由は、漢字仮名変換処理のときに行う形態素解析では、入力文字列はすべて「読み」となるはずだからです。ちなみに、本来の「表層形」のほうは、第11列「新字新仮名表層形」のほうに移動してもらっています。

第11列以降には、いろいろな種類の表層形を定義しています。そもそもユーザ要件として、「旧仮名は使うが、旧字は使わない」だったり、「旧仮名は旧仮名でも、『てふてふ』のような字音仮名遣いは使わない」だったり、さまざまな書き方に対応する必要性が出てくるかもしれないので、あらかじめ列として用意しておくことにしました。

辞書編集の作業手順

前章で設けた表層形のバリエーションにすべて対応すると工数が膨大してしまうので、一旦「かはる→變はる」のように旧仮名読みから旧字旧仮名表層形を導出できるようになることを目指します。

以下が作業手順です。

①NAIST辞書をGoogle Spreadsheetにインポートする
②活用が「基本形」になっているものだけを抽出する
③必要な列を作成し、作業しやすいように列の並びを整理する
④GASで「新仮名読み」を平仮名に変換する
⑤GASで「新仮名読み」の値を取得し、文字列中に新仮名遣いが含まれないことが確実ならば、その値を「旧仮名読み」にそのままコピーする
⑥手動で「旧仮名読み」を入力する(空欄となっている部分のみ)
⑦追加したいレコードがあれば、ついでに追加する
⑧GASで「新字新仮名表層形」の値を取得し、文字列がすべて平仮名ならば、「新仮名読み」を「旧字新仮名表層形」にそのままコピーし、「旧仮名読み」を「新字旧仮名表層形」「旧字旧仮名表層形」にそのままコピーする
⑧GASで「新仮名読み」と「旧仮名読み」とを比較し、同一文字列ならば「新字新仮名表層形」を「新字旧仮名表層形」にそのままコピーする
⑨手動で「新字旧仮名表層形」を入力する(空欄となっている部分のみ)
⑩GASで「新字新仮名表層形」を旧字に変換して「旧字新仮名表層形」にコピーし、「新字旧仮名表層形」を旧字に変換して「旧字旧仮名表層形」にコピーする(「弁」など変換候補が複数ある漢字が含まれる場合は、セルを赤くマークする)
⑪赤くマークされたセルの漢字を手動で修正する
⑫GASで、すべての活用形を演繹的に生成して別シートに出力する
⑬GASで、演繹生成したレコードと同じものがオリジナルIPA辞書に存在するか確認し、存在した場合、そのレコードの「右文脈ID」「左文脈ID」「コスト」をそのままコピーする

本来ならば「旧仮名読み」と「旧字旧仮名表層形」だけを作ればよかったのですが、GASを使うと「新字旧仮名表層形」と「旧字新仮名表層形」も半自動的にできてしまうので、その2つもついでに作ることにしました。

辞書編集の進捗(形容詞)

なんとなく形容詞から着手しました。

独自に追加した表層形を含め、形容詞のレコード数は2800件ほどあるのですが、1日で①〜⑪までの修正作業がすべて完了しました。修正が必要なものは意外と少なかったです。

スクリーンショット 2021-05-24 18.01.19

修正の過程で、追加したレコードがいくつかあります。

巧い(うまい)
辞書にも掲載されている表記ですが、NAIST辞書には存在しなかったため、追加しました。
このほか、「美しい(うるわしい)」「朱い(あかい)」「寡い(すくない)」「諄い(くどい)」「律律しい(りりしい)」「温和しい(おとなしい)」「芽出度い(めでたい)」など、当て字や熟字訓の類も含め、辞書に記載が見られる表記は大量に追加しました。

羨しい(うらやましい)
NAIST辞書には「羨ましい」という送り仮名としては存在していますが、「羨しい」としては存在していなかったため、追加しました。
同様の例として、「暖い(あたたかい)」「映々しい(はえばえしい)」などを追加しました。

きもい
広く使われている言葉とみなせるため、追加しました。
このほか、「グロい」「うざい」「下衆い(げすい)」「うっとい」「恥ずい(はずい)」「むずい」などの俗語を追加しました。このうち、「うっとい」の旧仮名表記はそのまま「うっとい」としています。元になった言葉は「うったうしい」ですが、「たう」の部分はすでに「と」に約まったものと解釈し、「うったい」とはしませんでした。また、「恥ずい」の旧仮名表記は「恥づい」としています。元になった言葉は「恥づかしい(はづかしい)」であり、略されても「づ」の部分は保存されていると解釈し、「恥づい」としました。「むずい」も同様の理由で「むづい」としました。

また、削除したレコードもいくつかあります。レコードの削除基準については、以下いずれかに該当する場合に限りました。
・辞書にもネットにも探し当たらず、かつ誤りの原因が推測できる場合
・「新字新仮名表層形」が、旧字または旧仮名遣いで表記されている場合

くすい
辞書やネットで調べましたが、実在性を確認することはできませんでした。おそらく古語の「くすし」をク活用と解釈して口語化した結果、誤って生成された架空の単語であると考えられます。これを削除する代わりに「くすしい」を追加しました。
このほか、「あさまい」「好き好きい(すきずきい)」「乏い(ともい)」なども同様の扱いとしました。

角々しい(かとかどしい)
1文字目の「角」を「かど」ではなく「かと」と読んでいます。辞書やネットで調べましたが、実在性を確認することはできませんでした。「角々しい(かどかどしい)」の見間違いから生じた架空の単語とみなし、削除しました。
このほか、「似かわしい(につかわしい)」も誤植の一種であるとみなし、削除しました。

おほけない
古語「おほけなし」を口語化したものと考えられますが、旧仮名遣いのまま「新字新仮名表層形」に収められているため、削除しました。これとは別に「おおけない」というレコードがあり、こちらはそのまま残しました。
このほか、「さうない」「きむづかしい」「とほしろい」「らうたい」なども同様の扱いとしました。

耳聰い(みみざとい)
旧字のまま「新字新仮名表層形」に収められているため、削除しました。代わりに「耳聡い」を追加しました。

逆に、奇妙な単語であっても、あえて削除しなかったものもあります。

のどけい
この単語は辞書に載っていませんが、おそらく古語のク活用形容詞「のどけし」を口語化したものであり、文法的には正しいとみなせるので残しました。
このほか、「あまねい」「こよない」なども同様の理由で残しました。

えがたい
「たべがたい」や「あるきがたい」のように動詞に「かたい」が接続しただけの言葉にも思ますが、辞書には形容詞として記載されていたので残しました。
このほか、「度し難い(どしがたい)」「与し易い(くみしやすい)」なども残しました。

そぐわない
どう考えても形容詞ではなく、辞書にも形容詞としての記載はなかったのですが、もしかしたらNAIST辞書が採用している品詞体系ではあえて形容詞扱いしているのかもしれない(打消しの「ない」を伴うタイプの動詞を便宜上形容詞とみなしている?)と思ったので、悩んだ末に残しました。

仮名遣いに悩んだ単語もあります。

格好良い(かっこういい)
本来は「恰好良い」と書き、その旧仮名は「かっかういい」であるとされています。「恰好(かっかう)」と「格好(かくかう)」は仮名遣いが異なるので、漢字に応じて「かっかういい」と「かくかういい」の2通りに分けるべきか、それとも本来の表記に準じて「かっかういい」に統一するべきか悩みました。結局「かっこう」の部分は名詞として切り出し可能であることから、「恰好良い」「格好良い」は別の単語であるとみなし、それぞれ「恰好良い(かっかういい)」「格好良い(かくかういい)」のように表記を分けることにしました。これに伴い、仮名書きの「かっこういい」にあたる旧仮名も「かっかういい」「かくかういい」の2通りを並存させることにしました。また「かっこいい」も同様に「かっこいい」「かくこいい」を並存させることにしました。

次回予告

次回は、やり残した⑫〜⑬の手順を完了させ、iPhoneエミュレータで実行したときにうまく動作するかどうか確認していきます。



この記事が気に入ったらサポートをしてみませんか?