Correccion de logica para llm_translate en el caso de no traducir todo
This commit is contained in:
parent
39bfeb9355
commit
db236afd6d
|
@ -10,12 +10,12 @@ client = OpenAI(api_key=api_key())
|
||||||
|
|
||||||
# Diccionario de idiomas
|
# Diccionario de idiomas
|
||||||
IDIOMAS = {
|
IDIOMAS = {
|
||||||
1: ("English", "en"),
|
1: ("English", "en-GB"),
|
||||||
2: ("Portuguese", "pt"),
|
2: ("Portuguese", "pt-PT"),
|
||||||
3: ("Spanish", "es"),
|
3: ("Spanish", "es-ES"),
|
||||||
4: ("Russian", "ru"),
|
4: ("Russian", "ru-RU"),
|
||||||
5: ("French", "fr"),
|
5: ("French", "fr-FR"),
|
||||||
6: ("German", "de"),
|
6: ("German", "de-DE"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,6 +65,7 @@ def translate_batch(texts, source_lang, target_lang):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Solicitando traducción de {source_lang} a {target_lang} para el lote de textos:\n{joined_text}"
|
f"Solicitando traducción de {source_lang} a {target_lang} para el lote de textos:\n{joined_text}"
|
||||||
)
|
)
|
||||||
|
print("Traduciendo batch ... ")
|
||||||
response = client.chat.completions.create(
|
response = client.chat.completions.create(
|
||||||
model="gpt-3.5-turbo",
|
model="gpt-3.5-turbo",
|
||||||
messages=[
|
messages=[
|
||||||
|
@ -79,6 +80,7 @@ def translate_batch(texts, source_lang, target_lang):
|
||||||
)
|
)
|
||||||
translations = response.choices[0].message.content.strip().split("\n")
|
translations = response.choices[0].message.content.strip().split("\n")
|
||||||
logger.info(f"Respuestas recibidas:\n{translations}")
|
logger.info(f"Respuestas recibidas:\n{translations}")
|
||||||
|
print("Recibida traduccion.")
|
||||||
return translations
|
return translations
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,30 +99,32 @@ def texto_requiere_traduccion(texto):
|
||||||
def main(file_path, target_lang_code, traducir_todo, batch_size=10):
|
def main(file_path, target_lang_code, traducir_todo, batch_size=10):
|
||||||
df = pd.read_excel(file_path)
|
df = pd.read_excel(file_path)
|
||||||
source_col = "it-IT"
|
source_col = "it-IT"
|
||||||
|
source_translated_col = target_lang_code
|
||||||
target_col = f"{target_lang_code} Translated"
|
target_col = f"{target_lang_code} Translated"
|
||||||
|
|
||||||
if target_col in df.columns and not traducir_todo:
|
# Asegurarse de que la columna de destino existe
|
||||||
df[target_col] = df[target_col]
|
if target_col not in df.columns:
|
||||||
else:
|
|
||||||
df[target_col] = None
|
df[target_col] = None
|
||||||
|
|
||||||
texts_to_translate = []
|
texts_to_translate = []
|
||||||
indices_to_translate = []
|
indices_to_translate = []
|
||||||
|
|
||||||
if traducir_todo:
|
for index, row in df.iterrows():
|
||||||
for index, text in df[source_col].astype(str).items():
|
source_text = str(row[source_col])
|
||||||
processed_text = transformar_texto(text)
|
source_translated_text = str(row[source_translated_col]) if source_translated_col in df.columns else ""
|
||||||
|
processed_text = transformar_texto(source_text)
|
||||||
|
|
||||||
|
if traducir_todo:
|
||||||
|
# Traducir todas las celdas del idioma de destino
|
||||||
if texto_requiere_traduccion(processed_text):
|
if texto_requiere_traduccion(processed_text):
|
||||||
texts_to_translate.append(text)
|
texts_to_translate.append(processed_text)
|
||||||
indices_to_translate.append(index)
|
|
||||||
else:
|
|
||||||
for index, text in (
|
|
||||||
df.loc[df[target_col].isnull(), source_col].astype(str).items()
|
|
||||||
):
|
|
||||||
processed_text = transformar_texto(text)
|
|
||||||
if texto_requiere_traduccion(processed_text):
|
|
||||||
texts_to_translate.append(text)
|
|
||||||
indices_to_translate.append(index)
|
indices_to_translate.append(index)
|
||||||
|
else:
|
||||||
|
# Traducir solo las celdas vacías en el idioma de destino original
|
||||||
|
if pd.isna(row[source_translated_col]) or source_translated_text.strip() == "":
|
||||||
|
if texto_requiere_traduccion(processed_text):
|
||||||
|
texts_to_translate.append(processed_text)
|
||||||
|
indices_to_translate.append(index)
|
||||||
|
|
||||||
num_texts = len(texts_to_translate)
|
num_texts = len(texts_to_translate)
|
||||||
logger.info(f"Número total de textos a traducir: {num_texts}")
|
logger.info(f"Número total de textos a traducir: {num_texts}")
|
||||||
|
@ -129,15 +133,13 @@ def main(file_path, target_lang_code, traducir_todo, batch_size=10):
|
||||||
for start_idx in range(0, num_texts, batch_size):
|
for start_idx in range(0, num_texts, batch_size):
|
||||||
end_idx = min(start_idx + batch_size, num_texts)
|
end_idx = min(start_idx + batch_size, num_texts)
|
||||||
batch_texts = texts_to_translate[start_idx:end_idx]
|
batch_texts = texts_to_translate[start_idx:end_idx]
|
||||||
batch_translations = translate_batch(batch_texts, "Italian", target_lang_code)
|
batch_translations = translate_batch(batch_texts, 'Italian', target_lang_code)
|
||||||
translations.extend(batch_translations)
|
translations.extend(batch_translations)
|
||||||
|
|
||||||
logger.info(f"Número total de traducciones recibidas: {len(translations)}")
|
logger.info(f"Número total de traducciones recibidas: {len(translations)}")
|
||||||
|
|
||||||
if len(translations) != len(indices_to_translate):
|
if len(translations) != len(indices_to_translate):
|
||||||
logger.warning(
|
logger.warning(f"Desajuste entre el número de traducciones ({len(translations)}) y el número de índices ({len(indices_to_translate)})")
|
||||||
f"Desajuste entre el número de traducciones ({len(translations)}) y el número de índices ({len(indices_to_translate)})"
|
|
||||||
)
|
|
||||||
|
|
||||||
for i, index in enumerate(indices_to_translate):
|
for i, index in enumerate(indices_to_translate):
|
||||||
if i < len(translations):
|
if i < len(translations):
|
||||||
|
@ -145,9 +147,7 @@ def main(file_path, target_lang_code, traducir_todo, batch_size=10):
|
||||||
else:
|
else:
|
||||||
logger.error(f"No hay traducción disponible para el índice {index}")
|
logger.error(f"No hay traducción disponible para el índice {index}")
|
||||||
|
|
||||||
output_path = os.path.join(
|
output_path = os.path.join(os.path.dirname(file_path), 'master_export2translate_translated.xlsx')
|
||||||
os.path.dirname(file_path), "master_export2translate_translated.xlsx"
|
|
||||||
)
|
|
||||||
df.to_excel(output_path, index=False)
|
df.to_excel(output_path, index=False)
|
||||||
logger.info(f"Archivo traducido guardado en: {output_path}")
|
logger.info(f"Archivo traducido guardado en: {output_path}")
|
||||||
print(f"Archivo traducido guardado en: {output_path}")
|
print(f"Archivo traducido guardado en: {output_path}")
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,47 @@
|
||||||
|
2024-07-30 16:11:05,490 - DEBUG - Decisión de traducción para texto ' SK<#>F': No (palabras > 3 letras: False, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,491 - DEBUG - Decisión de traducción para texto ' SK<#>T': No (palabras > 3 letras: False, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,491 - DEBUG - Decisión de traducción para texto '### ERRORE ###': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'Bypass': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - Attesa EBI': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - Attesa FBI': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - ': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - Pressure sensor Maximun reached': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - Tank under minimun level': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - Stop Filler for Overtemperature': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,492 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General -': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - Signals Forced': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'W<#>/<#>/<#> General - Richiesta Di Calibrazione Da FBI': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'Waiting for product': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'Waiting Infeed Selector Enable': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'Waiting Minimal Accumulation': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'Warnings': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'Watchdog del sistema': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'Water supply': Sí (palabras > 3 letras: True, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'X<#> M<#>': No (palabras > 3 letras: False, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - DEBUG - Decisión de traducción para texto 'YV<#>': No (palabras > 3 letras: False, solo campos especiales: True)
|
||||||
|
2024-07-30 16:11:05,493 - INFO - Número total de textos a traducir: 17
|
||||||
|
2024-07-30 16:11:05,493 - INFO - Solicitando traducción de Italian a ru-RU para el lote de textos:
|
||||||
|
### ERRORE ###
|
||||||
|
Bypass
|
||||||
|
W<#>/<#>/<#> General - Attesa EBI
|
||||||
|
W<#>/<#>/<#> General - Attesa FBI
|
||||||
|
W<#>/<#>/<#> General -
|
||||||
|
W<#>/<#>/<#> General - Pressure sensor Maximun reached
|
||||||
|
W<#>/<#>/<#> General - Tank under minimun level
|
||||||
|
W<#>/<#>/<#> General - Stop Filler for Overtemperature
|
||||||
|
W<#>/<#>/<#> General -
|
||||||
|
W<#>/<#>/<#> General - Signals Forced
|
||||||
|
2024-07-30 16:11:08,884 - INFO - Respuestas recibidas:
|
||||||
|
['### ОШИБКА ###', 'Обход', 'W<#>/<#>/<#> Общее - Ожидание EBI', 'W<#>/<#>/<#> Общее - Ожидание FBI', 'W<#>/<#>/<#> Общее - ', 'W<#>/<#>/<#> Общее - Достигнут максимум датчика давления', 'W<#>/<#>/<#> Общее - Резервуар ниже минимального уровня', 'W<#>/<#>/<#> Общее - Остановка насоса из-за перегрева', 'W<#>/<#>/<#> Общее -', 'W<#>/<#>/<#> Общее - Принудительные сигналы']
|
||||||
|
2024-07-30 16:11:08,884 - INFO - Solicitando traducción de Italian a ru-RU para el lote de textos:
|
||||||
|
W<#>/<#>/<#> General - Richiesta Di Calibrazione Da FBI
|
||||||
|
Waiting for product
|
||||||
|
Waiting Infeed Selector Enable
|
||||||
|
Waiting Minimal Accumulation
|
||||||
|
Warnings
|
||||||
|
Watchdog del sistema
|
||||||
|
Water supply
|
||||||
|
2024-07-30 16:11:10,624 - INFO - Respuestas recibidas:
|
||||||
|
['W<#>/<#>/<#> Генерал - Запрос на калибровку от ФБР', 'Ожидание продукта', 'Ожидание активации селектора подачи', 'Ожидание минимальной накопительной способности', 'Предупреждения', 'Дежурный системы', 'Подача воды']
|
||||||
|
2024-07-30 16:11:10,624 - INFO - Número total de traducciones recibidas: 17
|
||||||
|
2024-07-30 16:11:10,669 - INFO - Archivo traducido guardado en: master_export2translate_translated.xlsx
|
Loading…
Reference in New Issue