2

下面是我尝试过的代码,但它运行时出现如下所示的错误

  from google.cloud import bigquery
  from google.cloud.language import enums
  from google.cloud.language import types
  import sys
  import six
  from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
  client = bigquery.Client.from_service_account_json('simple_project//MQ News Matching-2443b471b5ff.json')
  with open('articles.txt',mode='r', encoding="utf8") as reader:
  text=reader.read()
  if isinstance(text,six.binary_type):
      text = text.decode('utf-8')
      document = types.Document(content=text.encode('utf-8'),type=enums.Document.Type.PLAIN_TEXT)
      # Detect and send native Python encoding to receive correct word offsets.
      encoding = enums.EncodingType.UTF32
      if sys.maxunicode == 65535:
          encoding = enums.EncodingType.UTF16
      result = client.analyze_entity_sentiment(document, encoding)
      sentiment = client.analyze_sentiment(document=document).document_sentiment
  print('Text: {}'.format(text))
  print('Sentiment: {}, {}'.format(SentimentIntensityAnalyzer.score, sentiment.magnitude))

我得到的错误如下

print('Sentiment:{},{}'.format(SentimentIntensityAnalyzer.score,sentiment.magnitude))AttributeError:类型对象'SentimentIntensityAnalyzer'没有属性'score'

4

1 回答 1

2

你想要做的是:

from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types

def analyze(movie_review_filename):
    """Run a sentiment analysis request on text within a passed filename."""
    client = language.LanguageServiceClient()

    with open(movie_review_filename, 'r') as review_file:
        # Instantiates a plain text document.
        content = review_file.read()

    document = types.Document(
        content=content,
        type=enums.Document.Type.PLAIN_TEXT)
    annotations = client.analyze_sentiment(document=document)

    # Print the results
    print_result(annotations)

def print_result(annotations):
    score = annotations.document_sentiment.score
    magnitude = annotations.document_sentiment.magnitude

    for index, sentence in enumerate(annotations.sentences):
        sentence_sentiment = sentence.sentiment.score
        print('Sentence {} has a sentiment score of {}'.format(
            index, sentence_sentiment))

    print('Overall Sentiment: score of {} with magnitude of {}'.format(
        score, magnitude))

您可能需要设置 GOOGLE_APPLICATION_CREDENTIALS,如果是这样,您可以这样做:

export GOOGLE_APPLICATION_CREDENTIALS='/path/to/your/client_secret.json'

这将与您在问题中使用的 JSON 文件相同。

您可以在此处找到更多云自然语言示例:https ://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/language

于 2018-06-13T06:38:57.163 回答