pScrapboxAutoTrans2023-03-25
翻訳したものをこのScrapboxに入れるのかどうか
たまに予期せずつながることはあるけど、嬉しい繋がり方ではない
翻訳したものが即座にこのScrapboxに別ページとして追加されると、似たページが2枚ずつ並ぶことになる
イマイチ
ページに日本語と英語を併記する
この方がマシだがイマイチだと思う
根本的にはページ一覧がカスタマイズできないことが問題
Scrapboxに気軽に書いたのを自動的に機械翻訳して英語版のScrapboxプロジェクトに転記した上で英語アカウントでツイートし、リアクションがあった時に僕に通知が来るようにして社会的トリガーを仕掛けるというのはどうか 英語アカウントでツイートしをしていない
Twitter上でのリアクションはない
ScrapboxのAPIでは逐次的アップデートを実現するの面倒そう
Yes
スモールスタートとして、まずJSONでエクスポートして翻訳してインポートしたらいい
先頭行に(auto-translated from [Japanese http://....])と挿入する?
先頭行に機械的テキストを入れるとカード表示がゴミ屋敷になる 先頭に入れるならアイコン記法
将来的にはGithub Actionで静的ファイルとして吐いてGithub Pagesとかでホストすると良いのではないか
まあ少なくとも僕が死んでnhiroドメインの維持費が支払われなくなって、消滅してから死んだことに気づかれるかもしれないからドメインは分散した方がいいね
2023-03-26
寝て起きる
問題が複雑
日々更新されていくドキュメントをどう翻訳するか
翻訳されたものをどう見せるか
翻訳されたものをどこに置くか
Github Actionで取得するところまではできている
翻訳したデータもおけばいい?
翻訳するまでもなくすでに英語なものがある?
手動で翻訳したコンテンツがあるよな
見積もり
13,115,848文字
¥2,500 per 1 million characters
characterがUnicode characterかbytesか
bytesなら27,493,421
こっちが前回の見積もりに近いね
見積もり7万円弱
年収の1%未満であり、今後の1年で生産性が1%向上するなら1年でペイする、という気持ち
実行
300ページ走らせてみて400円だった
全体実行中
メモ
ベクトル検索が使えるのでリンクの文字列が完全一致でない問題は気にしない
行単位でキャッシュしてる
なのででかいページに1行追加しても1行だけ翻訳
箇条書きなのでインデントを維持して行単位翻訳
インデントと本文を分けてから翻訳してる
なので同じ内容のインデント違いはキャッシュヒットする
ローカルで言語判定かけて日本語でない行は翻訳せずに素通しする
これによってソースコードや画像記法などが翻訳対象でなくなる
誤訳を発見した時、キャッシュを修正する手が使える
ビューのことは何も考えていない
考えてなくもないか
Githubにテキスト形式で置いてるぞ
2023-03-30
割とエラーでこけてて、リトライ付けてなかったのでまだ終わってない
変なクエリーでリトライし続けて無駄にお金を使うリスクがあったから、大丈夫とわかるまではエラーは目視した上で手動リトライしてた
を参考にしてる
においてる
まだGithub Actionでの実行はしてない
@TwitterDev: Today we are launching our new Twitter API access tiers! We’re excited to share more details about our self-serve access. 🧵 いいタイミング!「自分のScrapboxを1日1回英訳した上でGPTに英語で要約ツイートさせる」をやりたいのでやりやすくなった
langdetectはやめた方が良さそう
短文に対しては誤判定が多くて、確率的挙動をするから「一度英語だと判定したけど、今度は日本語だと判定したから訳しました」的なのが発生してる
こういう感じで「#天邪鬼 #悪魔の代弁者って英語だと思う」って言って1行訳し漏らしたりしている
Q: 全文入れたら正しく判定するのでは? A: それはそう、そして日本語の解説がついてるページに置かれた日本語のないソースコードとかも全部翻訳することになるね
日本語領域の文字を一文字でも含んでたら日本語と判定した方がよさげ
https://gyazo.com/a40aa315dd34aa7c9ada756b0bfb545a
今これでページ数的には半分くらい行ってるはずなので、意外と安いな?という感じ
2023/4/1
無事完了した
https://gyazo.com/796feeeb47fc4b9e3ddcbe3627ec60b0
2.3万円。予想よりかなり安いね
バイト数で見積もって7万円のつもりでいたが、どうやらユニコード文字みたいだな
13,115,848文字 / 27,493,421bytes
インデントや改行の除去とキャッシュによる重複文字列の除去がきいて13M文字から9.3M文字に減った
まず0を1にして、それから改善する
翻訳されたものをどこに置くか
→とりあえずGithubにある
→翻訳されたものをどう見せるか
なんで赤いんだろうって思ったけどこれ、拡張子がjsonなのに中身がscrapboxじゃん
Markdownに変換することができればGithub上でも読むことができる
だけどScrapbox的にリンクが繋がるようにするのは骨だと思うね
日々更新されていくドキュメントをどう翻訳するか
Github Actionsで更新できるかトライしよう
手元での時間計測
python main.py 2578.84s user 270.36s system 98% cpu 48:27.16 total
なんでそんなに時間が掛かるんだ?
あ、キャッシュの更新か
python main.py 3.73s user 2.56s system 68% cpu 9.118 total
この一週間の間の更新を再クロール
python main.py 39.36s user 14.77s system 10% cpu 8:49.13 total
再翻訳
total 28492485 no_cache 156769 ratio 0.005502117488172758
python main.py 48.04s user 7.02s system 3% cpu 24:02.17 total
翻訳APIの待ち時間がほとんど
Github Actionsで実行
1時間経っても終わってない
どこが遅いのかもっと詳細に調べたいな
ページの取得と翻訳を一つのスクリプトにしてしまったからどっちが問題なのかとかわからない
取得が遅い場合
全部取ってるからそりゃそうだ
最初に候補を出す段階で更新日時はわかっているので、更新されてるものだけ取れば良い
自分が管理権限を持ってるものに関してはexport APIでもよい
翻訳が遅い場合
APIのレスポンスを直列で待ってるからだな
6時間掛かってキャンセルされてる
https://gyazo.com/7da36b796fac0b2cdaba26c2e1fe6ff1
ログを見た
クロールは完了して、翻訳をしてる最中で止まってる
9%|▉ | 1368/14461 [00:00<00:07, 1831.53it/s]
キャッシュが効いてなかったらもっと遅いと思うのだが...
Error: The operation was canceled.
2023/4/5
キャッシュが効いてない可能性を疑ったがそんなことはなかった
状況を確認するためにデバッグ出力をいろいろ変更したのだがなぜかあっさり完了した。は?
一晩寝て気づいたんだが、もしかしてプログレス表示がイレギュラーなターミナル操作をすることと、Github ActionsのログをキャプチャしてWeb上でリアルタイムに見せるための仕組みの相性が悪かったのかも?
2023/4/6
まずはScrapboxに自動インポートする
活動ダイジェストを自動Tweetしたい
まずは手軽なところから「Tweet内容をファイルに出力」「人間がそれを見てTweet」
Scrapbox機械翻訳結果を見て、初っ端から「Yasukazu Nishio」と訳されてるのを見てガッカリしている
昼休みにChatGPT Pluginが来てることに気づいた
翻訳を改善する話は吹き飛んだ
ということをあとでメモしておかないと「なんでやめたんだっけ?」になる