Ethio-BBPE / test_amharic.py
Nexuss0781's picture
Upload test_amharic.py with huggingface_hub
4951c0d verified
Raw
History Blame
2.43 kB
#!/usr/bin/env python3
"""Test the EthioBBPE tokenizer with Amharic texts."""
from tokenizers import Tokenizer
# Load the trained tokenizer
tokenizer = Tokenizer.from_file('models/EthioBBPE_AmharicBible/tokenizer.json')
print('='*70)
print('TESTING AMHARIC TEXTS')
print('='*70)
# Test 1: Special Ge'ez punctuation
test1 = '፠፠፠፠፠፠፠፠፠፠፠፠፠፠፠፠፠፠'
encoded1 = tokenizer.encode(test1)
decoded1 = tokenizer.decode(encoded1.ids)
print(f'\nTest 1 - Geez Punctuation:')
print(f'Input: {test1}')
print(f'Tokens: {encoded1.tokens}')
print(f'Decoded: {decoded1}')
print(f'Match: {test1 == decoded1}')
# Test 2: Biblical text from Synaxarium
test2 = '''ሰላም ለኢዮብ ዘኢነበበ ከንቶ ። አመ አኀዞ አበቅ ወአመ አህጎለ ጥሪቶ ። ሐዋርያ መንፈስ ይቤ እንዘ ያነክር ሕይወቶ ። ናስተብፅዖሙ ናሁ በብዙኅ አዕⷈቶ ። ለዕለ ተዓገሡ ሰብእ ለኢዮብ ትዕግስቶ ።'''
encoded2 = tokenizer.encode(test2)
decoded2 = tokenizer.decode(encoded2.ids)
print(f'\nTest 2 - Biblical Text (Synaxarium):')
print(f'Input: {test2[:80]}...')
print(f'Tokens: {encoded2.tokens[:20]}... ({len(encoded2.tokens)} total)')
print(f'Decoded: {decoded2[:80]}...')
print(f'Match: {test2 == decoded2}')
# Test 3: Another biblical passage
test3 = 'ወደ ቍስጥንጥንያ አገርም በደረሰች ጊዜ ያቺ ሴት ወደ ንጉሡ ሒዳ የቅዱስ እስጢፋኖስን ዜና ከእርሱ የሆኑትን ተአምራት ወደ ቍስጥንጥንያ አገር ወደብም እንደ ደረሰ ነገረችው ሰምቶም እጅግ ደስ አለው'
encoded3 = tokenizer.encode(test3)
decoded3 = tokenizer.decode(encoded3.ids)
print(f'\nTest 3 - Canon Biblical Text:')
print(f'Input: {test3[:60]}...')
print(f'Tokens: {encoded3.tokens[:15]}... ({len(encoded3.tokens)} total)')
print(f'Decoded: {decoded3[:60]}...')
print(f'Match: {test3 == decoded3}')
# Overall assessment
all_match = (test1 == decoded1) and (test2 == decoded2) and (test3 == decoded3)
print('\n' + '='*70)
if all_match:
print('RESULT: PERFECT - All texts reconstructed exactly!')
print('The tokenizer is ready for production use.')
else:
print('RESULT: NEEDS IMPROVEMENT - Some texts not perfectly reconstructed.')
print('Consider retraining with more data or larger vocabulary.')
print('='*70)