def test_tokenizer_regressions(self):
     tests = [{
         'text':
         "«Ко двору, — думает он. — Ко двору!»",
         'tokens': [
             '«', 'Ко', ' ', 'двору', ',', ' ', '—', ' ', 'думает', ' ',
             'он', '.', ' ', '—', ' ', 'Ко', ' ', 'двору', '!»'
         ],
     }, {
         'text':
         "В не́которых ру́сских деревня́х по э́той техноло́гии вручну́ю де́лают матрёшек и сего́дня.",
         'tokens': [
             'В', ' ', 'не́которых', ' ', 'ру́сских', ' ', 'деревня́х', ' ',
             'по', ' ', 'э́той', ' ', 'техноло́гии', ' ', 'вручну́ю', ' ',
             'де́лают', ' ', 'матрёшек', ' ', 'и', ' ', 'сего́дня', '.'
         ],
     }, {
         'text':
         "ученик´ ученика́ ученике́ ученику́ ученико́м",
         'tokens': [
             'ученик´', ' ', 'ученика́', ' ', 'ученике́', ' ', 'ученику́',
             ' ', 'ученико́м'
         ],
     }, {
         'text': "э̽той техноло́гии",
         'tokens': ['э̽той', ' ', 'техноло́гии'],
     }]
     for test in tests:
         (text, expected_tokens) = test['text'], test['tokens']
         self.assertEqual(expected_tokens, tokenizer.tokenize(text))
 def test_tokenize_sentence_with_accented_and_hyphenated(self):
     text = "све́те лягу́шка-кваку́шка.\n"
     expected_tokens = [
         'све́те', ' ', 'лягу́шка', '-', 'кваку́шка', '.', '\n'
     ]
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))
 def test_tokenize_sentence_with_numbers(self):
     text = 'НАСА, высота 82,7 км'
     expected_tokens = [
         'НАСА', ',', ' ', 'высота', ' ', '82', ',', '7', ' ', 'км'
     ]
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))
 def test_tokenize_sentence_with_multi_word_expression(self):
     text = 'это только потому, что боитесь меня'
     expected_tokens = [
         'это', ' ', 'только', ' ', 'потому, что', ' ', 'боитесь', ' ',
         'меня'
     ]
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))
 def test_tokenize_sentence_accented(self):
     text = 'Жила́-была́ на све́те лягу́шка-кваку́шка.'
     expected_tokens = [
         'Жила́', '-', 'была́', ' ', 'на', ' ', 'све́те', ' ', 'лягу́шка',
         '-', 'кваку́шка', '.'
     ]
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))
 def test_tokenize_sentence_unaccented(self):
     text = 'Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему.\n\n'
     expected_tokens = [
         'Все', ' ', 'счастливые', ' ', 'семьи', ' ', 'похожи', ' ', 'друг',
         ' ', 'на', ' ', 'друга', ',', ' ', 'каждая', ' ', 'несчастливая',
         ' ', 'семья', ' ', 'несчастлива', ' ', 'по-своему', '.', '\n\n'
     ]
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))
 def test_tokenize_sentence_russian(self):
     text = 'А если же я и провела хорошо каникулы, так это потому, что занималась наукой и вела себя хорошо.'
     expected_tokens = [
         'А', ' ', 'если', ' ', 'же', ' ', 'я', ' ', 'и', ' ', 'провела',
         ' ', 'хорошо', ' ', 'каникулы', ',', ' ', 'так', ' ', 'это', ' ',
         'потому, что', ' ', 'занималась', ' ', 'наукой', ' ', 'и', ' ',
         'вела', ' ', 'себя', ' ', 'хорошо', '.'
     ]
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))
 def test_tokenizer_sentence_with_mixed_english_and_punctuation(self):
     text = "A typical seventeen-year-old первоку́рсник | первоку́рсница (first-year student) in the филологи́ческий факульте́т (филфа́к) (Philology Faculty) has 23 па́ры"
     expected_tokens = [
         'A', ' ', 'typical', ' ', 'seventeen', '-', 'year', '-', 'old',
         ' ', 'первоку́рсник', ' ', '|', ' ', 'первоку́рсница', ' ', '(',
         'first', '-', 'year', ' ', 'student', ')', ' ', 'in', ' ', 'the',
         ' ', 'филологи́ческий', ' ', 'факульте́т', ' ', '(', 'филфа́к',
         ')', ' ', '(', 'Philology', ' ', 'Faculty', ')', ' ', 'has', ' ',
         '23', ' ', 'па́ры'
     ]
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))
 def test_tokenize_sentence_with_multi_word_expression(self):
     tests = [
         {
             'mwe': 'потому, что',
             'text': 'это только потому, что боитесь меня',
             'occurrences': 1,
         },
         {
             'mwe': 'потому что',
             'text': 'Не вспомнила, потому что не вспоминается...',
             'occurrences': 1,
         },
         {
             'mwe': 'Потому что',
             'text': 'Потому что была война...',
             'occurrences': 1,
         },
         {
             'mwe': 'и то и другое',
             'text': 'Из-за холода они быстро теряли и то и другое',
             'occurrences': 1,
         },
         {
             'mwe': 'и то, и другое',
             'text': 'Вместе и то, и другое длилось 12 лет и 7 месяцев.',
             'occurrences': 1,
         },
         {
             'mwe': 'на самом деле',
             'text': 'А как на самом деле?',
             'occurrences': 1,
         },
         {
             'mwe': 'НА САМОМ ДЕЛЕ',
             'text': 'А КАК НА САМОМ ДЕЛЕ?',
             'occurrences': 1,
         },
         {
             'mwe': 'На самом деле',
             'text': 'На самом деле я закрою за тобою дверь Осень, прощай.',
             'occurrences': 1,
         },
         {
             'mwe': 'на самом деле',
             'text': 'Он стоял на гранитной площадке почти на самом берегу моря.',
             'occurrences': 0,
         },
         {
             'mwe': 'С тех пор',
             'text': 'С тех пор узнаёт он в любом!',
             'occurrences': 1,
         },
         {
             'mwe': 'Во время',
             'text': 'Во время встречи он встал и вышел в коридор. В это время мы еще не поняли, в чем дело.',
             'occurrences': 1,
         }
     ]
     for test in tests:
         (mwe, text, expected_occurrences) = test['mwe'], test['text'], test['occurrences']
         actual_tokens = tokenizer.tokenize(text)
         if expected_occurrences == 0:
             self.assertNotIn(mwe, actual_tokens)
         else:
             self.assertIn(mwe, actual_tokens)
         self.assertEqual(expected_occurrences, len([t for t in actual_tokens if t == mwe]))
 def test_tokenize_sentence_with_end_stressed_word(self): 
     text = 'Только его отец´ разговаривал за столом.'
     expected_tokens = ['Только', ' ', 'его', ' ', 'отец´', ' ', 'разговаривал', ' ', 'за', ' ', 'столом', '.']
     actual_tokens = tokenizer.tokenize(text)
     self.assertEqual(expected_tokens, actual_tokens)
     self.assertEqual(text, ''.join(actual_tokens))