Je suis en train de construire un modèle d'analyse de sentiment sur un fichier csv sur l'utilisation du texte analytique api sur azurComment accéder à l'API cognitive Microsoft (HTTPError: Erreur HTTP 400: Bad Request)
C'est le code I utilisé:
for j in range(0,num_of_batches): # this loop will add num_of_batches strings to input_texts
input_texts.set_value(j,"") # initialize input_texts string j
for i in range(j*l//num_of_batches,(j+1)*l//num_of_batches): #loop through a window of rows from the dataset
comment = str(mydata["tweet"][i]) #grab the comment from the current row
comment = comment.replace("\"", "'") #remove backslashes (why? I don’t remember. #honestblogger)
#add the current comment to the end of the string we’re building in input_texts string j
input_texts.set_value(j, input_texts[j] + '{"language":"' + "pt"',"id":"' + str(i) + '","text":"'+ comment + '"},')
#after we’ve looped through this window of the input dataset to build this series, add the request head and tail
input_texts.set_value(j, '{"documents":[' + input_texts[j] + ']}')
headers = {'Content-Type':'application/json', 'Ocp-Apim-Subscription-Key':account_key}
Sentiment = pd.Series()
batch_sentiment_url = "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment"
jusqu'à présent tout va bien, mais quand j'essaie d'obtenir les données de l'api je reçois une erreur dans la dernière partie
for j in range(0,num_of_batches):
# Detect sentiment for the each batch.
req = urllib2.Request(batch_sentiment_url, input_texts[j], headers)
response = urllib2.urlopen(req)
result = response.read()
obj = json.loads(result.decode('utf-8'))
#loop through each result string, extracting the sentiment associated with each id
for sentiment_analysis in obj['documents']:
Sentiment.set_value(sentiment_analysis['id'], sentiment_analysis['score'])
#tack our new sentiment series onto our original dataframe
mydata.insert(len(mydata.columns),'Sentiment',Sentiment.values)
Cette erreur
HTTPError: HTTP Error 400: Bad Request
Il a très bien fonctionné et a donné les résultats, mais la longueur de mes données est 1544 et la longueur des sentiments de retour sont 1543. Comment puis-je trouver les disparus enregistrer ou laisser tomber! Merci beaucoup –
Par «longueur des données», voulez-vous dire le nombre de documents? Vous pouvez corréler l'entrée et la sortie en utilisant le champ 'id'. – cthrash
pour référence future J'ai ajouté tweetid field au lieu de id puis j'ai créé une nouvelle base de données pour les résultats de sentiment et le tweetid, concaténés avec le cadre de données d'origine pour déposer l'enregistrement et par la longueur des données que je veux dire nombre d'enregistrements Merci pour l'aide que vous avez sauvé ma journée :) –