Python с API облачного языка Google Проблема? - PullRequest
0 голосов
/ 30 октября 2018

Использование библиотеки google-cloud-language для python как я могу получить JSON, возвращенный следующими методами.

client.classify_text()
client.analyze_entity_sentiment()

метод response.serializetostring(), кажется, кодирует результат способом, который не может быть декодирован в python. Не UTF-8 или Unicode escape. Я хочу получить JSON, чтобы я мог сбросить его в mongodb.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать метод google.protobuf.json_format.MessageToJson для сериализации простого объекта protobuf в JSON. Например:

from google.cloud import language
from google.protobuf.json_format import MessageToJson

client = language.LanguageServiceClient()

document = language.types.Document(
    content='Mona said that jogging is very fun.',
    type='PLAIN_TEXT',
)

response = client.analyze_entity_sentiment(
    document=document,
    encoding_type='UTF32',
)

print(MessageToJson(response))

Печать:

{
  "entities": [
    {
      "name": "Mona",
      "type": "PERSON",
      "salience": 0.6080747842788696,
      "mentions": [
        {
          "text": {
            "content": "Mona"
          },
          "type": "PROPER",
          "sentiment": {
            "magnitude": 0.10000000149011612,
            "score": 0.10000000149011612
          }
        }
      ],
      "sentiment": {
        "magnitude": 0.10000000149011612,
        "score": 0.10000000149011612
      }
    },
    {
      "name": "jogging",
      "type": "OTHER",
      "salience": 0.39192524552345276,
      "mentions": [
        {
          "text": {
            "content": "jogging",
            "beginOffset": 15
          },
          "type": "COMMON",
          "sentiment": {
            "magnitude": 0.8999999761581421,
            "score": 0.8999999761581421
          }
        }
      ],
      "sentiment": {
        "magnitude": 0.8999999761581421,
        "score": 0.8999999761581421
      }
    }
  ],
  "language": "en"
}
...