【问题标题】:Sentiment analysis through google cloud Library通过谷歌云库进行情感分析
【发布时间】:2016-12-31 11:11:46
【问题描述】:

现在我正在通过谷歌云库实现情感分析,我的代码是

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 客户端 = LanguageServiceClient.Create();。 错误是

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

请给我解决办法

【问题讨论】:

  • 你有没有得到这个工作?

标签: c# vb.net google-app-engine


【解决方案1】:

你可以使用

gcloud auth application-default login

从命令行(假设您安装了Cloud SDK),或者生成并下载service account JSON file,然后将GOOGLE_APPLICATION_CREDENTIALS 环境变量设置为指向该文件。

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

基本上,凭证选项是:

  • 从服务帐户文件显式创建一个,例如GoogleCredential.FromStream(stream) 并使用它创建一个Channel,您可以将其传递给Create,如FAQ 中所述
  • 在没有任何参数(或传入 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;

【讨论】:

  • gcloud auth application-default login 不是一个好方法,这意味着每台机器都需要云 SDK,我想在没有安装任何云 SDK 的情况下工作
  • @John:嗯,我给了你两个不同的选择。使用gcloud 在开发人员机器上很有用,但它不适合部署。如果您在 Google Cloud Platform 中的机器上运行,则根本不需要执行此操作 - 它会被检测为属于该项目并且应该已经没问题了。否则,您可以使用服务帐户凭据。例如,我的 Noda Time 网站将服务帐户 JSON 存储在 Azure Key Vault 中,并在需要时从那里获取它。请注意,您的 代码 根本不需要更改 - 所有这些选项都会自动检查。
  • 我下载了服务帐户 JSON 文件。但我不明白如何在我的代码中设置 GOOGLE_APPLICATION_CREDENTIALS
  • @John:你没有在你的代码中设置它——你在你的代码外部设置它(例如在你正在运行它的命令提示符中,或者在一般环境) - 该值应该只是文件的名称。 (您可以在您的代码中设置它,但这很不寻常。此时您不妨自己使用GoogleCredential.FromStream 加载凭据并将其传递给Create。)跨度>
  • @ThisWillDoIt:哎呀,当然 - 那时,googlecloudplatform.github.io/google-cloud-dotnet/docs/faq.html 有相关的答案。将对其进行编辑。(抱歉,包装 REST API 的库确实接受 GoogleCredential,这让我感到困惑。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 2018-06-08
  • 2021-12-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
相关资源
最近更新 更多