将 Azure 翻译限制增加到每次调用超过 10000 个字符

问题描述

我想通过标准订阅自定义订阅增加 Azure 中文本翻译的 10,000 个字符限制,但我找不到方法。如果不可能,请提出任何解决方法

目前我进行多次调用以确保不超过限制,但这变得复杂且需要更多时间,我正在寻找一种更有效的方法

解决方法

目前,Azure 翻译器的限制为每个请求 10,000 个字符,并且不能超过 Official Documentation

您可以将源文本分解为 10,000 个字符的块,然后将它们并行发送到 Azure 翻译器。您如何执行此操作取决于您使用的编程语言。例如,您将在 Go 中执行类似的操作。

首先,按照 this example

将源文本分成每批 10,000 个字符的批次

然后,用这样的方式并行翻译每个块。请注意,callMicrosoftTranslation 是此处用于实际调用 Azure Translator API 的代码的存根。

microsoftTranslationResponses := make(map[string]*microsoft.TranslationResponse)
g,_ := errgroup.WithContext(ctx)
for chunkKey,chunkValue := range chunkMap {
    // bind to each iteration to work with closures
    // https://golang.org/doc/faq#closures_and_goroutines
    chunkKey := chunkKey
    chunkValue := chunkValue

    g.Go(func() error {
        translationResponse,err := callMicrosoftTranslation(chunkValue)
        if err != nil {
            return err
        }

        mutex.Lock()
        microsoftTranslationResponses[chunkKey] = translationEngineResponse
        mutex.Unlock()

        return nil
    })
}
if err := g.Wait(); err != nil {
    return nil,err
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...