示例#1
0
def run_sentiment_analysis(df):
    """ Adds score, magnitude and discrete_sentiment to df using the Google Could Sentiment API

  Note that the function can sometimes run into rate-limit restrictions, which is why
  the calls are wrapped in a while loop, to ensure that the API is called for all rows.
  """

    sentiment_score = {}
    sentiment_magnitude = {}
    for i, row in df.iterrows():
        while True:
            try:
                text = row.title + " " + row.question_content
                score, magnitude = gc_sentiment(text, type='HTML')
                sentiment_score[row.question_id] = score
                sentiment_magnitude[row.question_id] = magnitude
            except (Forbidden, TooManyRequests) as e:
                print(e)
                print('Waiting 100 seconds due to rate-limit constraint')
                time.sleep(100)
                continue
            break

    df[u'score'] = df['question_id'].map(sentiment_score)
    df[u'magnitude'] = df['question_id'].map(sentiment_magnitude)

    df[u'discrete_sentiment'] = df.apply(lambda x: \
                               discretize_sentiment(x['score'],x['magnitude']), axis=1)

    return (df)
示例#2
0
文件: test_utils.py 项目: ogtal/sumo
 def test_low_magnitude_positive_score(self):
     score = 1
     magnitude = 0.1
     result = discretize_sentiment(score,
                                   magnitude,
                                   score_cutoff=0.2,
                                   magnitude_cutoff=0.5)
     self.assertEqual(result, 'neutral')
示例#3
0
文件: test_utils.py 项目: ogtal/sumo
 def test_high_magnitude_positive_score(self):
     score = 1
     magnitude = 1
     result = discretize_sentiment(score,
                                   magnitude,
                                   score_cutoff=0.2,
                                   magnitude_cutoff=0.5)
     self.assertEqual(result, 'positive')