首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不运行于Google环境的JAVA代码中,如何使用经过训练的翻译模型?

在不运行于Google环境的JAVA代码中,如何使用经过训练的翻译模型?
EN

Stack Overflow用户
提问于 2019-06-14 04:35:36
回答 1查看 109关注 0票数 0

我想,我似乎遗漏了一些明显的东西。我们使用谷歌翻译API已经有一段时间了,现在我们想“升级”到一个自定义的训练模型,而不是默认的nmt。

我们已经上传了文本,对其进行了训练,现在有了一个模型。在Google控制台的predict选项卡中,它工作得很好。那么,现在怎么办?

这是我们今天使用的代码:

代码语言:javascript
运行
复制
        translate = TranslateOptions
            .newBuilder()
            .setCredentials(ServiceAccountCredentials.fromStream(googleCredentials))
            .build()
            .getService();

                translate.translate(
                    text,
                    TranslateOption.sourceLanguage(fromLng),
                    TranslateOption.targetLanguage(toLng),
                    TranslateOption.model(model));

其中model是"nmt“(或"base")...我应该只放入训练结束时创建的新训练的模型代码吗?当我尝试时,它返回了一个400错误和一条消息:

代码语言:javascript
运行
复制
   "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid Value",
    "reason" : "invalid"
  } ],
  "message" : "Invalid Value"

尝试此处记录的不同代码:https://cloud.google.com/translate/docs/quickstart-client-libraries-v3会产生其他错误,如:“信息:无法检测我们是否在Google Compute Engine上运行。”

我哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 23:15:03

开始吧..。对于下一个想要这样做的人:

代码语言:javascript
运行
复制
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-automl</artifactId>
    <version>0.97.0-beta</version>
</dependency>

代码:

代码语言:javascript
运行
复制
private PredictionServiceClient predictionClient; 
private ModelName modelName; 

public GoogleTranslationServiceTrained(final byte[] googleCredentials) throws IOException {
    super();

    PredictionServiceSettings settings = PredictionServiceSettings
            .newBuilder()
            .setCredentialsProvider(new CredentialsProvider() {
                @Override
                public Credentials getCredentials() throws IOException {
                    return ServiceAccountCredentials.fromStream(new ByteArrayInputStream(googleCredentials));
                }
            }).build();

    // Instantiate client for prediction service.
    predictionClient = PredictionServiceClient.create(settings);

    // Get the full path of the model.
    modelName = ModelName.of("xxxx", "us-central1", "yyy");
}

public String getRemoteTranslate(String text) {
    TextSnippet textSnippet = TextSnippet.newBuilder().setContent(text).build();

    // Set the payload by giving the content of the file.
    ExamplePayload payload = ExamplePayload.newBuilder().setTextSnippet(textSnippet).build();

    // Additional parameters that can be provided for prediction
    Map<String, String> params = new HashMap<>();

    PredictResponse response = predictionClient.predict(modelName, payload, params);
    TextSnippet translatedContent = response.getPayload(0).getTranslation().getTranslatedContent();

    return StringEscapeUtils.unescapeHtml4(translatedContent.getContent());

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56588235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档