2

Below is the code I tried but it runs with the error shown below

  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))

And the error I get is as below

print('Sentiment: {}, {}'.format(SentimentIntensityAnalyzer.score, sentiment.magnitude)) AttributeError: type object 'SentimentIntensityAnalyzer' has no attribute 'score'

Chetan_Vasudevan
  • 2,414
  • 1
  • 13
  • 34

1 Answers1

2

What you want to do is this:

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))

You may need to set GOOGLE_APPLICATION_CREDENTIALS, if so you can do so like this:

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

This would be the same JSON file you used in your question.

You can find more Cloud Natural Language samples here: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/language

Torry Yang
  • 365
  • 3
  • 12