spaCy/spacy/tests/lang/ky/test_tokenizer.py
Paul O'Leary McCann 0f01f46e02
Update Cython string types (#9143)
* Replace all basestring references with unicode

`basestring` was a compatability type introduced by Cython to make
dealing with utf-8 strings in Python2 easier. In Python3 it is
equivalent to the unicode (or str) type.

I replaced all references to basestring with unicode, since that was
used elsewhere, but we could also just replace them with str, which
shoudl also be equivalent.

All tests pass locally.

* Replace all references to unicode type with str

Since we only support python3 this is simpler.

* Remove all references to unicode type

This removes all references to the unicode type across the codebase and
replaces them with `str`, which makes it more drastic than the prior
commits. In order to make this work importing `unicode_literals` had to
be removed, and one explicit unicode literal also had to be removed (it
is unclear why this is necessary in Cython with language level 3, but
without doing it there were errors about implicit conversion).

When `unicode` is used as a type in comments it was also edited to be
`str`.

Additionally `coding: utf8` headers were removed from a few files.
2021-09-13 17:02:17 +02:00

87 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pytest
INFIX_HYPHEN_TESTS = [
("Бала-чака жакшыбы?", "Бала-чака жакшыбы ?".split()),
("Кыз-келиндер кийими.", "Кыз-келиндер кийими .".split()),
]
PUNC_INSIDE_WORDS_TESTS = [
(
"Пассажир саны - 2,13 млн — киши/күнүнө (2010), 783,9 млн. киши/жылына.",
"Пассажир саны - 2,13 млн — киши / күнүнө ( 2010 ) ,"
" 783,9 млн. киши / жылына .".split(),
),
('То"кой', 'То " кой'.split()),
]
MIXED_ORDINAL_NUMS_TESTS = [("Эртең 22-январь...", "Эртең 22 - январь ...".split())]
ABBREV_TESTS = [
("Маселе б-ча эртең келет", "Маселе б-ча эртең келет".split()),
("Ахунбаев көч. турат.", "Ахунбаев көч. турат .".split()),
("«3-жылы (б.з.ч.) туулган", "« 3 - жылы ( б.з.ч. ) туулган".split()),
("Жүгөрү ж.б. дандар колдонулат", "Жүгөрү ж.б. дандар колдонулат".split()),
("3-4 кк. курулган.", "3 - 4 кк. курулган .".split()),
]
NAME_ABBREV_TESTS = [
("М.Жумаш", "М.Жумаш".split()),
("М.жумаш", "М.жумаш".split()),
("м.Жумаш", "м . Жумаш".split()),
("Жумаш М.Н.", "Жумаш М.Н.".split()),
("Жумаш.", "Жумаш .".split()),
]
TYPOS_IN_PUNC_TESTS = [
("«3-жылда , туулган", "« 3 - жылда , туулган".split()),
("«3-жылда,туулган", "« 3 - жылда , туулган".split()),
("«3-жылда,туулган.", "« 3 - жылда , туулган .".split()),
("Ал иштейт(качан?)", "Ал иштейт ( качан ? )".split()),
("Ал (качан?)иштейт", "Ал ( качан ?) иштейт".split()), # "?)" => "?)" or "? )"
]
LONG_TEXTS_TESTS = [
(
"Алыскы өлкөлөргө аздыр-көптүр татаалыраак жүрүштөргө чыккандар "
"азыраак: ал бир топ кымбат жана логистика маселесинин айынан "
"кыйла татаал. Мисалы, январдагы майрамдарда Мароккого үчүнчү "
"категориядагы маршрутка (100 чакырымдан кем эмес) барып "
"келгенге аракет кылдык.",
"Алыскы өлкөлөргө аздыр-көптүр татаалыраак жүрүштөргө чыккандар "
"азыраак : ал бир топ кымбат жана логистика маселесинин айынан "
"кыйла татаал . Мисалы , январдагы майрамдарда Мароккого үчүнчү "
"категориядагы маршрутка ( 100 чакырымдан кем эмес ) барып "
"келгенге аракет кылдык .".split(),
)
]
TESTCASES = (
INFIX_HYPHEN_TESTS
+ PUNC_INSIDE_WORDS_TESTS
+ MIXED_ORDINAL_NUMS_TESTS
+ ABBREV_TESTS
+ NAME_ABBREV_TESTS
+ LONG_TEXTS_TESTS
+ TYPOS_IN_PUNC_TESTS
)
NORM_TESTCASES = [
(
"ит, мышык ж.б.у.с. үй жаныбарлары.",
["ит", ",", "мышык", "жана башка ушул сыяктуу", "үй", "жаныбарлары", "."],
)
]
@pytest.mark.parametrize("text,expected_tokens", TESTCASES)
def test_ky_tokenizer_handles_testcases(ky_tokenizer, text, expected_tokens):
tokens = [token.text for token in ky_tokenizer(text) if not token.is_space]
assert expected_tokens == tokens
@pytest.mark.parametrize("text,norms", NORM_TESTCASES)
def test_ky_tokenizer_handles_norm_exceptions(ky_tokenizer, text, norms):
tokens = ky_tokenizer(text)
assert [token.norm_ for token in tokens] == norms