test_aline.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # -*- coding: utf-8 -*-
  2. """
  3. Unit tests for nltk.metrics.aline
  4. """
  5. import unittest
  6. from nltk.metrics import aline
  7. class TestAline(unittest.TestCase):
  8. """
  9. Test Aline algorithm for aligning phonetic sequences
  10. """
  11. def test_aline(self):
  12. result = aline.align('θin', 'tenwis')
  13. expected = [
  14. [('θ', 't'), ('i', 'e'), ('n', 'n'), ('-', 'w'), ('-', 'i'), ('-', 's')]
  15. ]
  16. self.assertEqual(result, expected)
  17. result = aline.align('jo', 'ʒə')
  18. expected = [[('j', 'ʒ'), ('o', 'ə')]]
  19. self.assertEqual(result, expected)
  20. result = aline.align('pematesiweni', 'pematesewen')
  21. expected = [
  22. [
  23. ('p', 'p'),
  24. ('e', 'e'),
  25. ('m', 'm'),
  26. ('a', 'a'),
  27. ('t', 't'),
  28. ('e', 'e'),
  29. ('s', 's'),
  30. ('i', 'e'),
  31. ('w', 'w'),
  32. ('e', 'e'),
  33. ('n', 'n'),
  34. ('i', '-'),
  35. ]
  36. ]
  37. self.assertEqual(result, expected)
  38. result = aline.align('tuwθ', 'dentis')
  39. expected = [
  40. [
  41. ('t', 'd'),
  42. ('u', 'e'),
  43. ('w', '-'),
  44. ('-', 'n'),
  45. ('-', 't'),
  46. ('-', 'i'),
  47. ('θ', 's'),
  48. ]
  49. ]
  50. self.assertEqual(result, expected)
  51. def test_aline_delta(self):
  52. """
  53. Test aline for computing the difference between two segments
  54. """
  55. result = aline.delta('p', 'q')
  56. expected = 20.0
  57. self.assertEqual(result, expected)
  58. result = aline.delta('a', 'A')
  59. expected = 0.0
  60. self.assertEqual(result, expected)