Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JSON を原本として各辞書を生成する #55

Open
wants to merge 17 commits into
base: master
Choose a base branch
from

Conversation

tamo
Copy link
Contributor

@tamo tamo commented Aug 18, 2024

#53 (comment)

現状では辞書を更新しようとすると

  1. GitHub のウェブ UI から見えない EUC-JP の辞書を編集して
  2. GitHub からも VSCode からも見えない ISO-2022-JP の ChangeLog に真鵺道で変更を書いて
  3. プルリクする
  4. そしてそれを誰かが json に反映する (けど何にも使われていない)

という手順です。

これを、JSON の編集で完結させたいです。

  1. GitHub から確認して JSON を編集して
  2. UTF-8 の ChangeLog に script/manued.sh の結果から適当にコピペして
  3. プルリクする
  4. そして誰かが (定期的に?) make した成果物を gzip で配布する

個人的には 2 も不要 (ハードルを上げすぎる) だと思っているのですが、
それはまた別の話ということで。

この PR で変更されてしまう点は以下です。

  • SKK-JISYO.fullname が UTF-8 になる
  • そのため SKK-JISYO.total 系も UTF-8 になる (L+ は fullname が入っていないので大丈夫)
  • ChangeLog が UTF-8 になる
  • 配布のための make 作業に deno が必要になる
  • 各辞書のヘッダが meta/*.yaml から作成されるためほんの少し変わる

作業中にいろいろ直したい所が見つかったような気もしますが
できるだけ変更が出ない方向でやっています。(これでも!)
どうぞよろしくお願いします。

tamo added 17 commits August 14, 2024 17:05
schema に annotation がないから入れた (0.1.0)
txt2json によれば annotation は複数存在できるようだったので array にしておいた (複数のエントリは見たことないけど)

index.d.ts に schema と同じような TS 型を書いて script 内で共用している
txt2json で txt 辞書の冒頭部分は、読むだけ読んで捨てている (yaml から取り出すから)

json から txt に戻してみたら yaml が変であることに気づいたので yaml も調整
それなりに復元されることを確認した

txt2json では
エントリ一個につき json ファイルで何行も使うと diff とか面倒だと思うので
行数を減らすために少し処理している

txt2json と json2txt どちらも -c で charset あるいは coding を指定する

TODO: fullname 辞書のためだけの JISX0213 対応が汚いので直す

あと Makefile はまだ試していない (Windows で作業し始めちゃったので push してから試す)
iconv-lite では EUC-JISX2013 が使えないのでどうしようかと思ったけど
眺めてたらそもそも JISX2013 でも扱えてないみたいなので
それなら UTF-8 にしておきましょう


あ、ChangeLog が ISO-2022-JP なので開けない……

-あもうこうへい /天羽浩平;フルネーム,日本サンマイクロシステムズ゙会長/
+あもうこうへい /天羽浩平;フルネーム,日本サンマイクロシステムズ会長/
(なにこれ?)

-おくむらやすのり /奥村●(米へん+攵)軌;フルネーム,名古屋弁護士会会長/
+おくむらやすのり /奥村敉軌;<UTF-8>フルネーム,名古屋弁護士会会長/

-くぬぎりょうきち /●(工+刀)刀良吉;フルネーム,ソニー社長/
+くぬぎりょうきち /㓛刀良吉;<UTF-8>フルネーム,ソニー社長/

-くりはらろすい /栗原●(草かんむり+慮)水;フルネーム,書家/
+くりはらろすい /栗原蘆水;<UTF-8>フルネーム,書家/
(いや、「慮」じゃないし)

-このえやすこ /近衛●(うかんむり+必+用)子;フルネーム,長野五輪選手村名誉村長/
+このえやすこ /近衞甯子;<UTF-8>フルネーム,長野五輪選手村名誉村長/
(よく見ると「衛」もすごい)

-すがひでみ /●(糸へん+圭)秀実;フルネーム,文芸評論家/
+すがひでみ /絓秀実;<UTF-8>フルネーム,文芸評論家/

-ぬのめちょうふう /布目潮●(さんずい+風);フルネーム,『中国茶・・・』/
+ぬのめちょうふう /布目潮渢;<UTF-8>フルネーム,『中国茶・・・』/
気づいちゃったので

-なかむらかつお /中村嘉嵂雄;<JISX0213>フルネーム,歌舞伎俳優/
+なかむらかつお /中村嘉葎雄;<JISX0213>フルネーム,歌舞伎俳優/
これをしないと make が通らないみたい
skk-dev#51
で話題になったあと放置されていたのかな?

http://ftp.edrdg.org/pub/Nihongo/00INDEX.html
によると、
> WARNING!! After nearly 30 years of operation the Monash ftp server has been closed down. This edrdg.org server will continue to operate, however addional files will be rarely be added. Dictionary files such as JMdict, Kanjidic, etc. will still be updated daily. Make sure you note the address:
>
>    (HTTP) http://ftp.edrdg.org/pub/Nihongo/00INDEX.html
>    (FTP) ftp://ftp.edrdg.org/pub/Nihongo/00INDEX.html
>    rsync ftp.edrdg.org::nihongo/filname filename

とのこと。Google で上位に出る usf.edu はただのコピーなのか、そういう情報は書いてない
http://ftp.usf.edu/pub/ftp.monash.edu.au/pub/nihongo/

ていうか、u の付かない euc 版の edict2 もあるのに
どうして edict2u を使っているのかしら
コピペミスしまくってた
どうして json と別ファイルにしているのか謎だが
array じゃなくて object にした
送りありエントリは最後がアルファベットになるよう指定した
(L 辞書の「へんしょう」でエラーが出るのは辞書の間違いか?)

txt2json で ajv を使って schema validation するようにした
json2txt で -c の euc 判定を緩めた
skk-dev/skktools#27
から annotation-filter.rb を持ってきて script に置いた
emoji.kana は emoji.kanji を unannotated と突合してるので
txt2json の yaml 実装を別のにしたら meta の変な調整が不要になって嬉しい
いつか github actions でも使えるかも?
辞書は EUC-JP, EUC-JISX0213, UTF-8 とあるので
ChangeLog はできるだけそれらをすべて表現できないと困るわけで
だったら UTF-8 にしておくのが最善だと思います
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant