0

次のような文字列があります (Google Transliterate REST 呼び出しで生成され、2 つの言語に音訳されます):

「この世界は美しく、थिसथिसवववです。

現在、Google Transliterate REST 呼び出しでは一度に5つの単語が許可されるため、ループしてリストに追加し、文字列を連結する必要がありました。そのため、(各言語の) 各チャンクが5語であることがわかります。単語の総数は7単語なので、最初の5 ( This world is beautiful and) は残りの2 ( amazingly mysterious) の前にあります。

次のような結果が得られるように、文を最も効率的に解析するにはどうすればよいですか。

この世界は美しく、驚くほど神秘的ですथिसववववववथिसअमज़िनअमज़िनअमज़िनअमज़िनですअमज़िनअमज़िनअमज़िनです。

文の長さとそれを変換できる言語の数は動的になる可能性があるため、各言語のリストを使用して機能し、後で連結できますか?

私は各単語を一度に 1 つずつ音訳するアプローチを使用しました。これはうまく機能しますが、API の呼び出し数が増えるため速度が遅すぎます。

そのようなシナリオの効率的な (そして動的な) 実装を手伝ってくれる人はいますか? 本当にありがとう!

4

4 に答える 4

1

言語ごとに1つのリストが進むべき道です。

于 2012-08-31T07:41:38.330 に答える
0

異なる言語で異なる文字のASCIIコードを意味する場合は、ここでこの回答を使用できます。

正規表現スペイン語とアラビア語の単語

于 2012-08-31T07:43:08.990 に答える
0

私はワークアウトを試みました。あなたの質問を誤解している場合は修正してください

string statement = "This world is beautiful and थिस वर्ल्ड इस बेऔतिफुल एंड থিস বর্ল্ড ইস বিয়াউতিফুল আন্দ amazingly mysterious अमज़िन्ग्ली म्य्स्तेरिऔस আমাজিন্গ্লি ম্য্স্তেরীয়ুস ";
            string otherLangStmt = statement;

            MatchCollection matchCollection =   Regex.Matches(statement, "([a-zA-Z]+)");
            string result = "";
            foreach (Match match in matchCollection)
            {
                if (match.Groups.Count > 0)
                {
                    result += match.Groups[0].Value + " ";
                    otherLangStmt = otherLangStmt.Replace(match.Groups[0].Value, string.Empty);
                }                
            }
            otherLangStmt = Regex.Replace(otherLangStmt.Trim(), "[\\s]", " ");

            Console.WriteLine(result);
            Console.WriteLine(otherLangStmt);
于 2012-08-31T11:01:42.443 に答える
0

Google 翻訳の API の料金を支払うと、長さ制限がリクエストごとに最大 5,000 文字になります https://developers.google.com/translate/v2/faq

また、ダニエルが言ったように、言語ごとにテキストをグループ化する必要があります

于 2012-08-31T07:45:16.633 に答える