Microsoft サービスの Translator プラグインを使用しています。投稿が一定のサイズを超えると、以下のエラーで翻訳できません。
この投稿は翻訳するには長すぎます。
この問題を回避するため、段落ごとの翻訳機能を実装していただけないでしょうか。
Microsoft サービスの Translator プラグインを使用しています。投稿が一定のサイズを超えると、以下のエラーで翻訳できません。
この投稿は翻訳するには長すぎます。
この問題を回避するため、段落ごとの翻訳機能を実装していただけないでしょうか。
それは Google 翻訳の一般的な仕様で、単語数の制限はおそらく 500 語程度だと考えられます。
もし頻繁にそれより長いテキストに遭遇する場合は、以下のいくつかの選択肢があります。
どの方法が機能したか教えていただくのを忘れないでください。
Microsoft API を使用しており、Google ではありません。
Microsoft には、1 リクエストあたり 10,000 文字の制限があるようです:Service limits - Translator - Foundry Tools | Microsoft Learn
段落(“\r\n\r\n” または
)ごとに投稿を分割するのが最も簡単だと思われますが、各段落が 10,000 文字を超えないと仮定してよろしいでしょうか?
Microsoft 翻訳を使ったことがないので、その点ではあなたの方が進んでいますね。ただし、理論的には手法は同じだろうと思います。
パラグラフ区切りを解析するというアイデアは気に入っていますが、すべてのドキュメントが CR/LF の行末記号を使っているとは限りません。'nix は LF 文字のみ、Mac は CR 文字のみ、Windows は両方を使います。他のドキュメントでは、行末記号として null バイトが使われることもあります。
Unicode には独自の課題があります。すべての文字が 2 バイト長になるためです。
考えられる解決策:最初の 1〜2 文の行末記号を確認し、その値を保存します。その後、ドキュメントを解析する前にすべての行末記号を「\n」に変換します。ドキュメントの処理が完了したら、自動的に正しい行末記号に戻すことができます。
ある手法としては、前方にスキャンして 10,000 語に達するまで進み、その後、パラグラフ区切りを探して後方にスキャンします。現在のブロックの先頭にヘッダーポインターを置き、前方にスキャンして 10,000 語の前にある最後のパラグラフ区切りを見つけたら、そこにテールポインターを配置します。そのブロックを切り取り、翻訳し、結果ドキュメントに移動させ、ヘッダーポインターをテールポインターの位置に移動させて続けます。
==============================
余談ですが、翻訳ソフトウェアはひどいものになることがあります。なぜなら、翻訳は文脈に強く依存し、スラングや専門用語が含まれることが多いためです。同様に、特定の業界や技能に固有の技術用語や単語も、多くの場合、翻訳すべきではないにもかかわらず、ひどく壊されてしまいます。法律、医療、工学/技術文書は典型的な例です。
複雑な医療文書(ある人の脳手術の手術記録)を、Google と Yandex の 2 つの翻訳エンジンに通してロシア語に翻訳しようと試みました。両方の翻訳の結果は、読みやすい文書というよりは、ひどいラザニアのようでした!
@jharris1993 さん、私がその機能を実装することを提案されているのだと思います。残念ながら、私は Ruby の経験がなく、経験者であればかかる時間よりもはるかに長くかかってしまいます。
確かに、無理やり実装することはできますが、マージされることはないでしょう。
私のフォーラムでは、最もリクエストされている翻訳は、技術的な投稿のロシア語から英語への翻訳です。Microsoft はこの分野で非常に良い仕事をしています。
すてきなビーンイです!
それはどのフォーラムでしょうか?もし英語からロシア語への翻訳が可能なら、次回の長くて複雑なドキュメントをそこに送ってみようと思います!
この翻訳は discourse-translator プラグインによって行われています。私はこのトピックをプラグインカテゴリの下に作成したつもりでしたが、カテゴリ未設定のまま残ってしまいました。