Sentiment Analysis
rpi.analyticsdojo.com
47. Sentiment Analysis#
#This imports some required packages.
#import utils #Often I'll develop functions in a notebook then move to utils.
import pandas as pd
import urllib.request
import json
import pprint
48. Keys are Needed for the API.#
You will find the appropriate key on the slack channel.
#I typically store my config values.
azure_text_endpoint= 'https://eastus.api.cognitive.microsoft.com/text/analytics/v2.0'
azure_text_key1= 'key posted on slack'
def azure_request(command, endpoint, key, postdata):
#Set URI
uri=endpoint+"/"+command
#Set header
headers = {}
headers['Ocp-Apim-Subscription-Key'] = key
headers['Content-Type'] = 'application/json'
headers['Accept'] = 'application/json'
#Make request
request = urllib.request.Request(uri, postdata, headers)
response = urllib.request.urlopen(request)
return json.loads(response.read().decode('utf-8'))
def df_to_postdata(df):
return json.dumps({'documents': json.loads(df.to_json(orient='records')) }).encode('utf-8')
#First lets test with sample data from the examples.
#https://docs.microsoft.com/en-us/azure/cognitive-services/text-analytics/quickstarts/python
test_data = json.dumps({ 'documents': [
{ 'id': '1', 'language': 'en', 'text': 'I really enjoy the new XBox One S. It has a clean look, it has 4K/HDR resolution and it is affordable.' },
{ 'id': '2', 'language': 'es', 'text': 'Este ha sido un dia terrible, llegué tarde al trabajo debido a un accidente automobilistico.' }
]}).encode('utf-8')
pprint.pprint(test_data)
(b'{"documents": [{"id": "1", "language": "en", "text": "I really enjoy the new'
b' XBox One S. It has a clean look, it has 4K/HDR resolution and it is afforda'
b'ble."}, {"id": "2", "language": "es", "text": "Este ha sido un dia terrible,'
b' llegu\\u00e9 tarde al trabajo debido a un accidente automobilistico."}]}')
test_result=azure_request('sentiment', azure_text_endpoint, azure_text_key1, test_data)
test_result
{'documents': [{'id': '1', 'score': 0.9619677066802979},
{'id': '2', 'score': 0.024017512798309326}],
'errors': []}