このリポジトリは日本語版Wikitonaryから生成したいくつかの辞書が含まれています。
- SKK_JISYO.shikakugoma: 四角号碼の辞書です
- SKK_JISYO.seikana: (experimental) 歴史的仮名遣い(正假名)の辞書です
SKKで使える四角号碼辞書です。Wiktionaryの漢字の記事から生成しています。
漢字に対応する4つの数字(附画を加えると5つ)のコードから漢字に変換します。このコードは漢字の見た目から決まるので漢字ごとに番号を覚えたりしなくても変換したい漢字さえ思い浮かんでいれば変換できます。読み方が分からなくても大丈夫です。また、選択性が非常に高く、4文字のコードで候補を数個に絞り込めます。附画を加えるとさらに限定できます。
例えば「碼」に割り当てられた四角号碼は11627なので以下のように入力すると
▽1162
以下のように変換できます。
▼碼
四角号碼の1162に該当する漢字は「碼」の他にも「酊」など4つほどその候補が全て出てきます。ですが附画の0を加えて11620とすると「酊」のみ出てきます。
▽11620
▼酊
通常のSKK辞書として使えます。数字からの変換は「Q」から変換できます(SKKエンジンによって異なるかもしれません)。
1つの辞書しか扱えないSKKエンジンを使っている場合はskkdic-expr2などで1つにまとめて下さい。
漢字を歴史的仮名遣いで変換するための(実験的な)辞書です。また、アノテーションも含みます。歴史的仮名遣いを普段から使っている人は正假名と呼んでいるようです。こっちの方が短いので以後こっちで説明します。
漢字の音読みには同音なものが多く、例えば「しょう」だとSKK_JISYO.Lには174のエントリがあります。この中から「笑」を探すのは四葉のクローバーを探すくらい難しいですよね。でも「笑」の正假名「せう」だと候補は57に絞られます。同様に「渉」も「しょう」ですが正假名の「せふ」で変換すると候補は24に減ります。このように選択性の高い入力を使って変換のときに目grepする手間を少なくするのを目的としたのがこの辞書です。
正假名は1つ1つ覚えないといけないので使いはじめるのはちょっと大変です。そこで現代仮名遣いの候補のアノテーションに正假名の読みも付与しました。辞書には以下のようなエントリが含まれています。
せう /笑/
しょう /笑;セウ/
せふ /渉/
しょう /渉;セフ/
アノテーションをサポートしている辞書なら変換候補内に表示してくれます。正假名を覚えたいときは現代仮名遣いで一旦変換候補を出し、アノテーションを見て覚えてから再度正假名で変換するように習慣づければ覚えられるのではないかと思います。
普通のSKK辞書のように使えます。アノテーションをサポートしていないエンジンで問題が発生する場合はunannotation.awkなどを利用して削除して下さい。
Wiktionaryの漢字のページから生成しているので単一の漢字にのみ対応しています。熟語には対応していません。例えば「高笑」は正假名で「かうせう」ですが「かうせう」では変換できず、「かう」「せう」とそれぞれ変換しないといけません。
将来的には熟語に対応したいと考えていますが、ソースとなる情報源がなく、既存の辞書を泥臭く変換していく作業になりそうなので予定は未定です。
- 辞書はWiktionaryのライセンスに従いCC BY-SA 3.0で提供されます。
- その他のコード類はMITライセンスです。
自分でデータを生成する人のために手順を示す。簡単には以下のコマンドでできる。
$ ./make.sh
make.sh
を使わずに生成する場合は以下の手順を踏む。
Wikimediaプロジェクトのダンプのjawikitonaryの最新版にいく。そこから必要なデータをダウンロードする。必要なデータは以下の2つ。
jawiktionary-*-categorylinks.sql
jawiktionary-*-pages-articles.xml
ダウンロードしたらgzやbz2を解答しておく。
categorylinks.sql
からデータを取り出すためにMySQLを立てる。dockerを使うと早い。
$ docker run --name wiktionary --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=true -e MYSQL_DATABASE=wiktionary mysql
$ docker exec -i wiktionary mysql wiktionary < jawiktionary-*-categorylinks.sql
まあまあの時間がかかる。
sqlite3でできたらよかったが、スキーマの unsigned
に対応していないので無理そうだった。
ここから「カテゴリー:漢字」に属する記事のIDを取得する。 ids.txt
に出力する。
$ docker exec -it wiktionary mysql wiktionary --skip-column-names -Be 'SELECT cl_from FROM categorylinks WHERE cl_to = 0xE6BCA2E5AD97 ORDER BY cl_from' > ids.txt
MySQLはもう不要なので落としておく
$ docker stop wiktionary
cargo run
する。
# 四角号碼辞書
$ cargo run --release --bin shikakugoma ids.txt jawiktionary-*-pages-articles.xml > output.log
# 正假名辞書辞書
$ cargo run --release --bin seikana ids.txt jawiktionary-*-pages-articles.xml > output.log
このデータは正しくソートされていないので skkdic-sort
を使ってソートする
# 四角号碼辞書
$ cat header.txt > SKK_JISYO.shikakugoma
$ cat tmp.shikakugoma | skkdic-sort >> SKK_JISYO.shikakugoma
# 正假名辞書辞書
$ cat header.txt > SKK_JISYO.seikana
$ cat tmp.seikana | skkdic-sort >> SKK_JISYO.seikana
カレントディレクトリに辞書ができる。
$ ls SKK_JISYO.*
SKK_JISYO.seikana SKK_JISYO.shikakugoma
wikitionaryに適切な情報が載ってないものもあるので output.log
にはそれらの情報が出力されている。
$ head output.log
氷: no match
仏: no match
権: no match
県: no match
塩: no match
争: no match
蝉: no match
続: no match
総: no match
鉃: no match
後片付けしておく
$ rm tmp.* ids.txt
- 自動更新
- 正假名の熟語対応