# 机器翻译
# 简介
机器翻译(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)。
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 | 祖鲁语(拉丁文) |