pScrapboxAutoTrans2023-04-18
3週間以内にまともにする
まともとは
自己紹介ページでYasukazu Nishioと訳されてるのが微妙
2023/4/6
まずはScrapboxに自動インポートする
活動ダイジェストを自動Tweetしたい
まずは手軽なところから「Tweet内容をファイルに出力」「人間がそれを見てTweet」
4/7
Scrapbox機械翻訳結果を見て、初っ端から「Yasukazu Nishio」と訳されてるのを見てガッカリしている
2023-04-20
自動インポートがうまくいかなくてほったらかしの件
ClientResponseError: 503, message='Service Unavailable', url=URL('https://scrapbox.io/api/page-data/import/nishio-en.json')
詳細不明だからどうしようかなと
今回「JSONが大きすぎるのが問題か?」となって100件に絞ってみたが同じエラーだった
code::
% deno run --allow-net=scrapbox.io --allow-read=./ --allow-env import_to_scrapbox.ts
A new release of Deno is available: 1.32.2 → 1.32.4 Run deno upgrade to install it.
Importing 14726 pages to "/nishio-en"...
error: Uncaught (in promise) MulterError when importing pages: File too large
const error = new Error();
^
at file:///Users/nishio/etude-github-actions/import_to_scrapbox.ts:31:19
100件に絞ってみたらいけた
code::
% deno run --allow-net=scrapbox.io --allow-read=./ --allow-env import_to_scrapbox.ts
A new release of Deno is available: 1.32.2 → 1.32.5 Run deno upgrade to install it.
Importing 100 pages to "/nishio-en"...
import success! - 100 pages
前回更新時のデータを取っておいて差分だけインポートするようにするか…
✅
この問題自己紹介ページでYasukazu Nishioと訳されてるのが微妙
DeepLの用語集に入れるという手もある
今後のことを考えるとそうするのが良い
しかしすでに翻訳してあるものの中にある誤訳は「すでに翻訳済みだから翻訳しないで良いな」と判定されるため、それでは更新されない
なのでどっちみち、誤訳を含むキャッシュを修正もしくは削除する必要がある
文字列検索でマッチしたものを置換で修正した
たぶん大部分のケースでこれでいいんじゃないかな
✅
英語話者に「これが私のScrapboxです」と示しても恥ずかしくないレベルまで持ち上げる
それが済んだら次はベクトル検索とGPT-4との融合だ
僕のScrapboxのベクトル検索を誰でも利用可能にするのは優先度はそれほど高くないな?
以前Scrapboxの自動翻訳を考えてた時にはまだプロジェクト間リンクがなかった?
英語記事と日本語記事をどうやって対応づけるかなと思ったが、普通に自動翻訳後のページに「元ページはここ」とリンクを追加すればいいだけじゃん?となった
✅
日本語プロジェクトにリンクを貼る時にtitleの値を使っているのだが、そうすると空白などを含む時にリンクが繋がらないので正しくエスケープすることが必要
やったー、できたー
https://gyazo.com/a21ccd0e544bc2f7c9c609a3dfe439c9
>batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.
はー、1GBの枠を使い切ってる
とりあえず月額5ドル課金したら50GBになるようだから課金した
https://gyazo.com/56893388970db00c70dfd786616fe94e
ブログと違ってメインの[読者は自分]ですがUnlike a blog, the main [reader is you].になってる
page titleの方はreader is selfになってんな...
2023-04-21
https://gyazo.com/73663a077af45b4c9f3a8e1907b48803
自動実行成功してた
2023-04-21
1. 先にタイトルだけ全て英訳して、日英対応テーブルを作る
2. 本文のリンクを機械的に英語に置き換える
3. リンクがすでに英語に置き換わっている文章をChatGPTに投げて翻訳
DeepLでもこれがうまくいくかは不明
おおー、参考になります!>失敗ケースを観測していない/villagepump/nishio.icon
A: len(cache)は22万ある
これはdictなのでO(1)
タイトルだけでなくすべての行を含んでいるがO(1)なので気にしないことにする
B: リンク記法を抽出する
code:py
これはコード記法の中身にもヒットしてしまうが気にしないことにする
BをAから探し、訳があるなら置換する
あー、「読者は自分」はそもそもページタイトルですらないぞ
https://gyazo.com/ac0ae1b0d459104876a5d618cb9c6911
このパターンだ
api/pages/nishio/search/titlesを使ってリンクを集めた
25000件ある
とりあえず翻訳を走らせた
2023-04-22
code::
25321
100%|████████████████████████████████████████████████████████████████████████████████████████| 25321/25321 4:37:38<00:00, 1.52it/s total 565897 no_cache 277634 ratio 0.4906087150135095
translate: 16659.303921374958
code::
うまく訳せるかどうかは運
とりあえず今日明日は忙しいので、これで走らせておく
2023/4/22
第三の案
行からリンク記法を取り除いてプレーンテキストとして翻訳し、その結果に「リンクの中身を翻訳したもの」が含まれるならそこをリンクに変換、含まれないなら末尾につける
2023-04-23
code::
%run translate.py
cache length: 229791
100%|████████████████████████████████████████████████████████████████████████████████████████| 14760/14760 7:17:20<00:00, 1.78s/it total 29581111 no_cache 2492102 ratio 0.08424639628984862
translate: 26244.572622375097
約8パーセントの再翻訳で済んだようだ
よくなったかどうか定量的に判断したいなぁ
インポートに失敗した
https://gyazo.com/c8e644535d2db56c52756cdc39430dd9
やり直したらいけた
謎
2023-04-27
https://gyazo.com/1292dbb0f3f52d08894785c58d8b4460
works well