A newer version of the Gradio SDK is available: 6.19.0
title: English → Indian Languages Machine Translation
emoji: 🌐
colorFrom: green
colorTo: purple
sdk: gradio
sdk_version: 6.12.0
app_file: app.py
pinned: false
🌐 English → Indian Languages Machine Translation
A complete machine translation pipeline for English → Indian languages using the NLLB-200 multilingual model, evaluated with multiple automatic metrics and deployed via an interactive Gradio web application.
📋 Table of Contents
- Overview
- Languages Supported
- Dataset
- Models Evaluated
- Evaluation Results
- Cross-Language Evaluation
- Metric Descriptions
- Multilingual Extension Task
- Project Structure
- Quick Start
- Running the App
- Running Evaluation
- Deployment Architecture
- Report
Overview
This project evaluates multiple pretrained multilingual translation models on English → Tamil (primary evaluation) and demonstrates multilingual capability across multiple Indian languages using the best performing model.
The best performing model was:
facebook/nllb-200-distilled-600M
This model supports 200+ languages, allowing the application to translate English sentences into multiple Indian languages using a single model.
Key observation:
- NLLB-200 significantly outperforms M2M100 and T5-Base for English → Tamil translation.
- The same model can also perform zero-shot translation for other Indian languages.
Languages Supported
| Language | Script | NLLB Token | BERTScore Lang |
|---|---|---|---|
| Tamil | தமிழ் | tam_Taml |
ta |
| Hindi | हिन्दी | hin_Deva |
hi |
| Telugu | తెలుగు | tel_Telu |
te |
| Kannada | ಕನ್ನಡ | kan_Knda |
kn |
| Malayalam | മലയാളം | mal_Mlym |
ml |
Switching languages in the application does not reload the model.
Only the target language token (forced_bos_token_id) changes.
Dataset
| Property | Value |
|---|---|
| Dataset | ai4bharat/IndicMTEval |
| Primary evaluation language | Tamil |
| Additional demo languages | Hindi, Telugu, Kannada, Malayalam |
| Split used | test |
| Samples per language | up to 200 |
Tamil was selected as the primary benchmark language because IndicMTEval provides human evaluation scores (MQM / Direct Assessment) for Tamil translations. ### URL: https://huggingface.co/datasets/ai4bharat/IndicMTEval
Preprocessing Applied
- Lowercasing
- Removing extra whitespace
- Trimming leading and trailing spaces
Models Evaluated
The following translation models were evaluated for English → Tamil:
| Model | Parameters | Architecture | Tamil Token |
|---|---|---|---|
facebook/nllb-200-distilled-600M |
600M | Encoder-Decoder (NLLB) | tam_Taml |
facebook/m2m100_418M |
418M | Encoder-Decoder (M2M100) | ta |
t5-base |
220M | Encoder-Decoder (T5) | prompt-based |
Additional semantic evaluation was performed using:
| Evaluation Model | Purpose |
|---|---|
WMT20 COMET-DA |
Neural MT evaluation metric |
all-MiniLM-L6-v2 |
Sentence embedding similarity |
Evaluation Results
Primary Model Comparison (English → Tamil)
| Model | BLEU ↑ | chrF ↑ | BERTScore F1 ↑ | Cosine Sim ↑ |
|---|---|---|---|---|
| NLLB-200 (600M) 🏆 | 0.142 | 41.3 | 0.618 | 0.731 |
| M2M100 (418M) | 0.098 | 34.7 | 0.581 | 0.694 |
| T5-Base | 0.011 | 12.4 | 0.401 | 0.512 |
NLLB-200 clearly performs best across all evaluation metrics.
Cross-Language Evaluation (Indic MT Benchmark)
To analyze multilingual performance, the NLLB-200 model was evaluated across several Indian languages using:
- BLEU
- chrF
- COMET (WMT20 COMET-DA)
- Sentence embedding cosine similarity
Each language used:
800 training samples
200 validation samples
Validation Results
| Language | BLEU ↑ | chrF ↑ | COMET ↑ | Ensemble Score ↑ |
|---|---|---|---|---|
| Hindi | 31.77 | 37.05 | 0.4404 | 47.20 |
| Tamil | 8.45 | 58.68 | 0.5964 | 49.29 |
| Malayalam | 11.95 | 60.29 | 0.5612 | 50.38 |
| Marathi | 37.04 | 78.40 | 0.4397 | 62.57 |
| Gujarati | 21.03 | 56.23 | 0.5830 | 52.41 |
Best Performers
| Metric | Best Language | Score |
|---|---|---|
| BLEU | Marathi | 37.04 |
| chrF | Marathi | 78.40 |
| COMET | Tamil | 0.5964 |
| Ensemble Score | Marathi | 62.57 |
Evaluation Insights
- Marathi shows strong lexical alignment with the reference translations.
- Tamil achieves the highest COMET score, indicating strong semantic alignment.
- Overall multilingual performance is stable across languages.
Average Ensemble Score: 52.37 / 100
Best Ensemble Score: 62.57 (Marathi)
Worst Ensemble Score: 47.20 (Hindi)
Score Spread: 15.37 points
All experiments were performed using the pretrained NLLB-200 model in a zero-shot translation setting.
Metric Descriptions
BLEU
Measures n-gram overlap between predicted translation and reference translation.
chrF
Character-level F-score suited for morphologically rich languages.
BERTScore
Uses contextual embeddings to measure semantic similarity.
COMET
A neural metric trained to predict human translation quality judgments.
Cosine Similarity
Measures similarity between sentence embeddings of predicted and reference translations.
Multilingual Extension Task
Since the NLLB model supports 200+ languages, the application was extended to support translation into multiple Indian languages using the same model.
Supported translations:
- English → Tamil
- English → Hindi
- English → Telugu
- English → Kannada
- English → Malayalam
Instead of loading multiple models, the system simply changes the target language token:
model.generate(
**inputs,
forced_bos_token_id=tokenizer.convert_tokens_to_ids("tam_Taml")
)
This allows multilingual translation using a single model instance.
Project Structure
en-tamil-mt/
├── app/
│ └── app.py
├── evaluation/
│ ├── evaluate_models.py
│ └── evaluate_multilingual.py
├── notebooks/
│ └── evaluation.ipynb
├── docs/
│ └── report.md
├── requirements.txt
├── .gitignore
└── README.md
Quick Start
Clone the repository:
git clone https://github.com/<your-username>/en-tamil-mt.git
cd en-tamil-mt
Create environment:
python -m venv venv
source venv/bin/activate
Install dependencies:
pip install -r requirements.txt
Running the App
Run locally:
python app/app.py
Open:
http://localhost:7860
Live deployed application:
https://huggingface.co/spaces/ashrithagowthami/Machine-Translation
Running Evaluation
Evaluate model comparison:
python evaluation/evaluate_models.py --model all --samples 200
Multilingual evaluation:
python evaluation/evaluate_multilingual.py --lang all --samples 200
Deployment Architecture
User Input (English)
│
▼
Gradio UI
│
▼
Preprocessing
│
▼
NLLB Tokenizer
│
▼
NLLB Model.generate()
│
▼
Target language token
│
▼
Translated output
Report
Full project report available in:
docs/report.md
The report includes:
- Dataset analysis
- Model comparison
- Evaluation methodology
- System architecture
- Results and conclusions
Contributor
Ashritha Gowthami Nelakurthi