3

我正在使用 Watson NLU 并尝试对某些文本进行情感分析。问题是某些文本太小而无法检测到它是什么语言(例如:优秀的服务)。我有没有办法指定如果语言检测不可行,它应该考虑它是英语?

我的 NLU (Java) 的片段是这样的:

SentimentOptions sentiment = new SentimentOptions.Builder()
    .targets(targets)
    .document(true)
    .build();


Features features = new Features.Builder()
    .sentiment(sentiment)
    .build();


AnalyzeOptions parameters = new AnalyzeOptions.Builder()
    .text(text)
    .features(features)
    .build();

AnalysisResults response = service
    .analyze(parameters)
    .execute();

String mySentiment = response.getSentiment().getDocument().getLabel();
4

1 回答 1

6

根据官方 API 参考文档,您需要在请求中指定language参数。POST

在Watson Developer Cloud - Github - Java SDK上查看有关这些参数的更多信息。

API参考说明-NLU:

  • 语言(字符串):ISO 639-1 代码,指示用于分析的语言。此代码覆盖服务执行的自动语言检测。有效代码为 ar(阿拉伯语)、en(英语)、fr(法语)、de(德语)、it(意大利语)、pt(葡萄牙语)、ru(俄语)、es(西班牙语)和 sv(瑞典语)。有关每种语言支持哪些功能的详细信息,请参阅此

它是如何工作的示例:

parameters.json 文件示例:

{
  "text": "Excelent service",
  "features": {
    "semantic_roles": {}
  },
  "language": "en"
}

卷曲示例:

curl -X POST \
-H "Content-Type: application/json" \
-u "{username}":"{password}" \
-d @parameters.json \
"https://gateway.watsonplatform.net/natural-language-understanding/api/v1/analyze?version=2017-02-27"

可能是你的例子(你没有指定你的编程语言,所以):

AnalyzeOptions parameters = new AnalyzeOptions.Builder()
    .text(text)
    .features(features)
    .language('en')
    .build();
于 2018-01-02T18:53:58.783 回答