์•ˆ๋…•ํ•˜์„ธ์š” ์œ ๋‹ˆํ‹ฐ ์ดˆ๋ณด ๊ณ ๋“ฑํ•™์ƒ ์ธ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=155837&search_head=60&page=1

๊ณ ๋“ฑํ•™์ƒ์ด ํ•œ๋‹ฌ๋™์•ˆ ๋งŒ๋“  ๊ฒŒ์ž„ ์ŠคํŒ€ ์ถœ์‹œ 4์›” - ์ธ๋”” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๋งˆ์ด๋„ˆ ๊ฐค๋Ÿฌ๋ฆฌ

์•ˆ๋…•ํ•˜์„ธ์š”. ๊ณ ๋“ฑํ•™๊ต 3ํ•™๋…„ ํ•™์ƒ์ž…๋‹ˆ๋‹ค. ์œ ๋‹ˆํ‹ฐ๋ฅผ ๊ณต๋ถ€ํ•œ ์ง€ ์–ธ 2๋…„ ์Šฌ์Šฌ ๊ฒŒ์ž„์ œ์ž‘์„ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๊ฒŒ์ž„์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ํ™๋ณด๋ฅผ ์–ด๋””๋‹ค ํ• ๊นŒํ•˜๋‹ค๊ฐ€ ์ข…์ข… ํƒ๋ฐฉํ•˜๋˜ ์ด ์ธ๋”” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๊ฐค๋Ÿฌ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.์—ฌ

gall.dcinside.com


์ด ํ™๋ณด๊ธ€ ์˜ฌ๋ ธ๋Š”๋ฐ ๋ฐ˜์‘์ด ์ข‹์•„์„œ ํ•œ ๋ฒˆ ๊ฐœ๋ฐœ์ผ์ง€๋„ ์˜ฌ๋ ค๋ด…๋‹ˆ๋‹ค.


์œ ๋‹ˆํ‹ฐ๋ฅผ ๋ฐฐ์šด ์ง€๋Š” 2๋…„์ •๋„ ๋๊ณ ์š”ย 


ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•œ ์ง€๋Š” ์•ฝ ํ•œ๋‹ฌ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


์ผ๋‹จ์€ ์ € ๋•Œ ๋ณด๋‹ค ๋ฐœ์ „๋œ ์ ์ด๋ผ๋ฉด ๋„์›€ ๋ง๊ณผ ์˜์–ด ๋ฒˆ์—ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c60f49c12cd6e351f20d73040b4b5c2d6c7be3adac9

์ด์ฒ˜๋Ÿผ ์˜์ƒ์ด๋ž‘ ํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.ย 


๋˜ํ•œ ๋‹ค์Œ ๋ณ€๊ฒฝ์ ์€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ณ„์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c60f49d14cd6e9f9521cdc8b91037b5b8ce3cb7


a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c60f49e1dcd6eb5ad2282f4288ac8ccb699e026

์ด๋Ÿฐ ์‹์œผ๋กœ ์—ฐ๊ตฌ๊ฐ€ ์•ˆ๋œ ๊ฑด์„ค์ข…๋ฅ˜๋Š” ์ž๋ฌผ์‡ ๊ฐ€ ๊ฑธ๋ ค์žˆ๊ณ  ์„ ํƒ์ด ์•ˆ๋๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ํ•ด๊ธˆํ•˜๋ฉด ์ž๋ฌผ์‡ ๊ฐ€ ํ’€๋ฆฌ๊ณ  ์„ ํƒ์ด ๋ฉ๋‹ˆ๋‹ค.ย 


๋˜ ํ•˜๋‚˜์˜ ์ค‘์š” ๋ณ€๊ฒฝ์ ์€ ์˜์–ด ๋ฒˆ์—ญ์ด ๋˜์—ˆ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค.


์ €๋Š” ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฒˆ์—ญ์ด ์ฐฎ์•„์„œ ํŒŒ์ด์ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ

# ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ import ํ•˜์„ธ์š” (์‹ค์ œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•จ).
# ์˜ˆ์‹œ ์ฝ”๋“œ์ด๋ฏ€๋กœ googletrans ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ pandas ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

from googletrans import Translator, LANGUAGES

import pandas as pd

# Google ๋ฒˆ์—ญ๊ธฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
translator = Translator()

# ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ๋ฅผ ์˜์–ด์™€ ์ผ๋ณธ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
def translate_text(text, dest_language, max_retries=10):
ย  ย  """
ย  ย  ์ฃผ์–ด์ง„ ํ…์ŠคํŠธ๋ฅผ ์ง€์ •๋œ ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•ฉ๋‹ˆ๋‹ค. ์‹คํŒจํ•  ๊ฒฝ์šฐ ์ตœ๋Œ€ max_retries๋ฒˆ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

ย  ย  :param text: ๋ฒˆ์—ญํ•  ํ…์ŠคํŠธ (str)
ย  ย  :param dest_language: ๋Œ€์ƒ ์–ธ์–ด ์ฝ”๋“œ (์˜ˆ: 'en' for English, 'ja' for Japanese)
ย  ย  :param max_retries: ์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 3)
ย  ย  :return: ๋ฒˆ์—ญ๋œ ํ…์ŠคํŠธ (str) ๋˜๋Š” ์‹คํŒจ ์‹œ None
ย  ย  """
ย  ย  retry_count = 0
ย  ย  while retry_count < max_retries:
ย  ย  ย  ย  try:
ย  ย  ย  ย  ย  ย  # ํ…์ŠคํŠธ๋ฅผ ๋ฒˆ์—ญํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ย  ย  ย  ย  ย  ย  translated = translator.translate(text, dest=dest_language)
ย  ย  ย  ย  ย  ย  return translated.text
ย  ย  ย  ย  except Exception as e:
ย  ย  ย  ย  ย  ย  # ๋ฒˆ์—ญ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์žฌ์‹œ๋„ ํšŸ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
ย  ย  ย  ย  ย  ย  print(f"Retry {retry_count + 1}/{max_retries}. Error: {e}", "์›๋ณธ:", text)
ย  ย  ย  ย  ย  ย  retry_count += 1
ย  ย  # ์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•œ ๊ฒฝ์šฐ
ย  ย  print(f"Failed to translate after {max_retries} attempts.", "์›๋ณธ:", text)
ย  ย  return None
# ๋ฒˆ์—ญํ•  ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ์ด ๋ฆฌ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ•œ๊ตญ์–ด ๋ฌธ์ž์—ด์„ ํฌํ•จํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
korean_texts = "์ƒˆ๋กœํ•˜๊ธฐ-1010101001011010-ํŒฉํ† ๋ฆฌ ์ปดํผ๋‹ˆ -1010101001011010-๋ถˆ๋Ÿฌ์˜ค๊ธฐ"
korean_texts = korean_texts.replace("\r\n", "\\r\\n")
korean_texts=korean_texts.split("-1010101001011010-")
unique_texts = []
[unique_texts.append(item) for item in korean_texts if item not in unique_texts]

# ๋ฒˆ์—ญํ•  ํ…์ŠคํŠธ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ
korean_texts = unique_texts
# ๋ฒˆ์—ญ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋”•์…”๋„ˆ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ตœ์ข… ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ƒ์„ฑ์„ ์œ„ํ•œ ์ดˆ๊ธฐ ๊ตฌ์กฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
translations = {'key': [], 'ko': korean_texts, 'en': [], 'jp': []}

# ๊ฐ ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ์— ๋Œ€ํ•ด ์˜์–ด์™€ ์ผ๋ณธ์–ด๋กœ ๋ฒˆ์—ญ์„ ์‹œ๋„ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
for ko_text in korean_texts:
ย  ย  a=translate_text(ko_text, 'en')
ย  ย  b=translate_text(ko_text, 'ja')
ย  ย  print("์›๋ณธ:",ko_text,"en:",a ,"jp:",b)
ย  ย  translations['key'].append(a)
ย  ย  translations['en'].append(a) ย # ์˜์–ด๋กœ ๋ฒˆ์—ญ
ย  ย  translations['jp'].append(b) ย # ์ผ๋ณธ์–ด๋กœ ๋ฒˆ์—ญ
print(len(translations['key']), len(translations['ko']), len(translations['en']), len(translations['jp']))
# ๋ฒˆ์—ญ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pandas DataFrame์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
df_translations = pd.DataFrame(translations)

# ์ตœ์ข… ์ƒ์„ฑ๋œ DataFrame์„ CSV ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๊ฒฝ๋กœ๋Š” ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
df_translations.to_excel("C:/Users/j0106/OneDrive/๋ฐ”ํƒ• ํ™”๋ฉด/์ƒˆ ํด๋” (2)/translations.xlsx",index=False)
print("๋")

# ์ฃผ์˜: ์œ„ ์ฝ”๋“œ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์—์„œ ๊ตฌ๊ธ€ ๋ฒˆ์—ญ API์™€ pandas ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c61f29e1dcd6e9be65eba6e8b029cb069f93f7d53


a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c66f09f14cd6e6f1a586ecca176281f9c451702

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฒˆ์—ญ์ด ๋˜์–ด ๋๋‚˜๋ฉด ์„ค์ •ํ•œ ๊ฒฝ๋กœ์—ย 

a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c66f09814cd6eaafb1f61cf4df4c0fa90898c04

์ด๋ ‡๊ฒŒ ์—‘์…€ํŒŒ์ผ๋กœ ๋‚˜์˜ค๋Š”๋ฐ ์ด๊ฑธ ๋ฐ‘์— ์‚ฌ์ง„์ฒ˜๋Ÿผ jsonํŒŒ์ผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c66f39d13cd6e2c88864597578bdbda56063bc22c

์ด๋Ÿฌ๋ฉด ๋ฒˆ์—ญ ์ค€๋น„ ๋!!


์ค‘์š” ๋ณ€๊ฒฝ ์ ์€ ์ด์ •๋„ ์žˆ๊ฒ ๋„ค์š”


์•„ ๊ทธ๋ฆฌ๊ณ  ๊ฒŒ์ž„ ๋ฆฌ์†Œ์Šค๋“ค์€ ์—์…‹์Šคํ† ์–ดํ•˜๊ณ  AI ๊ทธ๋ฆผ ์ด์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (์ œ๊ฐ€ ๊ทธ๋ฆผ์„ ๋ชป๊ทธ๋ ค์„œ ใ…‹ใ…‹)



a15714ab041eb360be3335625683746f0053452ad6a4ec89d73c66f49f12cd6e452a35493a33a773c06a13ca8055


์ด๋ ‡๊ฒŒ ๋ฝ‘์€ ๋‹ค์Œ์— ํŽธ์ง‘ ํ›„ ๊ฒŒ์ž„์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.


์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœ์ผ์ง€ ๋ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•˜๊ณ  ๋‹ค์Œ ๊ฐœ๋ฐœ์ผ์ง€๋กœ ์ฐพ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค!!