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

更新作業の省エネ化 #58

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

更新作業の省エネ化 #58

wants to merge 48 commits into from

Conversation

tamo
Copy link
Contributor

@tamo tamo commented Aug 28, 2024

#54#55 の上に
ivd, emoji, edict2 の更新方法を明示して
GitHub Actions で on push で ChangeLog 作成や
make 結果の反映をしたりして、
基本的には JSON だけ更新すればいいような感じにしてみました

このぐらい環境が整備されれば
この半分死んだような状態のプロジェクトも
気軽に辞書を更新していけるようになるのではないかと思います

このまま取り入れるには変更が大きすぎるとは思いますが
こういう未来があるんだということをお伝えしたくてプルリクしています

現在 (こうした変更なしでは)

  • emoji 辞書はほとんど使いものにならないし
  • committers.md に書いてある COPYING ファイルが存在しなくて GitHub 上ではまるで Unicode ライセンスのプロジェクトのように見えるままだし
  • issues や pull requests も放置され気味だし
  • JSON があっても何に使ってるか分からないし annotation の互換性がないままだし

という状態なので、少しずつでも前進していってほしいと思っています

期待しています

ほかに、私の興味がなくて放置しているものとしては

  • wrong チェックをちゃんとする
  • wrong などメタ的な辞書は UTF-8 にしないと扱えないことが増えてきそう

といったことがあります

まだ整備する (か、いっそ廃止して手順をもっと簡素化する) 余地があると思います

私としては、辞書に含めてほしいものがたくさんあるので
今後はそちらをプルリクしたいと思っています

tamo added 30 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>フルネーム,歌舞伎俳優/
https://www.post.japanpost.jp/zipcode/dl/utf-zip.html

事業所は sjis のままみたいなので変更なし
zipcode.ts に --geo オプションを付けると geo 更新用のデータを吐くので geo に混ぜると良いかも
configure/Makefile はまだ試してない
動くかどうかは知らない
これをしないと 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 にしておくのが最善だと思います
L と geo に入っていない地名がたくさんある
新しくできたビルとか改名したところとか
そして let を減らした
words と office も deno で生成
test は sh からの grep で十分

ついでにビルなどの geo 処理を改善
京都の通りの名前も少し回収
SKK-JISYO.geo.add に出る
(L と geo が euc-jp であることを前提にして nkf している)
じょうより、じょうれん 等の地名から「じょう」が消えていた
本当はこれ git に入れない方がいいと思うけど
committers.md では geo 関連
Makefile では total 関連について
tamo added 18 commits August 23, 2024 14:23
EUC-JP も扱えるようにしたり
名前とかも出したり
コミット済みのものを比較したり
committers.md に
edict2 はプルリクとかをしないことを反映
さすがに「筋肉」を「すじにく」、「傘」を「さん」というようでは
使いものにならないので、L.unannotated 頼りの完全自動生成ではなく、
手動で設定できるようにした
(SKK-JISYO.emoji.predef)

そして emoji.el がめちゃくちゃ遅いので、deno にやらせた
(emoji.ts)

手順については committers.md に書いたが、つまり

en.xml の場合は直接
```
xml --(emoji.ts -x en.xml)-> text
```

それに対して ja.xml の場合は
```
xml --(emoji.ts -x ja.xml -p predef -o predef [-i Ldic])-> predef
predef --(emoji.ts -x ja.xml -p predef -o emoji)-> text
```

という二段階を経る

なお en.xml は `“not free of charge”` を `notfreeofcharge` にしている
もし `not_free_of_charge` などにしたければ emoji.ts の※を変更する

ついでに txt2json.ts も変更し、
失敗したとき失敗箇所が分かりやすいようにしたり、
annotation も delisp するようにしたりした
committers.md に「COPYING をご覧下さい」とあるが存在しないので
git-actions[bot] として git push する

edict2 は自動 ChangeLog 対象外にする
(頻繁に大規模な変更があるようなのであまり意味がない)

git diff -I は --name-only で使えないので
sed で変更ファイル名を取得

manued.sh
デフォルトでチェックするファイルは edict2 と ivd 以外
git -I はバージョン 2.30 必須
skktools の edict2 生成は
著作権表示の年が 2017 のまま変えられない

しかも
「(self-)なんちゃら」のハイフンを消したり
「NRZ(C)」の括弧を処理しなかったり
無駄にわざとバグらせている
(どちらも特別処理は不要)

「;; okuri-ari entries.」が entry になっていることすら
気付かれず放置されている
(skkdic-expr2 をかけるから問題ないとはいえ……)
skktools のビルドが flaky なので
simplify というブランチ名の割に色々と変更してしまったが
ここまでやって、やっとプルリクのハードルが下がったと思う

これなら気軽に「これ直して」→「はいよ」という感じで更新できそう
どこかで一個 commit が抜けてたみたい
grep を /dev/null に捨てたり
git diff に正しく -I を渡したりするよう訂正
script/manued-helper.ts で
エントリの削除と追加を正しく検出し、
変更だけを抽出して docdiff する
helper はエントリ後半が切れていたのを修正
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