参考藏语英语中文机器翻译入门实践_主流的藏汉机器翻译模型-CSDN博客

使用了来自Hugging Face平台上开源的预训练模型(Helsinki-NLP)

先将少数民族语言翻译成英语:
Helsinki‑NLP/opus‑mt‑mul‑en    多语到英译模型

再将英语翻译成中文:
Helsinki‑NLP/opus‑mt‑en‑zh    英译中模型,需在源句前加 “目标语言 token” >>zho_Hans<<(简体中文)

将模型下载到本地保存

python环境:Python 3.10

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from tqdm import tqdm  # 进度条,可选

# ① 加载模型与分词器 ----------------------------------------------------
print("⏳ 正在加载模型,请稍候……")
bo_en_name = "D:\\projects\\translation_project\\Helsinki-NLP\\opus-mt-mul-en"
en_zh_name = "D:\\projects\\translation_project\\Helsinki-NLP\\opus-mt-en-zh"

bo_en_tok = AutoTokenizer.from_pretrained(bo_en_name)
bo_en_model = AutoModelForSeq2SeqLM.from_pretrained(bo_en_name)

en_zh_tok = AutoTokenizer.from_pretrained(en_zh_name)
en_zh_model = AutoModelForSeq2SeqLM.from_pretrained(en_zh_name)

# ② 定义翻译函数 --------------------------------------------------------
def translate_step(text, tokenizer, model, prefix=""):
    """单步翻译:text->text"""
    # 需要时给英文→中文模型加前缀 token
    if prefix:
        text = prefix + " " + text
    inputs = tokenizer(text, return_tensors="pt")
    outputs = model.generate(
        **inputs,
        max_length=128,
        num_beams=4,
        early_stopping=True
    )
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

# ③ 交互式主程序 --------------------------------------------------------
def main():
    print("\n=== 原文 ➜ 英文 ➜ 中文 翻译器 ===")
    #while True:

    # 测试用例
    test_cases = [
        ("Hello, how are you today?", "en"),
        ("Bonjour, comment allez-vous?", "法语"), # 法语 fr
        ("བཀྲ་ཤིས་བདེ་ལེགས། ཁྱེད་རང་ལ་ཅི་དྲན་གསོད་ཡོད།", "藏语"),  # 藏语 bo
        ("سالام، قانداقسیز؟", "维吾尔语"),  # 维吾尔语 ug
        ("Привет, как дела?", "俄语"), # 俄语 ru
        ("こんにちは、お元気ですか?", "日语"), # 日语 ja
    ]

    for text, lang_code in test_cases:
        print(f"\n--- 翻译 ({lang_code}) ---")
        print(f"原文: {text}")

        # Step 1 藏→英
        english = translate_step(text, bo_en_tok, bo_en_model)
        print(f"[中间英文] {english}")

        # Step 2 英→中
        chinese = translate_step(
            english,
            en_zh_tok,
            en_zh_model,
            prefix=">>zho_Hans<<"  # 目标简体中文
        )
        print(f"[最终中文]  {chinese}")

    print("\n--- 翻译完成 ---")



if __name__ == "__main__":
    main()

运行结果如下:

⏳ 正在加载模型,请稍候……

=== 原文 ➜ 英文 ➜ 中文 翻译器 ===

--- 翻译 (en) ---
原文: Hello, how are you today?
[中间英文] Hello, how are you today?
[最终中文]  你好,你今天好吗?

--- 翻译 (法语) ---
原文: Bonjour, comment allez-vous?
[中间英文] Hello, how are you?
[最终中文]  你好,你好吗?

--- 翻译 (藏语) ---
原文: བཀྲ་ཤིས་བདེ་ལེགས། ཁྱེད་རང་ལ་ཅི་དྲན་གསོད་ཡོད།
[中间英文] Sorry, are you sure you want to do this?
[最终中文]  抱歉,你確定要這麼做嗎?

--- 翻译 (维吾尔语) ---
原文: سالام، قانداقسیز؟
[中间英文] Hey, how's it going?
[最终中文]  嘿,你好吗?

--- 翻译 (俄语) ---
原文: Привет, как дела?
[中间英文] Hey, how's it going?
[最终中文]  嘿,你好吗?

--- 翻译 (日语) ---
原文: こんにちは、お元気ですか?
[中间英文] Hello, how are you?
[最终中文]  你好,你好吗?

--- 翻译完成 ---

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐