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

C# 通过谷歌云库进行情感分析,c#,vb.net,google-app-engine,C#,Vb.net,Google App Engine,现在我正在通过谷歌云库实现情绪分析,我的代码是 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

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

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\u APPLICATION\u CREDENTIALS 必须指向定义凭据的文件来定义。 有关更多信息,请参阅

请给我解决方案

您可以使用

gcloud auth application-default login
从命令行(假设已安装),或生成并下载一个,然后将
GOOGLE\u应用程序\u凭据
环境变量设置为指向该文件

Create
方法调用将首先检查环境变量,然后在未设置环境变量的情况下从
gcloud
中查找应用程序默认凭据

基本上,凭证选项包括:

  • 从服务帐户文件显式创建一个,例如,
    GoogleCredential.FromStream(stream)
    ,并使用该文件创建一个
    频道,您可以将其传递到
    create
    ,如中所述
  • 调用create时不带任何参数(或传入null),在这种情况下:
    • 如果您已经设置了
      GOOGLE\u APPLICATION\u CREDENTIALS
      环境变量,则假定服务帐户JSON文件所在的位置

    • 否则,如果您运行了
      gcloud auth应用程序默认登录
      ,则将使用这些凭据
    • 否则,如果您在Google云平台(例如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应用程序默认登录不是一个好办法,它意味着每台机器都需要云SDK,我想在没有任何云SDK的情况下工作installed@John当前位置我给了你两种不同的选择。在开发人员机器上使用
gcloud
是很有用的,但对于部署来说并不理想。如果你在谷歌云平台的机器上运行,你根本不需要这样做——它将被检测为属于该项目,应该已经很好了。否则,您可以使用服务帐户凭据。例如,我的Noda Time网站将服务帐户JSON存储在Azure密钥库中,并在需要时从那里获取它。请注意,您的代码根本不需要更改-所有这些选项都会自动选中。我下载了服务帐户JSON文件。但我不明白如何在我的code@John:您没有在代码中设置它-您在代码之外设置了它(例如,在您正在运行它的命令提示符中或在常规环境中)-该值应该只是文件的名称。(您可以在代码中设置它,但这是不寻常的。此时,您最好自己使用
GoogleCredential.FromStream
加载凭据,并将其传递到
Create
)@ThisWillDoIt:Whoops,当然-在这一点上,有相关的答案。将在中编辑。(对不起,包装REST API的库确实接受一个
GoogleCredential
,这让我很困惑。)你有过这样的工作吗?