IBM Watson Text Translator示例语法错误。如何自动检测语言

时间:2017-02-24 10:27:28

标签: java ibm-watson language-translation

根据Translator API reference,识别代码下方的语言使用情况:

LanguageTranslator service = new LanguageTranslator();
service.setUsernameAndPassword("{username}","{password}");

List <IdentifiedLanguage> langs = service.identify("this is a test");
System.out.println(langs);

但是正如人们可以在附带的屏幕截图中看到的那样导致合成错误。我已经纠正了这一点,只需改变一行:

ServiceCall<List<IdentifiedLanguage>> langs = service.identify("this is a test");

如果可以更新文档,那就太棒了。 错误消失但现在该怎么处理这个ServiceCall?如何获得语言?

任何给出所有模型ID的链接都会受到赞赏,因为这有助于API的初始评估。另外,我在哪里可以找到目前支持的语言?

enter image description here

3 个答案:

答案 0 :(得分:1)

service.identify("...")来电需要.execute(),而不是其他类型:

List<IdentifiedLanguage> langs = service.identify("this is a test").execute();

然后返回预期的IdentifiedLanguages列表。这是一个完整的示例,记录列表,然后从列表中选择最高置信度的语言并记录下来:

package com.watson.example;

import java.util.Collections;
import com.ibm.watson.developer_cloud.language_translator.v2.LanguageTranslator;
import com.ibm.watson.developer_cloud.language_translator.v2.model.IdentifiedLanguage;

import java.util.Comparator;
import java.util.List;

public class ItentifyLanguage {
    public ItentifyLanguage() {
        LanguageTranslator service = new LanguageTranslator();
        service.setUsernameAndPassword("{username}","{password}");

        // identify returns a list of potential languages with confidence scores
        List<IdentifiedLanguage> langs = service.identify("this is a test").execute();
        System.out.println("language confidence scores:");
        System.out.println(langs);

        // this narrows the list down to a single language
        IdentifiedLanguage lang = Collections.max(langs, new Comparator<IdentifiedLanguage>() {
            public int compare (IdentifiedLanguage a, IdentifiedLanguage b) {
                return a.getConfidence().compareTo(b.getConfidence());
            }
        });

        System.out.println("Language " + lang.getLanguage() + " has the highest confidence score at " + lang.getConfidence());
    }


    public static void main(String[] args) {
        new ItentifyLanguage();
    }
}

答案 1 :(得分:1)

  1. 简单地评论该行,因为我没有看到在方法中的任何地方使用的局部变量“ langs ”。

  2. 如果你需要它调用service.identify上的执行方法(“这是一个测试”),然后将它初始化为变量“ langs ”,如下所示:< / p>

    列出langs = service.identify(“这是一个测试”)。execute();

答案 2 :(得分:0)