def get_sentiment(company_id, text): alchemyapi = AlchemyAPI() key_phrases = [] for apikey in engine.get_random_alchemy_credentials(): alchemyapi.apikey = apikey response = alchemyapi.keywords('text', text, {'sentiment': 1}) if response['status'] == 'OK': if len(response['keywords']) == 0: return 0 # related_words = models.RelatedWord.query.filter_by(company_id=company_id).all() for keyword in response["keywords"]: if 'sentiment' in keyword: if keyword['sentiment'].has_key('score'): key_phrases.append(float(keyword['sentiment']['score'])) elif keyword['sentiment']['type'] == 'neutral': key_phrases.append(0) if len(key_phrases) == 0: return 0 else: return float("{0:.2f}".format(sum(key_phrases)/len(key_phrases))) elif response['status'] == 'ERROR' and response['statusInfo'] != 'unsupported-text-language': print "ERROR: getting sentiment " + response['statusInfo'] # Skip onto the next api key continue else: print "None of the above " + response['statusInfo'] return 0 #Return none when all api keys are exhausted return None
def generate_concepts_for_company(company_id, tweets): all_tweets_as_string = ' '.join(tweets) alchemyapi = AlchemyAPI() api_error = False for apikey in engine.get_random_alchemy_credentials(): alchemyapi.apikey = apikey response = alchemyapi.concepts('text', all_tweets_as_string) related_words = [] if response['status'] == 'OK': for concept in response['concepts']: related_words.append(concept['text']) elif response['status'] == 'ERROR' and tweets != []: print "ERROR getting concepts" + response['statusInfo'] api_error = True # Move onto the next api key continue # Return null when all api keys are exhausted if api_error and len(related_words) == 0: return None return related_words