项目介绍:indictrans2-indic-indic-dist-320M
项目背景
IndicTrans2是一个专注于印度各语言之间的机器翻译项目。此项目旨在提升并普及22种印度官方语言之间的翻译质量,以提高这些语言的可访问性和交流效率。项目通过结合之前的印地语-英语双向翻译模型,形成了更加精密的Indic-Indic Distilled 320M版本。
支持语言与语言细节
IndicTrans2支持包括阿萨姆语(as)、孟加拉语(bn)、博多语(brx)、多格拉语(doi)、贡坎尼语(gom)、古吉拉特语(gu)等语言,每种语言都有其特定的书写脚本,比如孟加拉语使用Beng、将古拉拉特语用Gujr等特殊编码。
项目标签
- indictrans2: 项目用作描述某个特定翻译模型的标签
- 翻译: 本项目的核心功能
- ai4bharat: 项目的发起组织,推动技术发展以推动印度社会进步
- 多语言: 涉及多种语言之间的翻译
授权与数据集
此项目遵循MIT许可协议,意味着可以自由分享和修改。在数据集方面,项目利用了FLORES-200、IN22-Gen和IN22-Conv等数据集进行模型训练与测试。
评价指标
为了评价模型的翻译质量,项目采用了多种评价指标,包括BLEU、CHRF、CHRF++和COMET。这些指标在国际上都被广泛用于机器翻译的评估。
使用说明
IndicTrans2可通过Hugging Face平台便捷访问使用。用户可以通过GitHub代码库找到详细的使用教程。项目集成了AutoTokenizer和IndicProcessor工具,可以帮助用户进行前处理和翻译。
使用样例
在IndicTrans2中,可以通过简单的Python代码实现翻译。首先导入必要的模块,然后从预训练模型中加载tokenizer和模型。IndicProcessor负责前处理输入文本以及后处理翻译结果。具体可参考以下Python代码片段:
import torch
from transformers import (
AutoModelForSeq2SeqLM,
AutoTokenizer,
)
from IndicTransToolkit import IndicProcessor
model_name = "ai4bharat/indictrans2-indic-indic-dist-320M"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name, trust_remote_code=True)
ip = IndicProcessor(inference=True)
input_sentences = [
# 示例句子
]
src_lang, tgt_lang = "hin_Deva", "tam_Taml"
batch = ip.preprocess_batch(
input_sentences,
src_lang=src_lang,
tgt_lang=tgt_lang,
)
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
# 分词及生成输入编码
inputs = tokenizer(
batch,
truncation=True,
padding="longest",
return_tensors="pt",
return_attention_mask=True,
).to(DEVICE)
# 使用模型生成翻译
with torch.no_grad():
generated_tokens = model.generate(
**inputs,
use_cache=True,
min_length=0,
max_length=256,
num_beams=5,
num_return_sequences=1,
)
# 解码生成的tokens为文本
with tokenizer.as_target_tokenizer():
generated_tokens = tokenizer.batch_decode(
generated_tokens.detach().cpu().tolist(),
skip_special_tokens=True,
clean_up_tokenization_spaces=True,
)
# 后处理翻译结果
translations = ip.postprocess_batch(generated_tokens, lang=tgt_lang)
for input_sentence, translation in zip(input_sentences, translations):
print(f"{src_lang}: {input_sentence}")
print(f"{tgt_lang}: {translation}")
注意:虽然IndicTrans2现已兼容AutoTokenizer,但用户需要在分词前使用IndicProcessor进行前处理。
如果您考虑引用本项目,请参考以下引用格式
@article{gala2023indictrans,
title={IndicTrans2: Towards High-Quality and Accessible Machine Translation Models for all 22 Scheduled Indian Languages},
author={Jay Gala and Pranjal A Chitale and A K Raghavan and Varun Gumma and Sumanth Doddapaneni and Aswanth Kumar M and Janki Atul Nawale and Anupama Sujatha and Ratish Puduppully and Vivek Raghavan and Pratyush Kumar and Mitesh M Khapra and Raj Dabre and Anoop Kunchukuttan},
journal={Transactions on Machine Learning Research},
issn={2835-8856},
year={2023},
url={https://openreview.net/forum?id=vfT4YuzAYA},
note={}
}
本项目对于推动印度多语言机器翻译的研究具有重要意义,这不仅促进了技术发展的前沿研究,也在一定程度上丰富了社会的多元文化交流。