Перевести конкретное поле файла JSON

Я хочу перевести поле «текст» из домена Flight набора данных Taskmaster-2. Это глубоко вложенный файл JSON. Использование Google Cloud Translate, как я могу это сделать?

Пример (с английского на бангла):

Исходный JSON-файл:

[ {
"conversation_id": "dlg-00100680-00e0-40fe-8321-6d81b21bfc4f",
"instruction_id": "flight-12",
"utterances": [
  {
    "index": 0,
    "speaker": "USER",
    "text": "Hello. I'd like to find a round trip commercial airline flight from San Francisco to Denver.",
    "segments": [
      {
        "start_index": 26,
        "end_index": 36,
        "text": "round trip",
        "annotations": [
          {
            "name": "flight_search.type"
          }
        ]
      },

Выходной JSON-файл:

[ {
"conversation_id": "dlg-00100680-00e0-40fe-8321-6d81b21bfc4f",
"instruction_id": "flight-12",
"utterances": [
  {
    "index": 0,
    "speaker": "USER",
    "text": "হ্যালো. আমি সান ফ্রান্সিসকো থেকে ডেনভার পর্যন্ত একটি রাউন্ড ট্রিপ বাণিজ্যিক এয়ারলাইন ফ্লাইট খুঁজতে চাই।",
    "segments": [
      {
        "start_index": 26,
        "end_index": 36,
        "text": "রাউন্ড ট্রিপ",
        "annotations": [
          {
            "name": "flight_search.type"
          }
        ]
      },

Обратитесь к этому SO Дайте мне знать, если это решит вашу проблему.

Hemanth Kumar 21.11.2022 17:50
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
1
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я извлек несколько строк данных из Flights.json и использовал приведенный ниже код, написанный на Python с использованием Google Cloud Translation API , для перевода с английского на японский. Также смотрите список поддерживаемых языков API.

test.json:

[
  {
    "conversation_id": "dlg-00100680-00e0-40fe-8321-6d81b21bfc4f",
    "instruction_id": "flight-12",
    "utterances": [
      {
        "index": 0,
        "speaker": "USER",
        "text": "Hello. I'd like to find a round trip commercial airline flight from San Francisco to Denver.",
        "segments": [
          {
            "start_index": 26,
            "end_index": 36,
            "text": "round trip",
            "annotations": [
              {
                "name": "flight_search.type"
              }
            ]
          },
          {
            "start_index": 68,
            "end_index": 81,
            "text": "San Francisco",
            "annotations": [
              {
                "name": "flight_search.origin"
              }
            ]
          },
          {
            "start_index": 85,
            "end_index": 91,
            "text": "Denver",
            "annotations": [
              {
                "name": "flight_search.destination1"
              }
            ]
          }
        ]
      },
      {
        "index": 1,
        "speaker": "ASSISTANT",
        "text": "Hello, how can I help you?"
      },
      {
        "index": 2,
        "speaker": "ASSISTANT",
        "text": "San Francisco to Denver, got it.",
        "segments": [
          {
            "start_index": 0,
            "end_index": 13,
            "text": "San Francisco",
            "annotations": [
              {
                "name": "flight_search.origin"
              }
            ]
          },
          {
            "start_index": 17,
            "end_index": 23,
            "text": "Denver",
            "annotations": [
              {
                "name": "flight_search.destination1"
              }
            ]
          }
        ]
      }
    ]
  }
]

Код:

import json
from google.cloud import translate_v2 as translate

f = open('test.json')

data = json.load(f)
target = "ja"
translate_client = translate.Client()

for conv in data:
    for utt in conv["utterances"]:
        utt["text"] = translate_client.translate(utt["text"], target_language=target)["translatedText"]
        if "segments" in utt:
            for seg in utt["segments"]:
                seg["text"] = translate_client.translate(seg["text"], target_language=target)["translatedText"]

#print(data) # prints a dictionary

json_object = json.dumps(data, indent=2,ensure_ascii=False).encode('utf8')
print(json_object.decode()) # prints a json string

Вывод:

[
  {
    "conversation_id": "dlg-00100680-00e0-40fe-8321-6d81b21bfc4f",
    "instruction_id": "flight-12",
    "utterances": [
      {
        "index": 0,
        "speaker": "USER",
        "text": "こんにちは。サンフランシスコからデンバーまでの民間航空会社の往復便を探したいのですが。",
        "segments": [
          {
            "start_index": 26,
            "end_index": 36,
            "text": "往復",
            "annotations": [
              {
                "name": "flight_search.type"
              }
            ]
          },
          {
            "start_index": 68,
            "end_index": 81,
            "text": "サンフランシスコ",
            "annotations": [
              {
                "name": "flight_search.origin"
              }
            ]
          },
          {
            "start_index": 85,
            "end_index": 91,
            "text": "デンバー",
            "annotations": [
              {
                "name": "flight_search.destination1"
              }
            ]
          }
        ]
      },
      {        "index": 1,
        "speaker": "ASSISTANT",
        "text": "こんにちは、どうすればいいですか?"
      },
      {
        "index": 2,
        "speaker": "ASSISTANT",
        "text": "サンフランシスコからデンバーへ、了解。",
        "segments": [
          {
            "start_index": 0,
            "end_index": 13,
            "text": "サンフランシスコ",
            "annotations": [
              {
                "name": "flight_search.origin"
              }
            ]
          },
          {
            "start_index": 17,
            "end_index": 23,
            "text": "デンバー",
            "annotations": [
              {
                "name": "flight_search.destination1"
              }
            ]
          }
        ]
      }
    ]
  }
]

@RasheeqIshmam кажется, ваша ошибка в том, что вы не проходите аутентификацию должным образом. Возможно, вы захотите сначала попробовать исправить часть аутентификации.

Ricco D 22.11.2022 21:37

Большое спасибо. Я исправил ошибку аутентификации, после чего все заработало как надо. :)

Rasheeq Ishmam 23.11.2022 14:32

Другие вопросы по теме