diff --git a/spacy/hu/language_data.py b/spacy/hu/language_data.py index e446fdcd6..f14bc118b 100644 --- a/spacy/hu/language_data.py +++ b/spacy/hu/language_data.py @@ -24,7 +24,7 @@ STOP_WORDS = set(_load_txt_data(_STOPWORDS_PATH)) HYPHENS = [six.unichr(cp) for cp in [173, 8211, 8212, 8213, 8722, 9472]] -TOKENIZER_PREFIXES = r''', " ( [ { * < $ £ “ ' `` ` # US$ C$ A$ a- ‘ .... ...'''.split() +TOKENIZER_PREFIXES = r'''+ , " ( [ { * < $ £ “ ' `` ` # US$ C$ A$ a- ‘ .... ...'''.split() TOKENIZER_SUFFIXES = r''' , @@ -53,10 +53,11 @@ _ \.\. \.\.\. \.\.\.\. -(?<=[a-züóőúéáűí)\]"'´«‘’%\)²“”-])\. +(?<=[a-züóőúéáűí)\]"'´«‘’%\)²“”+-])\. (?<=[a-züóőúéáűí)])-e \-\- ´ +(?<=[0-9])\. (?<=[0-9])km² (?<=[0-9])m² (?<=[0-9])cm² @@ -97,17 +98,17 @@ _ (?<=[0-9])M (?<=[0-9])K (?<=[0-9])kb +(?<=[0-9])\+ '''.strip().split('\n') TOKENIZER_INFIXES = (r'''\.\.+ (?<=[a-züóőúéáűí])\.(?=[A-ZÜÓŐÚÉÁŰÍ]) (?<=[a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ0-9])"(?=[\-a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ]) ''' - r'''(?<=[a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ])--(?=[a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ]) (?<=[0-9])-(?=[0-9]) ''' + r'''(?<=[a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ])--(?=[a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ]) (?<=[0-9])[+\-\*/^](?=[0-9]) ''' r'''(?<=[a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ]),(?=[a-zA-ZüóőúéáűíÜÓŐÚÉÁŰÍ])''').split() ABBREVIATIONS = {abbrev: [{"ORTH": abbrev}] for abbrev in _load_txt_data(_ABBREVIATIONS_ORIG_PATH, _ABBREVIATIONS_NYTUD_PATH)} TOKENIZER_EXCEPTIONS = { - "\w*\(\w+\)\w*": [{"F": "???"}], "-e": [{"F": "-e"}], "vs.": [{"F": "vs."}], diff --git a/spacy/tests/hu/tokenizer/test_default_token_numbers.txt b/spacy/tests/hu/tokenizer/test_default_token_numbers.txt new file mode 100644 index 000000000..29b218552 --- /dev/null +++ b/spacy/tests/hu/tokenizer/test_default_token_numbers.txt @@ -0,0 +1,618 @@ +# TOKEN numbers + +szam es betu +IN : A 2b van. +OUT: A 2b van. +IN : A 2b-ben van. +OUT: A 2b-ben van. +IN : A 2b. +OUT: A 2b. +IN : A 2b-ben. +OUT: A 2b-ben. +IN : A 3.b van. +OUT: A 3.b van. +IN : A 3.b-ben van. +OUT: A 3.b-ben van. +IN : A 3.b. +OUT: A 3.b. +IN : A 3.b-ben. +OUT: A 3.b-ben. + +IN : A 1:20:36.7 van. +OUT: A 1:20:36.7 van. +IN : A 1:20:36.7-ben van. +OUT: A 1:20:36.7-ben van. +IN : A 1:20:36.7. +OUT: A 1:20:36.7. +IN : A 1:20:36.7-ben. +OUT: A 1:20:36.7-ben. + +IN : A 1:35 van. +OUT: A 1:35 van. +IN : A 1:35-ben van. +OUT: A 1:35-ben van. +IN : A 1:35. +OUT: A 1:35. +IN : A 1:35-ben. +OUT: A 1:35-ben. + +IN : A 1.35 van. +OUT: A 1.35 van. +IN : A 1.35-ben van. +OUT: A 1.35-ben van. +IN : A 1.35. +OUT: A 1.35. +IN : A 1.35-ben. +OUT: A 1.35-ben. + +IN : A 4:01,95 van. +OUT: A 4:01,95 van. +IN : A 4:01,95-ben van. +OUT: A 4:01,95-ben van. +IN : A 4:01,95. +OUT: A 4:01,95. +IN : A 4:01,95-ben. +OUT: A 4:01,95-ben. + +DASH +hyphen minus +IN : A 10-12 van. +OUT: A 10-12 van. +IN : A 10-12-ben van. +OUT: A 10-12-ben van. +IN : A 10-12. +OUT: A 10-12. +IN : A 10-12-ben. +OUT: A 10-12-ben. +hyphen +IN : A 10‐12 van. +OUT: A 10‐12 van. +IN : A 10‐12-ben van. +OUT: A 10‐12-ben van. +IN : A 10‐12. +OUT: A 10‐12. +IN : A 10‐12-ben. +OUT: A 10‐12-ben. +non-breaking hyphen +IN : A 10‑12 van. +OUT: A 10‑12 van. +IN : A 10‑12-ben van. +OUT: A 10‑12-ben van. +IN : A 10‑12. +OUT: A 10‑12. +IN : A 10‑12-ben. +OUT: A 10‑12-ben. +figure dash +IN : A 10‒12 van. +OUT: A 10‒12 van. +IN : A 10‒12-ben van. +OUT: A 10‒12-ben van. +IN : A 10‒12. +OUT: A 10‒12. +IN : A 10‒12-ben. +OUT: A 10‒12-ben. +en dash +IN : A 10–12 van. +OUT: A 10–12 van. +IN : A 10–12-ben van. +OUT: A 10–12-ben van. +IN : A 10–12. +OUT: A 10–12. +IN : A 10–12-ben. +OUT: A 10–12-ben. +em dash +IN : A 10—12 van. +OUT: A 10—12 van. +IN : A 10—12-ben van. +OUT: A 10—12-ben van. +IN : A 10—12. +OUT: A 10—12. +IN : A 10—12-ben. +OUT: A 10—12-ben. +horizontal bar +IN : A 10―12 van. +OUT: A 10―12 van. +IN : A 10―12-ben van. +OUT: A 10―12-ben van. +IN : A 10―12. +OUT: A 10―12. +IN : A 10―12-ben. +OUT: A 10―12-ben. + +tagolt szamok +IN : A -23,12 van. +OUT: A -23,12 van. +IN : A -23,12-ben van. +OUT: A -23,12-ben van. +IN : A -23,12. +OUT: A -23,12. +IN : A -23,12-ben. +OUT: A -23,12-ben. + +#TODO: not supported transformations in spaCy +# IN : A +12 500 van. +# OUT: A +12 500 van. +# IN : A +12 500-ben van. +# OUT: A +12 500-ben van. +# IN : A +12 500. +# OUT: A +12 500. +# IN : A +12 500-ben. +# OUT: A +12 500-ben. + +# IN : A +12 500,99 van. +# OUT: A +12 500,99 van. +# IN : A +12 500,99-ben van. +# OUT: A +12 500,99-ben van. +# IN : A +12 500,99. +# OUT: A +12 500,99. +# IN : A +12 500,99-ben. +# OUT: A +12 500,99-ben. + +IN : A +12.500.000 van. +OUT: A +12.500.000 van. +IN : A +12.500.000-ben van. +OUT: A +12.500.000-ben van. +IN : A +12.500.000. +OUT: A +12.500.000. +IN : A +12.500.000-ben. +OUT: A +12.500.000-ben. + +A muveletek (+, -, *, /) jelentette kihivasok: +IN : A 2+3 van. +OUT: A 2+3 van. +IN : A 2+3. +OUT: A 2+3. +IN : A 2 +3 van. +OUT: A 2 +3 van. +IN : A 2 +3. +OUT: A 2 +3. +IN : A 2+ 3 van. +OUT: A 2+ 3 van. +IN : A 2+ 3. +OUT: A 2+ 3. +IN : A 2 + 3 van. +OUT: A 2 + 3 van. +IN : A 2 + 3. +OUT: A 2 + 3. + + IN : A 2-3 van. + OUT: A 2-3 van. + IN : A 2-3. + OUT: A 2-3. + IN : A 2 -3 van. + OUT: A 2 -3 van. + IN : A 2 -3. + OUT: A 2 -3. + IN : A 2- 3 van. + OUT: A 2- 3 van. + IN : A 2- 3. + OUT: A 2- 3. + IN : A 2 - 3 van. + OUT: A 2 - 3 van. + IN : A 2 - 3. + OUT: A 2 - 3. + +IN : A 2*3 van. +OUT: A 2*3 van. +IN : A 2*3. +OUT: A 2*3. +IN : A 2 *3 van. +OUT: A 2 *3 van. +IN : A 2 *3. +OUT: A 2 *3. +IN : A 2* 3 van. +OUT: A 2* 3 van. +IN : A 2* 3. +OUT: A 2* 3. +IN : A 2 * 3 van. +OUT: A 2 * 3 van. +IN : A 2 * 3. +OUT: A 2 * 3. + + IN : A 2/3 van. + OUT: A 2/3 van. + IN : A 2/3. + OUT: A 2/3. + IN : A 2 /3 van. + OUT: A 2 /3 van. + IN : A 2 /3. + OUT: A 2 /3. + IN : A 2/ 3 van. + OUT: A 2/ 3 van. + IN : A 2/ 3. + OUT: A 2/ 3. + IN : A 2 / 3 van. + OUT: A 2 / 3 van. + IN : A 2 / 3. + OUT: A 2 / 3. + +IN : A C++ van. +OUT: A C++ van. +IN : A C++-ben van. +OUT: A C++-ben van. +IN : A C++. +OUT: A C++. +IN : A C++-ben. +OUT: A C++-ben. + + + +datumok +IN : A 2003. I. 06. van. +OUT: A 2003. I. 06. van. +IN : A 2003. I. 06-ben van. +OUT: A 2003. I. 06-ben van. +IN : A 2003. I. 06. +OUT: A 2003. I. 06. +IN : A 2003. I. 06-ben. +OUT: A 2003. I. 06-ben. + +IN : A 2003. 01. 06. van. +OUT: A 2003. 01. 06. van. +IN : A 2003. 01. 06-ben van. +OUT: A 2003. 01. 06-ben van. +IN : A 2003. 01. 06. +OUT: A 2003. 01. 06. +IN : A 2003. 01. 06-ben. +OUT: A 2003. 01. 06-ben. + +IN : A IV. 12. van. +OUT: A IV. 12. van. +IN : A IV. 12-ben van. +OUT: A IV. 12-ben van. +IN : A IV. 12. +OUT: A IV. 12. +IN : A IV. 12-ben. +OUT: A IV. 12-ben. + +IN : A 2003.01.06. van. +OUT: A 2003.01.06. van. +IN : A 2003.01.06-ben van. +OUT: A 2003.01.06-ben van. +IN : A 2003.01.06. +OUT: A 2003.01.06. +IN : A 2003.01.06-ben. +OUT: A 2003.01.06-ben. + +IN : A 2003/01/06 van. +OUT: A 2003/01/06 van. +IN : A 2003/01/06-ben van. +OUT: A 2003/01/06-ben van. +IN : A 2003/01/06. +OUT: A 2003/01/06. +IN : A 2003/01/06-ben. +OUT: A 2003/01/06-ben. + +IN : A IV.12. van. +OUT: A IV.12. van. +IN : A IV.12-ben van. +OUT: A IV.12-ben van. +IN : A IV.12. +OUT: A IV.12. +IN : A IV.12-ben. +OUT: A IV.12-ben. + +fejezetazonosito +IN : A 1.1.2. van. +OUT: A 1.1.2. van. +IN : A 1.1.2-ben van. +OUT: A 1.1.2-ben van. +IN : A 1.1.2. +OUT: A 1.1.2. +IN : A 1.1.2-ben. +OUT: A 1.1.2-ben. + +egyeb pontot tartalmazo szamok +IN : A 123.45/67. van. +OUT: A 123.45/67. van. +IN : A 123.45/67-ben van. +OUT: A 123.45/67-ben van. +IN : A 123.45/67. +OUT: A 123.45/67. +IN : A 123.45/67-ben. +OUT: A 123.45/67-ben. + +IN : A 1,5-2,5 van. +OUT: A 1,5-2,5 van. +IN : A 1,5-2,5-ben van. +OUT: A 1,5-2,5-ben van. +IN : A 1,5-2,5. +OUT: A 1,5-2,5. +IN : A 1,5-2,5-ben. +OUT: A 1,5-2,5-ben. + +tizedestortek vesszovel +IN : A 3,14 van. +OUT: A 3,14 van. +IN : A 3,14-ben van. +OUT: A 3,14-ben van. +IN : A 3,14. +OUT: A 3,14. +IN : A 3,14-ben. +OUT: A 3,14-ben. + +tizedestortek ponttal +IN : A 3.14 van. +OUT: A 3.14 van. +IN : A 3.14-ben van. +OUT: A 3.14-ben van. +IN : A 3.14. +OUT: A 3.14. +IN : A 3.14-ben. +OUT: A 3.14-ben. + +sorszamnevek +IN : A 15. van. +OUT: A 15. van. +IN : A 15-ben van. +OUT: A 15-ben van. +IN : A 15. +OUT: A 15. +IN : A 15-ben. +OUT: A 15-ben. +IN : A 15.-ben van. +OUT: A 15.-ben van. +IN : A 15.-ben. +OUT: A 15.-ben. + +IN : A 2002-2003. van. +OUT: A 2002-2003. van. +IN : A 2002-2003-ben van. +OUT: A 2002-2003-ben van. +IN : A 2002-2003. +OUT: A 2002-2003. +IN : A 2002-2003-ben. +OUT: A 2002-2003-ben. + +%-ot tartalmazo szamok +IN : A -0,99% van. +OUT: A -0,99% van. +IN : A -0,99%-ben van. +OUT: A -0,99%-ben van. +IN : A -0,99%. +OUT: A -0,99%. +IN : A -0,99%-ben. +OUT: A -0,99%-ben. + +IN : A 10-20% van. +OUT: A 10-20% van. +IN : A 10-20%-ben van. +OUT: A 10-20%-ben van. +IN : A 10-20%. +OUT: A 10-20%. +IN : A 10-20%-ben. +OUT: A 10-20%-ben. + +§-t tartalmazo szamok +IN : A 99§ van. +OUT: A 99§ van. +IN : A 99§-ben van. +OUT: A 99§-ben van. +IN : A 99§. +OUT: A 99§. +IN : A 99§-ben. +OUT: A 99§-ben. + +IN : A 10-20§ van. +OUT: A 10-20§ van. +IN : A 10-20§-ben van. +OUT: A 10-20§-ben van. +IN : A 10-20§. +OUT: A 10-20§. +IN : A 10-20§-ben. +OUT: A 10-20§-ben. + +°-t tartalmazo szamok +IN : A 99° van. +OUT: A 99° van. +IN : A 99°-ben van. +OUT: A 99°-ben van. +IN : A 99°. +OUT: A 99°. +IN : A 99°-ben. +OUT: A 99°-ben. + +IN : A 10-20° van. +OUT: A 10-20° van. +IN : A 10-20°-ben van. +OUT: A 10-20°-ben van. +IN : A 10-20°. +OUT: A 10-20°. +IN : A 10-20°-ben. +OUT: A 10-20°-ben. + +(ez nem szam, de ide jon) +IN : A °C van. +OUT: A °C van. +IN : A °C-ben van. +OUT: A °C-ben van. +IN : A °C. +OUT: A °C. +IN : A °C-ben. +OUT: A °C-ben. + +IN : A 100°C van. +OUT: A 100°C van. +IN : A 100°C-ben van. +OUT: A 100°C-ben van. +IN : A 100°C. +OUT: A 100°C. +IN : A 100°C-ben. +OUT: A 100°C-ben. + +euroz, dollaz, yeniz +IN : A $1,000 van. +OUT: A $1,000 van. +IN : A $1,000-ben van. +OUT: A $1,000-ben van. +IN : A $1,000. +OUT: A $1,000. +IN : A $1,000-ben. +OUT: A $1,000-ben. + +IN : A €1,000 van. +OUT: A €1,000 van. +IN : A €1,000-ben van. +OUT: A €1,000-ben van. +IN : A €1,000. +OUT: A €1,000. +IN : A €1,000-ben. +OUT: A €1,000-ben. + +IN : A ¥1,000 van. +OUT: A ¥1,000 van. +IN : A ¥1,000-ben van. +OUT: A ¥1,000-ben van. +IN : A ¥1,000. +OUT: A ¥1,000. +IN : A ¥1,000-ben. +OUT: A ¥1,000-ben. + +IN : A £1,000 van. +OUT: A £1,000 van. +IN : A £1,000-ben van. +OUT: A £1,000-ben van. +IN : A £1,000. +OUT: A £1,000. +IN : A £1,000-ben. +OUT: A £1,000-ben. + +aranyok +IN : A 1645kJ/1000g van. +OUT: A 1645kJ/1000g van. +IN : A 1645kJ/1000g-ben van. +OUT: A 1645kJ/1000g-ben van. +IN : A 1645kJ/1000g. +OUT: A 1645kJ/1000g. +IN : A 1645kJ/1000g-ben. +OUT: A 1645kJ/1000g-ben. + +IN : A 1645 kJ/1000g van. +OUT: A 1645 kJ/1000g van. +IN : A 1645 kJ/1000g-ben van. +OUT: A 1645 kJ/1000g-ben van. +IN : A 1645 kJ/1000g. +OUT: A 1645 kJ/1000g. +IN : A 1645 kJ/1000g-ben. +OUT: A 1645 kJ/1000g-ben. + +meretek +IN : A 800x600 van. +OUT: A 800x600 van. +IN : A 800x600-ben van. +OUT: A 800x600-ben van. +IN : A 800x600. +OUT: A 800x600. +IN : A 800x600-ben. +OUT: A 800x600-ben. + +IN : A 1x2x3x4 van. +OUT: A 1x2x3x4 van. +IN : A 1x2x3x4-ben van. +OUT: A 1x2x3x4-ben van. +IN : A 1x2x3x4. +OUT: A 1x2x3x4. +IN : A 1x2x3x4-ben. +OUT: A 1x2x3x4-ben. + +szabvany azonositok (nem torodunk veluk. annyi token, amennyi) +IN : A MSZ EN ISO 30011-2:1993 van. +OUT: A MSZ EN ISO 30011-2:1993 van. +IN : A MSZ EN ISO 30011-2:1993-ben van. +OUT: A MSZ EN ISO 30011-2:1993-ben van. +IN : A MSZ EN ISO 30011-2:1993. +OUT: A MSZ EN ISO 30011-2:1993. +IN : A MSZ EN ISO 30011-2:1993-ben. +OUT: A MSZ EN ISO 30011-2:1993-ben. + +tortszamok +IN : A 5/4 van. +OUT: A 5/4 van. +IN : A 5/4-ben van. +OUT: A 5/4-ben van. +IN : A 5/4. +OUT: A 5/4. +IN : A 5/4-ben. +OUT: A 5/4-ben. + +IN : A 5/4. van. +OUT: A 5/4. van. +IN : A 5/4.-ben van. +OUT: A 5/4.-ben van. +IN : A 5/4.-ben. +OUT: A 5/4.-ben. + +egyeb szamok perjellel +IN : A 5/J van. +OUT: A 5/J van. +IN : A 5/J-ben van. +OUT: A 5/J-ben van. +IN : A 5/J. +OUT: A 5/J. +IN : A 5/J-ben. +OUT: A 5/J-ben. + +IN : A 5/J. van. +OUT: A 5/J. van. +IN : A 5/J.-ben van. +OUT: A 5/J.-ben van. +IN : A 5/J.-ben. +OUT: A 5/J.-ben. + +romai szamok perjellel +IN : A III/1 van. +OUT: A III/1 van. +IN : A III/1-ben van. +OUT: A III/1-ben van. +IN : A III/1. +OUT: A III/1. +IN : A III/1-ben. +OUT: A III/1-ben. + +IN : A III/1. van. +OUT: A III/1. van. +IN : A III/1.-ben van. +OUT: A III/1.-ben van. +IN : A III/1.-ben. +OUT: A III/1.-ben. + +IN : A III/c van. +OUT: A III/c van. +IN : A III/c-ben van. +OUT: A III/c-ben van. +IN : A III/c. +OUT: A III/c. +IN : A III/c-ben. +OUT: A III/c-ben. + +egyeb azonositok +IN : A TU–154 van. +OUT: A TU–154 van. +IN : A TU–154-ben van. +OUT: A TU–154-ben van. +IN : A TU–154. +OUT: A TU–154. +IN : A TU–154-ben. +OUT: A TU–154-ben. + +szamok es nagybetuk legalabb ket perjellel +IN : A BDE/2000/01/0983/0010 van. +OUT: A BDE/2000/01/0983/0010 van. +IN : A BDE/2000/01/0983/0010-ben van. +OUT: A BDE/2000/01/0983/0010-ben van. +IN : A BDE/2000/01/0983/0010. +OUT: A BDE/2000/01/0983/0010. +IN : A BDE/2000/01/0983/0010-ben. +OUT: A BDE/2000/01/0983/0010-ben. + + + MINTA + IN : A van. + OUT: A van. + IN : A -ben van. + OUT: A -ben van. + IN : A . + OUT: A . + IN : A -ben. + OUT: A -ben. + diff --git a/spacy/tests/hu/tokenizer/test_tokenizer.py b/spacy/tests/hu/tokenizer/test_tokenizer.py index 67859ce3f..b54f8641e 100644 --- a/spacy/tests/hu/tokenizer/test_tokenizer.py +++ b/spacy/tests/hu/tokenizer/test_tokenizer.py @@ -57,7 +57,8 @@ class TokenizerTestCase(object): _DOTS_CASES = list(TokenizerTestCase.read_from_file(_MODULE_PATH + "/test_default_token_dots.txt")) _HYPHEN_CASES = list(TokenizerTestCase.read_from_file(_MODULE_PATH + "/test_default_token_hyphen.txt")) _QUOTE_CASES = list(TokenizerTestCase.read_from_file(_MODULE_PATH + "/test_default_token_quote.txt")) -ALL_TESTCASES = _DOTS_CASES + _HYPHEN_CASES +_NUMBER_CASES = list(TokenizerTestCase.read_from_file(_MODULE_PATH + "/test_default_token_numbers.txt")) +ALL_TESTCASES = _DOTS_CASES + _HYPHEN_CASES + _QUOTE_CASES # + _NUMBER_CASES @pytest.fixture(scope="session") @@ -71,7 +72,7 @@ def hu_tokenizer(HU): @pytest.mark.parametrize(("test_case"), ALL_TESTCASES) -def test_abbreviations(hu_tokenizer, test_case): +def test_testcases(hu_tokenizer, test_case): tokens = hu_tokenizer(test_case.input) token_list = [token.orth_ for token in tokens if not token.is_space] - assert test_case.expected_tokens == token_list#, "{} was erronously tokenized as {}".format(test_case, token_list) + assert test_case.expected_tokens == token_list # , "{} was erronously tokenized as {}".format(test_case, token_list)