通过谷歌云库进行情感分析

3

最近我正在使用Google Cloud库实现情感分析,我的代码如下:

string text = "Feeling Not Well";
var client = LanguageServiceClient.Create();

var response = client.AnalyzeSentiment(new Document()
{
    Content = text,
    Type = Document.Types.Type.PlainText
});

var sentiment = response.DocumentSentiment;
var Score = sentiment.Score;
var magnitude = sentiment.Magnitude;

但是在 var client = LanguageServiceClient.Create(); 上出现了错误。 错误信息如下:

应用程序默认凭据不可用。 如果在 Google Compute Engine 中运行,则它们是可用的。 否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS, 指向定义凭据的文件。有关更多信息,请参见https://developers.google.com/accounts/docs/application-default-credentials

请给我解决方案。


你最终把这个搞定了吗? - Jon Kragh
1个回答

3

你可以选择使用

gcloud auth application-default login

您可以通过命令行(假设您已安装Cloud SDK),或者生成并下载一个服务帐号 JSON 文件,然后将GOOGLE_APPLICATION_CREDENTIALS环境变量设置为指向该文件。

Create方法调用将首先检查环境变量,如果未设置环境变量,则会查找来自gcloud的应用程序默认凭据。

基本上,凭据选项包括:

  • 明确从服务帐号文件中创建一个凭据,例如:GoogleCredential.FromStream(stream),并使用它创建一个Channel,您可以将其传递给Create,如常见问题解答中所述
  • 调用不带任何参数(或传递 null)的create方法,这种情况下:
    • 如果您已设置了GOOGLE_APPLICATION_CREDENTIALS环境变量,则假定服务帐号 JSON 文件位于其中
    • 否则,如果您运行了gcloud auth application-default login,那些凭据将被使用
    • 否则,如果您正在Google Cloud Platform上运行(例如Compute Engine或AppEngine Flexible),则会获得该项目的默认凭据
    • 否则,调用将失败

此外,您可以使用Document.FromPlainText调用来简化您的代码:

string text = "Feeling Not Well";
var client = LanguageServiceClient.Create();

var response = client.AnalyzeSentiment(Document.FromPlainText(text));
var sentiment = response.DocumentSentiment;
var Score = sentiment.Score;
var magnitude = sentiment.Magnitude;

1
@ThisWillDoIt:哎呀,当然 - 在那个时间点,https://googlecloudplatform.github.io/google-cloud-dotnet/docs/faq.html 有相关的答案。我会编辑进去的。(抱歉,包装REST API的库确实接受 GoogleCredential,这让我感到困惑。) - Jon Skeet
@JonKragh:好的,我会自己尝试一下来确认 - 但是使用环境变量更简单 :) 你试过了吗?它有效吗? - Jon Skeet
我现在会尝试!为了部署的原因,我一直试图避免它!谢谢。 - Jon Kragh
@JonKragh:这让我感到惊讶 - 我现在正在测试它。 - Jon Skeet
@JonKragh:好的,我已经重现了这个问题。明天会提交报告并进行调查。 - Jon Skeet
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接