使用EasyNMT英译德时,如何跳过已为德语的行?
仅翻译英语行、跳过德语行的EasyNMT实现方案
你可以通过语言检测实现需求:先判断每行文本的语言,仅对英语内容执行翻译,德语内容直接保留原文本。以下是修改后的代码:
import pandas as pd, warnings from easynmt import EasyNMT from langdetect import detect, LangDetectException warnings.filterwarnings('ignore') model = EasyNMT('opus-mt') df = pd.read_excel('test.xlsx') def en_de(x): try: # 检测文本语言 lang = detect(x) if lang == 'en': # 仅英语内容执行翻译 return model.translate(x, source_lang='en', target_lang='de') else: # 非英语内容直接返回原文本 return x except LangDetectException: # 处理无法检测语言的情况,直接返回原文本 return x df['col_tl'] = df['col1'].apply(en_de)
关键说明:
- 引入
langdetect库实现语言自动检测,需先通过pip install langdetect安装该库 - 加入异常捕获
LangDetectException,避免因短文本或无意义内容导致的检测失败中断程序 - 仅当检测到语言为英语(
lang == 'en')时才调用翻译接口,德语或其他语言内容直接返回原值
内容的提问来源于stack exchange,提问作者CW_2434
相关产品推荐
相关产品推荐

