diff --git a/.ipynb_checkpoints/ULTRAMegaOB-checkpoint.py b/.ipynb_checkpoints/ULTRAMegaOB-checkpoint.py index fbde2fe00dcaae0bc639a9059ff5c18d0cc2831d..dc81a01ef7c56a9f23c8253602a23b06a4aa374f 100644 --- a/.ipynb_checkpoints/ULTRAMegaOB-checkpoint.py +++ b/.ipynb_checkpoints/ULTRAMegaOB-checkpoint.py @@ -235,7 +235,7 @@ def compute_metrics(p): # return [text] def augment_text(text, num_augments): - """Безопасная генерация аугментированных примеров""" + """Упрощенная аугментация с обработкой ошибок""" try: if len(text) > 1000: return [text[:1000]] # Обрезаем слишком длинные тексты @@ -246,21 +246,27 @@ def augment_text(text, num_augments): text = text.replace('\n', ' ').strip() augmented = set([text]) # Начинаем с оригинала - # Английские синонимы - try: - eng_augs = synonym_aug.augment(text, n=num_augments) - if eng_augs: - augmented.update(a for a in eng_augs if isinstance(a, str)) - except Exception as e: - logger.warning(f"Ошибка английской аугментации: {str(e)}") + # Попробуем английские синонимы (если текст похож на английский) + if not any(cyr_char in text for cyr_char in 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'): + try: + eng_augs = synonym_aug.augment(text, n=num_augments) + if eng_augs: + augmented.update(a for a in eng_augs if isinstance(a, str)) + except Exception as e: + logger.debug(f"Английская аугментация пропущена: {str(e)}") - # Русские синонимы + # Всегда пробуем обратный перевод (более стабильный метод) try: - ru_augs = ru_synonym_aug.augment(text, n=num_augments) - if ru_augs: - augmented.update(a for a in ru_augs if isinstance(a, str)) + if any(cyr_char in text for cyr_char in 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'): + tr_augs = translation_aug_ru.augment(text, n=num_augments) + else: + tr_augs = translation_aug.augment(text, n=num_augments) + + if tr_augs: + augmented.update(a.replace(' ##', '') for a in tr_augs + if isinstance(a, str) and a is not None) except Exception as e: - logger.warning(f"Ошибка русской аугментации: {str(e)}") + logger.debug(f"Обратный перевод пропущен: {str(e)}") return list(augmented)[:num_augments] if augmented else [text] diff --git a/ULTRAMegaOB.py b/ULTRAMegaOB.py index fbde2fe00dcaae0bc639a9059ff5c18d0cc2831d..dc81a01ef7c56a9f23c8253602a23b06a4aa374f 100644 --- a/ULTRAMegaOB.py +++ b/ULTRAMegaOB.py @@ -235,7 +235,7 @@ def compute_metrics(p): # return [text] def augment_text(text, num_augments): - """Безопасная генерация аугментированных примеров""" + """Упрощенная аугментация с обработкой ошибок""" try: if len(text) > 1000: return [text[:1000]] # Обрезаем слишком длинные тексты @@ -246,21 +246,27 @@ def augment_text(text, num_augments): text = text.replace('\n', ' ').strip() augmented = set([text]) # Начинаем с оригинала - # Английские синонимы - try: - eng_augs = synonym_aug.augment(text, n=num_augments) - if eng_augs: - augmented.update(a for a in eng_augs if isinstance(a, str)) - except Exception as e: - logger.warning(f"Ошибка английской аугментации: {str(e)}") + # Попробуем английские синонимы (если текст похож на английский) + if not any(cyr_char in text for cyr_char in 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'): + try: + eng_augs = synonym_aug.augment(text, n=num_augments) + if eng_augs: + augmented.update(a for a in eng_augs if isinstance(a, str)) + except Exception as e: + logger.debug(f"Английская аугментация пропущена: {str(e)}") - # Русские синонимы + # Всегда пробуем обратный перевод (более стабильный метод) try: - ru_augs = ru_synonym_aug.augment(text, n=num_augments) - if ru_augs: - augmented.update(a for a in ru_augs if isinstance(a, str)) + if any(cyr_char in text for cyr_char in 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'): + tr_augs = translation_aug_ru.augment(text, n=num_augments) + else: + tr_augs = translation_aug.augment(text, n=num_augments) + + if tr_augs: + augmented.update(a.replace(' ##', '') for a in tr_augs + if isinstance(a, str) and a is not None) except Exception as e: - logger.warning(f"Ошибка русской аугментации: {str(e)}") + logger.debug(f"Обратный перевод пропущен: {str(e)}") return list(augmented)[:num_augments] if augmented else [text]