Невозможно распечатать настроение с помощью API Google Cloud на естественном языке - PullRequest
0 голосов
/ 13 июня 2018

Ниже приведен код, который я пробовал, но он работает с ошибкой, показанной ниже

  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» не имеет атрибута «оценка»

1 Ответ

0 голосов
/ 13 июня 2018

То, что вы хотите сделать, это:

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, который вы использовали в своем вопросе.

Другие образцы Cloud Natural Language можно найти здесь: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/language

...