当前位置: 首页 > news >正文

使用开源OPUS-MT模型进行文本翻译(python)

1. 环境准备

pip install transformers

2. 下载机器翻译模型:

2.1 代码从hugging face平台下载

from transformers import MarianMTModel, MarianTokenizer

# 指定模型名称
model_name = "Helsinki-NLP/opus-mt-zh-en"   # 中译英模型

# 下载并保存分词器到本地
tokenizer = MarianTokenizer.from_pretrained(model_name)
tokenizer.save_pretrained("./local_opus_mt_zh-en")

# 下载并保存模型到本地
model = MarianMTModel.from_pretrained(model_name)
model.save_pretrained("./local_opus_mt_zh-en")

2.2 手动下载模型

model_数据集-阿里云天池

2.3 加载模型进行翻译 

2.3.1 翻译文本

from transformers import MarianMTModel, MarianTokenizer

# 指定本地模型和分词器的路径
local_model_path = "./local_opus_mt_zh_en"

# 从本地加载分词器
tokenizer = MarianTokenizer.from_pretrained(local_model_path)

# 从本地加载模型
model = MarianMTModel.from_pretrained(local_model_path)

# 测试翻译
text = "你好"
inputs = tokenizer(text, return_tensors="pt")
translated = model.generate(**inputs)
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
print(translated_text)  # 输出: hello

2.3.2 翻译json串 

import json
from transformers import MarianMTModel, MarianTokenizer

# 指定本地模型和分词器的路径
local_model_path = "./local_opus_mt_zh_en"

# 从本地加载分词器
tokenizer = MarianTokenizer.from_pretrained(local_model_path)

# 从本地加载模型
model = MarianMTModel.from_pretrained(local_model_path)

# 输入的 JSON 字符串
input_json = '''
{
  "NUM1": "你好世界",
  "NUM2": "又是开心的一天:",
  "NUM3": "你在哪里",
  "NUM4": "嘿嘿嘿"
}
'''

# 解析 JSON 字符串
input_data = json.loads(input_json)

# 需要翻译的字段
fields_to_translate = ["NUM1", "NUM2","NUM3","NUM4"]

# 翻译函数
def translate_text(text, tokenizer, model):
    inputs = tokenizer(text, return_tensors="pt")
    translated = model.generate(**inputs)
    translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
    return translated_text

# 遍历需要翻译的字段并翻译
for field in fields_to_translate:
    if field in input_data:
        input_data[field] = translate_text(input_data[field], tokenizer, model)

# 将翻译后的数据转换为 JSON 字符串
output_json = json.dumps(input_data, ensure_ascii=False, indent=2)

# 打印输出
print(output_json)

2.4 使用gpu加速翻译

import time
import torch
from transformers import MarianMTModel, MarianTokenizer

# 指定本地模型和分词器的路径
local_model_path = "./local_opus_mt_zh_en"

# 从本地加载分词器
tokenizer = MarianTokenizer.from_pretrained(local_model_path)

# 从本地加载模型
model = MarianMTModel.from_pretrained(local_model_path)

# 检查是否有 GPU,并设置设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

# 测试翻译速度
text = "你好,世界!"
start_time = time.time()

# 将输入数据移动到 GPU
inputs = tokenizer(text, return_tensors="pt").to(device)

# 生成翻译结果
translated = model.generate(**inputs)

# 将结果移回 CPU 并解码
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)

end_time = time.time()
print(f"翻译结果: {translated_text}")
print(f"翻译耗时: {end_time - start_time:.4f} 秒")

相关文章:

  • android中activity1和activity2中接收定时消息
  • (C/S)架构、(B/S)架构
  • 粉尘环境下的智能生产革命 ——助力矿山行业实现高效自动化作业
  • 第九篇《行军篇》
  • 设计模式-单例模式
  • 【Javascript】计算器(Calculator)网页设计案例
  • NVIDIA Jetson Nano的国产替代,基于算能BM1684X+FPGA+AI算力盒子,支持deepseek边缘部署
  • 【Python项目】基于深度学习的电影评论情感分析系统
  • 机械臂路径规划方法综述(一)
  • 机器学习中的线性代数:奇异值分解 SVD
  • 汇编点亮LED
  • python文本处理openpyxl库安装与使用
  • 江科大51单片机笔记【9】DS1302时钟可调时钟(下)
  • 【五.LangChain技术与应用】【25.LangChain RAG检索器与完整案例:实战中的RAG应用】
  • Mac同时安装jdk8和jdk17,默认选择jdk8
  • 计算机组成与系统结构—袁春风阅读笔记(一)
  • 博查搜索API日调用量突破3000万次,达到Bing API的1/3。
  • 论文粗读——Isometric 3D Adversarial Examples in the Physical World
  • 【CSS】---- 纯 CSS 实现无限滚动轮播
  • Linux下AWK命令使用方法
  • 泽连斯基与美国副总统及国务卿会谈,讨论伊斯坦布尔谈判等问题
  • 83岁山水花鸟画家、书法家吴静山离世,系岭南画派代表人物
  • 俄乌代表团抵达谈判会场
  • 《日出》华丽的悲凉,何赛飞和赵文瑄演绎出来了
  • 媒体:中国女排前队长朱婷妹妹被保送浙大受质疑,多方回应
  • 黑龙江省政府副秘书长许振宇,拟任正厅级领导