我正在Scala中尝试使用Google云语言客户端。这是代码:
val language = LanguageServiceClient.create()
val doc = Document.newBuilder().setContent(text).setType(Type.PLAIN_TEXT).build()
val request = AnalyzeEntitiesRequest.newBuilder().setDocument(doc).setEncodingType(EncodingType.UTF16).build()
val response = language.analyzeEntities(request)
// Print the response
response.getEntitiesList.asScala.toList.foreach { entity=>
printf("Entity: %s", entity.getName)
printf("Salience: %.3f\n", entity.getSalience)
println("Metadata: ")
entity.getMetadataMap.entrySet().asScala.foreach { entry=>
printf("%s : %s", entry.getKey, entry.getValue)
}
entity.getMentionsList.asScala.toList.foreach { mention=>
printf("Begin offset: %d\n", mention.getText.getBeginOffset)
printf("Content: %s\n", mention.getText.getContent)
printf("Type: %s\n\n", mention.getType)
}
}
它挂了几分钟,然后扔了AsyncTaskException: Asynchronous task failed
。引起异常的行是language.analyzeEntities(request)
我在终端中成功运行了gcloud命令:
gcloud ml language analyze-entities --content="Michael Jordan just purchased a stupid Roomba 880 and agreed to sign the exciting contract from Chicago Bulls."
有人可以帮助我解决或理解问题吗?
更新
解决SDK问题。在另一个Macbook Pro上,相同的jar文件可以在Google服务的响应下正常运行。在我的Macbook Pro上,它挂在这里:
[Loaded io.grpc.netty.shaded.io.netty.util.concurrent.AbstractScheduledEventExecutor$3 from file:/Users/xxx/google-nlp-sample.jar]
[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__]
[Loaded java.util.concurrent.ConcurrentHashMap$Traverser from /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded java.util.concurrent.ConcurrentHashMap$BaseIterator from /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded java.util.concurrent.ConcurrentHashMap$EntryIterator from /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded sun.reflect.GeneratedMethodAccessor2 from __JVM_DefineClass__]
[Loaded sun.reflect.GeneratedConstructorAccessor7 from __JVM_DefineClass__]