# 机器翻译

# 简介

机器翻译(Machine Translation,简称MT)是指利用计算机程序将一种自然语言自动翻译成另一种自然语言的技术。它是自然语言处理(NLP)领域的重要分支,广泛应用于跨语言交流、信息获取、多语言内容生成等场景。早期的机器翻译主要依赖规则和词典,后来发展为基于统计的翻译方法(如SMT),而近年来,随着深度学习的发展,神经机器翻译(Neural Machine Translation,NMT)已成为主流技术,代表系统如谷歌翻译、DeepL 等。NMT通常使用编码器-解码器结构,能够在保持语义的同时,更加自然流畅地生成目标语言文本,大幅提升了翻译的准确性与可读性。

200多种语言互相翻译

# 安装

# 1、环境要求

  • Java 版本:JDK 8或更高版本
  • 操作系统:Windows/Linux/MacOS

注意事项:

macos M系列芯片,目前不支持JDK8使用,最低请使用JDK11

# 2、Maven

在项目的 pom.xml 中添加以下依赖以及平台依赖库,详细引入方式参考 Maven 引入。如需引入全部功能,请使用 smartjavaai-all 模块。

<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>smartjavaai-translate</artifactId>
    <version>1.0.17</version>
</dependency>

# 3、模型介绍及下载

# NLLB-200模型

NLLB (No Language Left Behind) 是由 Meta AI 开发的一个先进的单一多语言机器翻译模型。根据官网信息,该模型的核心目标是推动高质量机器翻译技术的民主化,特别关注提升低资源语言(low-resource languages)的翻译质量。NLLB 模型能够直接在 200 种不同语言之间进行翻译,覆盖了广泛的语言谱系,包括许多资源匮乏的语言。其关键贡献在于显著提升了这些低资源语言的翻译质量(官网指出在 FLORES-101 基准测试中,对于许多低资源语言,其翻译质量相比之前最好的技术平均提升了 44%)。为了支持研究社区和实际应用,Meta 已开源发布了 NLLB-200 模型(包括多个规模版本,如 NLLB-200 Distilled 600M)、用于训练的数据集(NLLB-Seed)以及评测基准(FLORES-200)。

官网地址 (opens new window)

Github开源项目地址 (opens new window)

Huggingface地址 (opens new window)

NLLB-200模型下载链接 (opens new window): https://pan.baidu.com/s/1O_073YowEC5mb0DaAPfkTQ?pwd=1234 提取码: 1234

# 翻译

获取翻译模型:

TranslationModelConfig config = new TranslationModelConfig();
config.setModelEnum(TranslationModeEnum.NLLB_MODEL);
config.setModelPath("/Users/xxx/Documents/develop/model/trans/traced_translation_cpu.pt");
TranslationModel translationModel = TranslationModelFactory.getInstance().getModel(config);

TranslationModelConfig参数说明

字段名称 字段类型 必选 默认值 说明
modelEnum TranslationModeEnum 翻译模型枚举
modelPath String 模型路径,需手动指定
device DeviceEnum CPU 指定运行设备,支持 CPU/GPU

注意事项:

CPU 与 GPU 使用的模型文件不同,设置 modelPath 时请确保选择与设备对应的模型路径。

翻译方法

R<String> translate(TranslateParam translateParam)

TranslateParam参数说明

字段名称 字段类型 必选 默认值 说明
input String 待翻译文本
sourceLanguage LanguageCode 源语言枚举
targetLanguage LanguageCode 目标语言枚举

返回结果说明:R<String>

R<T> 是一个统一的返回结果封装类(Response Wrapper),用于标准化接口返回结构,便于前端或调用方统一处理。

包含以下字段:

字段名 类型 说明
code Integer 状态码,通常 0 表示成功,非 0 表示失败
message String 提示信息,例如 "ok"
data T(此处是 String 实际返回的翻译结果

注意事项:

1、NLLB 模型支持的最大翻译输入为 1024 个 token。

2、翻译过程通常需要几秒钟,若文本较长或使用的是普通 CPU,翻译时间可能会略有延长。

以下是所有语言枚举:

枚举名称 注释
ACE_ARAB 亚齐语(阿拉伯文)
ACE_LATN 亚齐语(拉丁文)
ACM_ARAB 美索不达米亚阿拉伯语(阿拉伯文)
ACQ_ARAB 南也门阿拉伯语(阿拉伯文)
AEB_ARAB 突尼斯阿拉伯语(阿拉伯文)
AFR_LATN 南非荷兰语(拉丁文)
AJP_ARAB 南黎凡特阿拉伯语(阿拉伯文)
AKA_LATN 阿坎语(拉丁文)
AMH_ETHI 阿姆哈拉语(吉兹字母)
APC_ARAB 北黎凡特阿拉伯语(阿拉伯文)
ARB_ARAB 标准阿拉伯语(阿拉伯文)
ARS_ARAB 纳吉迪阿拉伯语(阿拉伯文)
ARY_ARAB 摩洛哥阿拉伯语(阿拉伯文)
ARZ_ARAB 埃及阿拉伯语(阿拉伯文)
ASM_BENG 阿萨姆语(孟加拉文)
AST_LATN 阿斯图里亚斯语(拉丁文)
AWA_DEVA 阿瓦德语(天城文)
AYR_LATN 南艾马拉语(拉丁文)
AZB_ARAB 南阿塞拜疆语(阿拉伯文)
AZJ_LATN 北阿塞拜疆语(拉丁文)
BAK_CYRL 巴什基尔语(西里尔文)
BAM_LATN 班巴拉语(拉丁文)
BAN_LATN 巴厘语(拉丁文)
BEL_CYRL 白俄罗斯语(西里尔文)
BEM_LATN 本巴语(拉丁文)
BEN_BENG 孟加拉语(孟加拉文)
BHO_DEVA 博杰普尔语(天城文)
BJN_ARAB 班贾尔语(阿拉伯文)
BJN_LATN 班贾尔语(拉丁文)
BOD_TIBT 藏语(藏文)
BOS_LATN 波斯尼亚语(拉丁文)
BUG_LATN 布吉语(拉丁文)
BUL_CYRL 保加利亚语(西里尔文)
CAT_LATN 加泰罗尼亚语(拉丁文)
CEB_LATN 宿务语(拉丁文)
CES_LATN 捷克语(拉丁文)
CJK_LATN 琼卡语(拉丁文)
CKB_ARAB 中库尔德语(阿拉伯文)
CRH_LATN 克里米亚鞑靼语(拉丁文)
CYM_LATN 威尔士语(拉丁文)
DAN_LATN 丹麦语(拉丁文)
DEU_LATN 德语(拉丁文)
DIK_LATN 南丁卡语(拉丁文)
DYU_LATN 迪尤拉语(拉丁文)
DZO_TIBT 宗喀语(藏文)
ELL_GREK 希腊语(希腊文)
ENG_LATN 英语(拉丁文)
EPO_LATN 世界语(拉丁文)
EST_LATN 爱沙尼亚语(拉丁文)
EUS_LATN 巴斯克语(拉丁文)
EWE_LATN 埃维语(拉丁文)
FAO_LATN 法罗语(拉丁文)
PES_ARAB 波斯语(阿拉伯文)
FIJ_LATN 斐济语(拉丁文)
FIN_LATN 芬兰语(拉丁文)
FON_LATN 丰语(拉丁文)
FRA_LATN 法语(拉丁文)
FUR_LATN 弗留利语(拉丁文)
FUV_LATN 富拉语(拉丁文)
GLA_LATN 苏格兰盖尔语(拉丁文)
GLE_LATN 爱尔兰语(拉丁文)
GLG_LATN 加利西亚语(拉丁文)
GRN_LATN 瓜拉尼语(拉丁文)
GUJ_GUJR 古吉拉特语(古吉拉特文)
HAT_LATN 海地克里奥尔语(拉丁文)
HAU_LATN 豪萨语(拉丁文)
HEB_HEBR 希伯来语(希伯来文)
HIN_DEVA 印地语(天城文)
HNE_DEVA 丘德语(天城文)
HRV_LATN 克罗地亚语(拉丁文)
HUN_LATN 匈牙利语(拉丁文)
HYE_ARMN 亚美尼亚语(亚美尼亚文)
IBO_LATN 伊博语(拉丁文)
ILO_LATN 伊洛卡诺语(拉丁文)
IND_LATN 印尼语(拉丁文)
ISL_LATN 冰岛语(拉丁文)
ITA_LATN 意大利语(拉丁文)
JAV_LATN 爪哇语(拉丁文)
JPN_JPAN 日语(日文)
KAB_LATN 卡拜尔语(拉丁文)
KAC_LATN 克钦语(拉丁文)
KAM_LATN 卡姆巴语(拉丁文)
KAN_KNDA 卡纳达语(卡纳达文)
KAS_ARAB 克什米尔语(阿拉伯文)
KAS_DEVA 克什米尔语(天城文)
KAT_GEOR 格鲁吉亚语(格鲁吉亚文)
KNC_ARAB 中卡努里语(阿拉伯文)
KNC_LATN 中卡努里语(拉丁文)
KAZ_CYRL 哈萨克语(西里尔文)
KBP_LATN 卡比耶语(拉丁文)
KEA_LATN 卡布佛得鲁语(拉丁文)
KHM_KHMR 高棉语(高棉文)
KIK_LATN 基库尤语(拉丁文)
KIN_LATN 卢旺达语(拉丁文)
KIR_CYRL 柯尔克孜语(西里尔文)
KMB_LATN 金邦杜语(拉丁文)
KON_LATN 刚果语(拉丁文)
KOR_HANG 韩语(韩文)
KMR_LATN 北库尔德语(拉丁文)
LAO_LAOO 老挝语(老挝文)
LVS_LATN 标准拉脱维亚语(拉丁文)
LIJ_LATN 利古里亚语(拉丁文)
LIM_LATN 林堡语(拉丁文)
LIN_LATN 林加拉语(拉丁文)
LIT_LATN 立陶宛语(拉丁文)
LMO_LATN 伦巴第语(拉丁文)
LTG_LATN 拉特加莱语(拉丁文)
LTZ_LATN 卢森堡语(拉丁文)
LUA_LATN 卢巴-卢拉语(拉丁文)
LUG_LATN 卢干达语(拉丁文)
LUO_LATN 卢奥语(拉丁文)
LUS_LATN 米佐语(拉丁文)
MAG_DEVA 摩揭陀语(天城文)
MAI_DEVA 迈蒂利语(天城文)
MAL_MLYM 马拉雅拉姆语(马拉雅拉姆文)
MAR_DEVA 马拉地语(天城文)
MIN_LATN 米南佳保语(拉丁文)
MKD_CYRL 马其顿语(西里尔文)
PLT_LATN 高原马达加斯加语(拉丁文)
MLT_LATN 马耳他语(拉丁文)
MNI_BENG 曼尼普尔语(孟加拉文)
KHK_CYRL 蒙古语(西里尔文)
MOS_LATN 莫西语(拉丁文)
MRI_LATN 毛利语(拉丁文)
ZSM_LATN 标准马来语(拉丁文)
MYA_MYMR 缅甸语(缅甸文)
NLD_LATN 荷兰语(拉丁文)
NNO_LATN 新挪威语(拉丁文)
NOB_LATN 书面挪威语(拉丁文)
NPI_DEVA 尼泊尔语(天城文)
NSO_LATN 北索托语(拉丁文)
NUS_LATN 努埃尔语(拉丁文)
NYA_LATN 齐切瓦语(拉丁文)
OCI_LATN 奥克语(拉丁文)
GAZ_LATN 西奥莫罗语(拉丁文)
ORY_ORYA 奥里亚语(奥里亚文)
PAG_LATN 邦阿西楠语(拉丁文)
PAN_GURU 旁遮普语(果鲁穆奇文)
PAP_LATN 帕皮阿门托语(拉丁文)
POL_LATN 波兰语(拉丁文)
POR_LATN 葡萄牙语(拉丁文)
PRS_ARAB 达里语(阿拉伯文)
PBT_ARAB 南普什图语(阿拉伯文)
QUY_LATN 丘尤钱卡语(拉丁文)
RON_LATN 罗马尼亚语(拉丁文)
RUN_LATN 隆迪语(拉丁文)
RUS_CYRL 俄语(西里尔文)
SAG_LATN 桑戈语(拉丁文)
SAN_DEVA 梵语(天城文)
SAT_BENG 桑塔利语(孟加拉文)
SCN_LATN 西西里语(拉丁文)
SHN_MYMR 掸语(缅甸文)
SIN_SINH 僧伽罗语(僧伽罗文)
SLK_LATN 斯洛伐克语(拉丁文)
SLV_LATN 斯洛文尼亚语(拉丁文)
SMO_LATN 萨摩亚语(拉丁文)
SNA_LATN 绍纳语(拉丁文)
SND_ARAB 信德语(阿拉伯文)
SOM_LATN 索马里语(拉丁文)
SOT_LATN 南索托语(拉丁文)
SPA_LATN 西班牙语(拉丁文)
ALS_LATN 托萨语(拉丁文)
SRD_LATN 撒丁语(拉丁文)
SRP_CYRL 塞尔维亚语(西里尔文)
SSW_LATN 斯威士语(拉丁文)
SUN_LATN 巽他语(拉丁文)
SWE_LATN 瑞典语(拉丁文)
SWH_LATN 斯瓦希里语(拉丁文)
SZL_LATN 西里西亚语(拉丁文)
TAM_TAML 泰米尔语(泰米尔文)
TAT_CYRL 鞑靼语(西里尔文)
TEL_TELU 泰卢固语(泰卢固文)
TGK_CYRL 塔吉克语(西里尔文)
TGL_LATN 他加禄语(拉丁文)
THA_THAI 泰语(泰文)
TIR_ETHI 提格里尼亚语(吉兹字母)
TAQ_LATN 塔马舍克语(拉丁文)
TAQ_TFNG 塔马舍克语(提非纳文)
TPI_LATN 托克皮辛语(拉丁文)
TSN_LATN 茨瓦纳语(拉丁文)
TSO_LATN 聪加语(拉丁文)
TUK_LATN 土库曼语(拉丁文)
TUM_LATN 通布卡语(拉丁文)
TUR_LATN 土耳其语(拉丁文)
TWI_LATN 契维语(拉丁文)
TZM_TFNG 塔马齐格特语(提非纳文)
UIG_ARAB 维吾尔语(阿拉伯文)
UKR_CYRL 乌克兰语(西里尔文)
UMB_LATN 翁本杜语(拉丁文)
URD_ARAB 乌尔都语(阿拉伯文)
UZN_LATN 乌兹别克语(拉丁文)
VEC_LATN 威尼斯语(拉丁文)
VIE_LATN 越南语(拉丁文)
WAR_LATN 瓦瑞语(拉丁文)
WOL_LATN 沃洛夫语(拉丁文)
XHO_LATN 科萨语(拉丁文)
YDD_HEBR 东意第绪语(希伯来文)
YOR_LATN 约鲁巴语(拉丁文)
YUE_HANT 粤语(繁体中文)
ZHO_HANS 中文(简体中文)
ZHO_HANT 中文(繁体中文)
ZUL_LATN 祖鲁语(拉丁文)

# 完整示例代码

示例代码 (opens new window)

# 离线使用

离线使用请看文档