0

我有一个类似的字符串(通过 Google Transliterate REST 调用生成,并音译成2种语言):

“这个世界是美丽的,♥♥♥♥एंडথিসইসবিয়াউতিফুলআন্দ令人惊讶的神秘अमज़िन्ग्लीअमज़िन्ग्लीम्य्स्तेरिऔसম্য্স্তেরীয়ুস”

现在 Google Transliterate REST 调用一次允许五个单词,所以我必须循环,将其添加到列表中,然后连接字符串。这就是为什么我们看到(每种语言的)每个 CHUNK 都是5 个单词。单词总数为7 个单词,因此前5 ( This world is beautiful and) 位于前2 ( amazingly mysterious) 后。

我如何最有效地解析句子,以便得到如下内容:

这个世界是美丽而令人惊叹的神秘थिसथिसवर्ल्डइसबेऔतिफुलएंडअमज़िन्ग्लीअमज़िन्ग्लीথিসবর্ল্ডইসবিয়াউতিফুলআন্দআমাজিন্গ্লিআমাজিন্গ্লি

由于句子的长度和可以转换成的语言数量可以是动态的,可能使用每种语言的列表可以工作,然后再连接起来?

我使用了一种方法,一次一个地音译每个单词,效果很好,但是太慢了,因为它增加了对 API 的调用次数。

有人可以帮助我有效(和动态)实施这种情况吗?非常感谢!

4

4 回答 4

1

每种语言的一个列表是要走的路。

于 2012-08-31T07:41:38.330 回答
0

如果你指的是不同语言的不同字符 ASCII 码,你可以在这里使用这个答案:

正则表达式西班牙语和阿拉伯语单词

于 2012-08-31T07:43:08.990 回答
0

为谷歌翻译的 API 付费,然后每个请求的长度限制最多为 5,000 个字符https://developers.google.com/translate/v2/faq

另外,是的,正如丹尼尔所说 - 按语言对文本进行分组是必要的

于 2012-08-31T07:45:16.633 回答
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 回答