Search
📚

한국어 데이터셋 구축

deepl-cli

완료된 데이터셋

ko_detail_23k_23239_last_f2.json
22241.3KB

DeepL API 활용 번역

1. 데이터 예시

영어 conversation json 데이터
conversation_58k.json
123133.4KB
{ "id": "000000529353", "image": "000000529353.jpg", "conversations": [ { "from": "human", "value": "How many giraffes are there in the image?\n<image>" }, { "from": "gpt", "value": "There are three giraffes in the image." }, { "from": "human", "value": "What kind of terrain are the giraffes standing on?" }, { "from": "gpt", "value": "The giraffes are standing on a flat, barren plain or a dry grass field, which appears to be an open safari." }, { "from": "human", "value": "What is the weather like in the image?" }, { "from": "gpt", "value": "The weather in the image is clear, with a blue cloudy sky overhead." }, { "from": "human", "value": "Do giraffes typically reside in habitats like the one in the image?" }, { "from": "gpt", "value": "Yes, giraffes typically reside in habitats similar to the one depicted in the image. They primarily inhabit the savannas, grasslands, and open woodlands of Africa. These environments provide ample space for giraffes to roam freely and accommodate their large size, as well as offer abundant food sources like acacia trees, which are their main source of nutrition.\n\nGiraffes have evolved to thrive in these open terrains due to their uniquely long necks and legs, which allow them to browse the tallest trees for leaves and buds while maintaining a wide field of vision to detect potential predators. The flat terrain without dense vegetation also enables giraffes to move more easily and escape from potential threats.\n\nFurthermore, the dry grass field and the clouded blue sky in the image are typical of the weather conditions encountered in the giraffe's natural habitats. The blue sky suggests a stable, non-stormy climate, while the dry grass indicates that the area experiences periodic dry seasons, which create a distinct ecosystem sustaining various plant and animal species, including giraffes.\n\nSo, the image of three giraffes standing on a flat, barren plain or a dry grass field beneath a blue cloudy sky accurately represents a typical environment inhabited by these incredible animals in the wild." } ] },
JSON
복사
한글 번역 결과 - 6000번 까지 완료
ko_conversation_58k_6000.json
124264.3KB
{ "id": "000000529353", "image": "000000529353.jpg", "conversations": [ { "from": "human", "value": "이미지에 기린이 몇 마리 있나요?\n<이미지>" }, { "from": "gpt", "value": "이미지에 기린이 세 마리 있습니다." }, { "from": "human", "value": "기린들이 서 있는 지형은 어떤 곳인가요?" }, { "from": "gpt", "value": "기린들이 평평하고 메마른 평원이나 마른 풀밭에 서 있는데, 사파리가 펼쳐진 것처럼 보입니다." }, { "from": "human", "value": "이미지 속 날씨는 어떤가요?" }, { "from": "gpt", "value": "이미지 속 날씨는 맑고 하늘은 파랗고 흐린 날씨입니다." }, { "from": "human", "value": "기린은 일반적으로 이미지에 있는 서식지에 서식하나요?" }, { "from": "gpt", "value": "네, 기린은 일반적으로 이미지에 묘사된 것과 비슷한 서식지에 서식합니다. 기린은 주로 아프리카의 사바나, 초원, 열린 삼림지대에 서식합니다. 이러한 환경은 기린이 자유롭게 돌아다닐 수 있는 충분한 공간을 제공하고 기린의 큰 몸집을 감당할 수 있을 뿐만 아니라 기린의 주요 영양 공급원인 아카시아 나무와 같은 풍부한 먹이를 제공합니다.\n\n기린은 독특하게 긴 목과 다리 덕분에 높은 나무에서 나뭇잎과 새싹을 탐색하고 넓은 시야를 확보하여 잠재적 포식자를 감지할 수 있어 이러한 개방된 지형에서 번성하도록 진화해 왔습니다. 또한 울창한 초목이 없는 평평한 지형 덕분에 기린은 더 쉽게 이동하고 잠재적인 위협으로부터 벗어날 수 있습니다.\n\n또한 이미지 속 마른 풀밭과 흐린 푸른 하늘은 기린의 자연 서식지에서 볼 수 있는 전형적인 기상 조건입니다. 파란 하늘은 폭풍우가 없는 안정된 기후를, 마른 풀밭은 이 지역이 주기적으로 건기를 겪으며 기린을 포함한 다양한 동식물 종을 유지하는 독특한 생태계를 형성하고 있음을 나타냅니다.\n\n따라서 평평하고 메마른 평원이나 푸른 구름이 낀 하늘 아래 마른 풀밭에 서 있는 기린 세 마리의 이미지는 이 놀라운 동물이 야생에서 서식하는 전형적인 환경을 정확하게 표현하고 있습니다." } ] },
JSON
복사

2. 코드

각 문장(conversation[”value”])을 따로 번역하는건 너무 많은 API call 필요
하나의 이미지에 대한 모든 대화를 합쳐서 번역 → 번역 완료된 결과를 다시 순서에 맞게 split해서 json 저장
<image>\nAre the pumpkins growing near a street and a fire hydrant? ### Yes, the pumpkins are growing near a street and a fire hydrant, with some of them nestled among the foliage of the plant in the garden area. ### Is there a sidewalk visible in the image? ### Yes, there is a sidewalk visible in the image. A small pumpkin is growing next to it. ### What is the setting of the image? Urban or rural? ### The setting of the image appears to be urban, as it features a fire hydrant and a sidewalk, which are typically found in urban areas. The greenery and pumpkins growing nearby add a touch of nature to the scene. ### What do you think about the growth of the pumpkins in this environment? ### The growth of the pumpkins in this urban environment seems to be doing well, as evidenced by the healthy-looking pumpkins and the green foliage. Growing pumpkins in such a setting can be a pleasant surprise for passersby, and it also brings a touch of nature and fresh produce to the urban landscape.
JSON
복사
deepl api 호출 및 번역 결과 return 하는 모듈
import json import time import requests def translate_deepl_api(text): url = "https://deepl-translator.p.rapidapi.com/translate" payload = { "text": f"{text}", "source": "EN", "target": "KO" } headers = { "content-type": "application/json", "X-RapidAPI-Key": "a96d261196msh64866dd4968813ep1c44ccjsnc5c5ab60ee71", "X-RapidAPI-Host": "deepl-translator.p.rapidapi.com" } try: response = requests.post(url, json=payload, headers=headers) responseText = response.text json_obj = json.loads(responseText) text_value = json_obj['text'] except Exception as e: print(f"Error: {e} {text}") text_value = text return text_value
Python
복사
main
if __name__ == "__main__": restart_num = 6000 input_json = f'ko_conversation_58k_{restart_num}.json' with open(input_json, 'r', encoding='utf-8') as f: data = json.load(f) conv = [] for ind, item in enumerate(data): try: ind = ind+1 if ind <= restart_num : continue # 중간에 끊기면 이 값 수정 if ind % 3000 == 0: # 에러 발생할 수 있어 백업 용도 with open(f'ko_conversation_58k_{ind}.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) print(ind) ## 문장들 취합할 때 구분을 위해 " ### " 을 문장들 사이에 삽입 for conversation in item["conversations"]: conv.append(conversation["value"]) conv.append(" ### ") conv.pop() ## list 형태로 저장한 문장들을 하나의 문자열로 바꾼 뒤 번역 combined_value = "".join(conv) translated_value = translate_deepl_api(combined_value) ## 다시 " ### " 기준으로 분리 split_values = translated_value.split(" ### ") for i, split in enumerate(split_values) : item["conversations"][i]["value"] = split conv = [] except Exception as e: conv = [] print(f"Error: {e} {ind}") with open(f'ko_conversation_58k_error_{ind}.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) continue with open(f'ko_conversation_58k_{ind}.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2)
Python
복사
full code
import json import time import requests def translate_deepl_api(text): url = "https://deepl-translator.p.rapidapi.com/translate" payload = { "text": f"{text}", "source": "EN", "target": "KO" } headers = { "content-type": "application/json", "X-RapidAPI-Key": "a96d261196msh64866dd4968813ep1c44ccjsnc5c5ab60ee71", "X-RapidAPI-Host": "deepl-translator.p.rapidapi.com" } try: response = requests.post(url, json=payload, headers=headers) responseText = response.text json_obj = json.loads(responseText) text_value = json_obj['text'] except Exception as e: print(f"Error: {e} {text}") text_value = text return text_value if __name__ == "__main__": restart_num = 6000 input_json = f'ko_conversation_58k_{restart_num}.json' with open(input_json, 'r', encoding='utf-8') as f: data = json.load(f) conv = [] for ind, item in enumerate(data): try: ind = ind+1 if ind <= restart_num : continue # 중간에 끊기면 이 값 수정 if ind % 3000 == 0: # 에러 발생할 수 있어 백업 용도 with open(f'ko_conversation_58k_{ind}.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) print(ind) ## 문장들 취합할 때 구분을 위해 " ### " 을 문장들 사이에 삽입 for conversation in item["conversations"]: conv.append(conversation["value"]) conv.append(" ### ") conv.pop() ## list 형태로 저장한 문장들을 하나의 문자열로 바꾼 뒤 번역 combined_value = "".join(conv) translated_value = translate_deepl_api(combined_value) ## 다시 " ### " 기준으로 분리 split_values = translated_value.split(" ### ") for i, split in enumerate(split_values) : item["conversations"][i]["value"] = split conv = [] except Exception as e: conv = [] print(f"Error: {e} {ind}") with open(f'ko_conversation_58k_error_{ind}.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) continue with open(f'ko_conversation_58k_{ind}.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2)
Python
복사

이미지 하나씩 처리하면 너무 많은 API 필요 → 여러 개 이미지 묶어서 처리