Как я могу использовать файл JSON в качестве входных данных для текстовой аналитики MS Azure, используя Python? - PullRequest
0 голосов
/ 16 июня 2020

Я просмотрел много ответов на варианты этой проблемы, но все еще не могу заставить свой код работать.

Я пытаюсь использовать службу текстовой аналитики MS Azure, и когда я вставляю пример кода (включая 2/3 примеров предложений), он работает так, как вы могли ожидать. Однако мой вариант использования требует, чтобы такой же анализ проводился на сотнях ответов на опрос с произвольным текстом, поэтому вместо того, чтобы вставлять каждое предложение, я хотел бы использовать файл JSON, содержащий эти ответы в качестве входных данных, передайте его в Azure для анализа и получения результата JSON.

Код, который я использую, и ответ, который он дает, показаны ниже (обратите внимание, что последний бит ответа ID 2 был отключен перед сообщением об ошибке).

        key = "xxxxxxxxxxx"
endpoint = "https://blablabla.cognitiveservices.azure.com/"

import json
with open(r'example.json', encoding='Latin-1') as f:
  data = json.load(f)

print (data) 

import os
from azure.cognitiveservices.language.textanalytics import TextAnalyticsClient
from msrest.authentication import CognitiveServicesCredentials

def authenticateClient():
    credentials = CognitiveServicesCredentials(key)
    text_analytics_client = TextAnalyticsClient(
        endpoint=endpoint, credentials=credentials)
    return text_analytics_client

import requests
# pprint is used to format the JSON response
from pprint import pprint

import os

subscription_key = "xxxxxxxxxxxxx"
endpoint = "https://blablabla.cognitiveservices.azure.com/"

entities_url = "https://blablabla.cognitiveservices.azure.com/text/analytics/v2.1/entities/"

documents = data 

headers = {"Ocp-Apim-Subscription-Key": subscription_key}
response = requests.post(entities_url, headers=headers, json=documents)
entities = response.json()
pprint(entities)

[{'ID': 1, 'text': 'собака съела мою домашнюю работу', {'ID': 2, 'text': 'кошка села на

{'code': 'BadRequest', 'innerError': {'code': 'InvalidRequestBodyFormat', 'message': 'Неверный формат тела запроса. Убедитесь, что запрос json '' сериализован правильно и нет '' нулевых членов. '},' Message ':' Invalid request '}

1 Ответ

0 голосов
/ 19 июня 2020

Согласно моим исследованиям, когда мы вызываем Azure остаточный API текстовой аналитики для идентификации сущностей, тело запроса должно иметь вид

{
  "documents": [
    {
      "id": "1",
      "text": "."
    },
    {

      "id": "2",
      "text": ""
    }
  ]
}

Например

Мой json файл

[{
        "id": "1",
        "text": "dog ate my homework"
    }, {
        "id": "2",
        "text": "cat sat on the sofa"
    }
]

Мой код

key = ''
endpoint = "https://<>.cognitiveservices.azure.com/"

import requests
from pprint import pprint
import os

import json
with open(r'd:\data.json', encoding='Latin-1') as f:
  data = json.load(f)
pprint(data)
entities_url = endpoint + "/text/analytics/v2.1/entities?showStats=true"
headers = {"Ocp-Apim-Subscription-Key": key}
documents=data 
response = requests.post(entities_url, headers=headers, json=documents)
entities = response.json()
pprint(entities)
pprint("--------------------------------")
documents ={}
documents["documents"]=data
response = requests.post(entities_url, headers=headers, json=documents)
entities = response.json()
pprint(entities)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...