В коде JAVA, не работающем в среде Google, как можно использовать обученную модель перевода? - PullRequest
0 голосов
/ 13 июня 2019

Кажется, мне не хватает чего-то очевидного. Мы уже давно используем API перевода Google, и теперь мы хотим «обновить» пользовательскую обученную модель вместо стандартной по умолчанию.

Мы загрузили наши тексты, обучили их, и теперь у нас есть модель. На вкладке «Предсказание» в консоли Google это прекрасно работает. итак, что теперь?

Это код, который мы используем сегодня:

        translate = TranslateOptions
            .newBuilder()
            .setCredentials(ServiceAccountCredentials.fromStream(googleCredentials))
            .build()
            .getService();

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

где модель "nmt" (или "base") ... могу ли я просто добавить свой недавно обученный код модели, который был создан после окончания обучения? Когда я пытаюсь, он возвращается с ошибкой 400 и сообщением:

   "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid Value",
    "reason" : "invalid"
  } ],
  "message" : "Invalid Value"

Попробовать другой код, как описано здесь: https://cloud.google.com/translate/docs/quickstart-client-libraries-v3 выдает другие ошибки, такие как: «INFO: не удалось определить, работаем ли мы на Google Compute Engine».

Куда я иду не так?

1 Ответ

0 голосов
/ 27 июня 2019

здесь мы идем ... для следующего человека, желающего сделать это:

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-automl</artifactId>
    <version>0.97.0-beta</version>
</dependency>

код:

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());

}
...