Views
No views yet
\u0900-\u097F)1# Clone the repository
2git clone https://huggingface.co/ansul90/hindi-bpe-tokenizer
3cd hindi-bpe-tokenizer
4
5# Install dependencies
6pip install regex numpy
7# Or with uv:
8uv add regex numpy⚠️ Note: This repository does not include the pre-trained model file (543MB). You need to train it once locally, which takes only ~30 seconds.
python train_bpe_simple.pyhindi_bpe_tokenizer.json (~543MB)1from hindi_bpe_tokenizer import HindiBPETokenizer
2
3# Load trained tokenizer
4tokenizer = HindiBPETokenizer()
5tokenizer.load('hindi_bpe_tokenizer.json')
6
7# Encode Hindi text
8text = "भारत एक महान देश है।"
9tokens = tokenizer.encode(text)
10print(f"Tokens: {tokens}")
11
12# Decode back to text
13decoded = tokenizer.decode(tokens)
14print(f"Decoded: {decoded}")
15
16# Get compression statistics
17stats = tokenizer.get_compression_stats(text)
18print(f"Compression ratio: {stats['compression_ratio']:.2f}X")
19print(f"Original bytes: {stats['original_bytes']}")
20print(f"Compressed tokens: {stats['compressed_tokens']}")| Metric | Value |
|---|---|
| Vocabulary Size | 5,500 tokens |
| Compression Ratio | 6.52X (avg), 10.44X (best) |
| Decoding Accuracy | 100% |
| Training Corpus | 575K chars, 1.5MB |
| Training Time | ~30 seconds |
| Category | Original Bytes | Compressed Tokens | Compression Ratio |
|---|---|---|---|
| Space Mission | 204 | 31 | 6.58X |
| Cricket News | 146 | 27 | 5.41X |
| Science & Tech | 188 | 18 | 10.44X |
| Language | 123 | 18 | 6.83X |
| Education | 140 | 17 | 8.24X |
| Environment | 132 | 21 | 6.29X |
| Mixed Content | 125 | 34 | 3.68X |
| Long Sentence | 240 | 33 | 7.27X |
1from hindi_bpe_tokenizer import HindiBPETokenizer
2
3# Create tokenizer with custom vocabulary size
4tokenizer = HindiBPETokenizer(vocab_size=8000)
5
6# Load your custom Hindi corpus
7with open('my_corpus.txt', 'r', encoding='utf-8') as f:
8 corpus = f.read()
9
10# Train
11tokenizer.train(corpus, verbose=True)
12
13# Save
14tokenizer.save('my_custom_tokenizer.json')1stats = tokenizer.get_compression_stats("हिंदी टेक्स्ट")
2print(f"Original characters: {stats['original_chars']}")
3print(f"Original bytes: {stats['original_bytes']}")
4print(f"Compressed tokens: {stats['compressed_tokens']}")
5print(f"Compression ratio: {stats['compression_ratio']:.2f}X")
6print(f"Vocabulary size: {stats['vocab_size']:,}")hindi-bpe-tokenizer/
├── hindi_bpe_tokenizer.py # Core implementation (8KB)
├── train_bpe_simple.py # Training script (5KB)
├── create_diverse_hindi_corpus.py # Corpus generator (17KB)
├── hindi_corpus.txt # Training data (1.5MB)
├── training_results.json # Performance metrics (2KB)
├── pyproject.toml # Dependencies
└── README.md # This filehindi_bpe_tokenizer.json (543MB) is generated when you run train_bpe_simple.py\u0900-\u097F, \u0980-\u09FFr""" ?[\u0900-\u097F]+| ?[\u0980-\u09FF]+| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+"""regex library (for Unicode support)numpy (optional, for numerical operations)pip install regex1# Train the tokenizer first
2python train_bpe_simple.py1# Ensure files are read with UTF-8 encoding
2with open('file.txt', 'r', encoding='utf-8') as f:
3 content = f.read()1@misc{hindi_bpe_tokenizer_2025,
2 title={Hindi BPE Tokenizer: Byte Pair Encoding for Devanagari Script},
3 author={Your Name},
4 year={2025},
5 publisher={Hugging Face},
6 url={https://huggingface.co/ansul90/hindi-bpe-tokenizer}
7}