test_translation.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env python3
  2. """Test translation with glossary terms."""
  3. import sys
  4. # Add torch path first
  5. torch_path = '/root/.local/lib/python3.11/site-packages'
  6. if torch_path not in sys.path:
  7. sys.path.insert(0, torch_path)
  8. # Add src path
  9. sys.path.insert(0, '/mnt/code/223-236-template-6/src')
  10. from glossary.models import Glossary, GlossaryEntry, TermCategory
  11. from translator.pipeline import TranslationPipeline
  12. from translator.engine import TranslationEngine
  13. def main():
  14. # Initialize components
  15. model_path = '/mnt/code/223-236-template-6/phase0-test/models/m2m100_418M'
  16. engine = TranslationEngine(model_path=model_path)
  17. glossary = Glossary()
  18. # Add terms
  19. glossary.add(GlossaryEntry(source='林风', target='Lin Feng', category=TermCategory.CHARACTER))
  20. glossary.add(GlossaryEntry(source='青云宗', target='Qingyun Sect', category=TermCategory.ORGANIZATION))
  21. glossary.add(GlossaryEntry(source='外门弟子', target='outer disciple', category=TermCategory.OTHER))
  22. print('=' * 50)
  23. print('术语表已添加以下术语:')
  24. for entry in glossary.get_all():
  25. print(f' - {entry.source} -> {entry.target}')
  26. print('=' * 50)
  27. # Create pipeline
  28. pipeline = TranslationPipeline(
  29. engine=engine,
  30. glossary=glossary,
  31. src_lang='zh',
  32. tgt_lang='en'
  33. )
  34. # Test translation
  35. test_text = '林风是青云宗的一名外门弟子'
  36. print(f'\n输入: {test_text}')
  37. print('=' * 50)
  38. result = pipeline.translate(test_text, return_details=True)
  39. print(f'输出: {result.translated}')
  40. print(f'使用的术语: {result.terms_used if result.terms_used else []}')
  41. print('=' * 50)
  42. # Check for _en__ prefix issue
  43. if '_en__' in result.translated:
  44. print('\n❌ 问题: 发现 _en__ 前缀残留!')
  45. return 1
  46. else:
  47. print('\n✅ 通过: 没有 _en__ 前缀问题!')
  48. return 0
  49. if __name__ == '__main__':
  50. sys.exit(main() or 0)