少数民族语言(藏语,维吾尔语等)翻译为中文
本文介绍了使用Helsinki-NLP开源预训练模型实现多语言机器翻译的流程。通过Python调用HuggingFace平台提供的opus-mt-mul-en(多语言到英语)和opus-mt-en-zh(英语到中文)模型,构建了一个两步式翻译系统。文章详细展示了模型加载、翻译函数定义和交互式测试的实现过程,并以藏语、法语等6种语言为例进行测试验证。测试结果显示,该系统能有效完成多语言到中文的翻译任
·
参考藏语英语中文机器翻译入门实践_主流的藏汉机器翻译模型-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?
[最终中文] 你好,你好吗?
--- 翻译完成 ---
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)