spaCy/spacy/tests/lang/hu/test_tokenizer.py

285 lines
14 KiB
Python
Raw Normal View History

2017-03-12 12:07:28 +00:00
# coding: utf8
2016-12-23 23:21:00 +00:00
from __future__ import unicode_literals
2016-12-10 22:29:41 +00:00
2016-12-23 23:21:00 +00:00
import pytest
2016-12-10 22:29:41 +00:00
💫 Refactor test suite (#2568) ## Description Related issues: #2379 (should be fixed by separating model tests) * **total execution time down from > 300 seconds to under 60 seconds** 🎉 * removed all model-specific tests that could only really be run manually anyway – those will now live in a separate test suite in the [`spacy-models`](https://github.com/explosion/spacy-models) repository and are already integrated into our new model training infrastructure * changed all relative imports to absolute imports to prepare for moving the test suite from `/spacy/tests` to `/tests` (it'll now always test against the installed version) * merged old regression tests into collections, e.g. `test_issue1001-1500.py` (about 90% of the regression tests are very short anyways) * tidied up and rewrote existing tests wherever possible ### Todo - [ ] move tests to `/tests` and adjust CI commands accordingly - [x] move model test suite from internal repo to `spacy-models` - [x] ~~investigate why `pipeline/test_textcat.py` is flakey~~ - [x] review old regression tests (leftover files) and see if they can be merged, simplified or deleted - [ ] update documentation on how to run tests ### Types of change enhancement, tests ## Checklist <!--- Before you submit the PR, go over this checklist and make sure you can tick off all the boxes. [] -> [x] --> - [x] I have submitted the spaCy Contributor Agreement. - [x] I ran the tests, and all new and existing tests passed. - [ ] My changes don't require a change to the documentation, or if they do, I've added all required information.
2018-07-24 21:38:44 +00:00
DEFAULT_TESTS = [
('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági', 'székhely', '.']),
pytest.param('A .hu egy tld.', ['A', '.hu', 'egy', 'tld', '.'], marks=pytest.mark.xfail()),
('Az egy.ketto pelda.', ['Az', 'egy.ketto', 'pelda', '.']),
('A pl. rovidites.', ['A', 'pl.', 'rovidites', '.']),
('A S.M.A.R.T. szo.', ['A', 'S.M.A.R.T.', 'szo', '.']),
pytest.param('A .hu.', ['A', '.hu', '.'], marks=pytest.mark.xfail()),
('Az egy.ketto.', ['Az', 'egy.ketto', '.']),
('A pl.', ['A', 'pl.']),
('A S.M.A.R.T.', ['A', 'S.M.A.R.T.']),
('Egy..ket.', ['Egy', '..', 'ket', '.']),
('Valami... van.', ['Valami', '...', 'van', '.']),
('Valami ...van...', ['Valami', '...', 'van', '...']),
('Valami...', ['Valami', '...']),
('Valami ...', ['Valami', '...']),
2017-05-31 20:22:42 +00:00
('Valami ... más.', ['Valami', '...', 'más', '.']),
('Soha nem lesz!', ['Soha', 'nem', 'lesz', '!']),
('Soha nem lesz?', ['Soha', 'nem', 'lesz', '?'])
]
HYPHEN_TESTS = [
2016-12-21 19:22:09 +00:00
('Egy -nak, -jaiért, -magyar, bel- van.', ['Egy', '-nak', ',', '-jaiért', ',', '-magyar', ',', 'bel-', 'van', '.']),
2017-01-14 14:51:59 +00:00
('Szabolcs-Szatmár-Bereg megye', ['Szabolcs-Szatmár-Bereg', 'megye']),
2016-12-21 19:22:09 +00:00
('Egy -nak.', ['Egy', '-nak', '.']),
('Egy bel-.', ['Egy', 'bel-', '.']),
('Dinnye-domb-.', ['Dinnye-domb-', '.']),
('Ezen -e elcsatangolt.', ['Ezen', '-e', 'elcsatangolt', '.']),
('Lakik-e', ['Lakik', '-e']),
('A--B', ['A', '--', 'B']),
2016-12-21 19:22:09 +00:00
('Lakik-e?', ['Lakik', '-e', '?']),
('Lakik-e.', ['Lakik', '-e', '.']),
('Lakik-e...', ['Lakik', '-e', '...']),
('Lakik-e... van.', ['Lakik', '-e', '...', 'van', '.']),
('Lakik-e van?', ['Lakik', '-e', 'van', '?']),
('Lakik-elem van?', ['Lakik-elem', 'van', '?']),
2017-01-14 21:24:58 +00:00
('Az életbiztosításáról- egy.', ['Az', 'életbiztosításáról-', 'egy', '.']),
2016-12-21 19:22:09 +00:00
('Van lakik-elem.', ['Van', 'lakik-elem', '.']),
('A 7-es busz?', ['A', '7-es', 'busz', '?']),
('A 7-es?', ['A', '7-es', '?']),
('A 7-es.', ['A', '7-es', '.']),
('Ez (lakik)-e?', ['Ez', '(', 'lakik', ')', '-e', '?']),
('A %-sal.', ['A', '%-sal', '.']),
('A $-sal.', ['A', '$-sal', '.']),
('A CD-ROM-okrol.', ['A', 'CD-ROM-okrol', '.'])
]
2016-12-21 19:22:09 +00:00
NUMBER_TESTS = [
('A 2b van.', ['A', '2b', 'van', '.']),
('A 2b-ben van.', ['A', '2b-ben', 'van', '.']),
('A 2b.', ['A', '2b', '.']),
('A 2b-ben.', ['A', '2b-ben', '.']),
('A 3.b van.', ['A', '3.b', 'van', '.']),
('A 3.b-ben van.', ['A', '3.b-ben', 'van', '.']),
('A 3.b.', ['A', '3.b', '.']),
('A 3.b-ben.', ['A', '3.b-ben', '.']),
('A 1:20:36.7 van.', ['A', '1:20:36.7', 'van', '.']),
('A 1:20:36.7-ben van.', ['A', '1:20:36.7-ben', 'van', '.']),
('A 1:20:36.7-ben.', ['A', '1:20:36.7-ben', '.']),
('A 1:35 van.', ['A', '1:35', 'van', '.']),
('A 1:35-ben van.', ['A', '1:35-ben', 'van', '.']),
('A 1:35-ben.', ['A', '1:35-ben', '.']),
('A 1.35 van.', ['A', '1.35', 'van', '.']),
('A 1.35-ben van.', ['A', '1.35-ben', 'van', '.']),
('A 1.35-ben.', ['A', '1.35-ben', '.']),
('A 4:01,95 van.', ['A', '4:01,95', 'van', '.']),
('A 4:01,95-ben van.', ['A', '4:01,95-ben', 'van', '.']),
('A 4:01,95-ben.', ['A', '4:01,95-ben', '.']),
('A 10--12 van.', ['A', '10--12', 'van', '.']),
('A 10--12-ben van.', ['A', '10--12-ben', 'van', '.']),
('A 10--12-ben.', ['A', '10--12-ben', '.']),
('A 1012 van.', ['A', '1012', 'van', '.']),
('A 1012-ben van.', ['A', '1012-ben', 'van', '.']),
('A 1012-ben.', ['A', '1012-ben', '.']),
('A 1012 van.', ['A', '1012', 'van', '.']),
('A 1012-ben van.', ['A', '1012-ben', 'van', '.']),
('A 1012-ben.', ['A', '1012-ben', '.']),
('A 1012 van.', ['A', '1012', 'van', '.']),
('A 1012-ben van.', ['A', '1012-ben', 'van', '.']),
('A 1012-ben.', ['A', '1012-ben', '.']),
('A 1012 van.', ['A', '1012', 'van', '.']),
('A 1012-ben van.', ['A', '1012-ben', 'van', '.']),
('A 1012-ben.', ['A', '1012-ben', '.']),
('A 10—12 van.', ['A', '10—12', 'van', '.']),
('A 10—12-ben van.', ['A', '10—12-ben', 'van', '.']),
('A 10—12-ben.', ['A', '10—12-ben', '.']),
('A 10―12 van.', ['A', '10―12', 'van', '.']),
('A 10―12-ben van.', ['A', '10―12-ben', 'van', '.']),
('A 10―12-ben.', ['A', '10―12-ben', '.']),
('A -23,12 van.', ['A', '-23,12', 'van', '.']),
('A -23,12-ben van.', ['A', '-23,12-ben', 'van', '.']),
('A -23,12-ben.', ['A', '-23,12-ben', '.']),
2017-01-14 14:51:59 +00:00
('A 2+3 van.', ['A', '2+3', 'van', '.']),
('A 2<3 van.', ['A', '2<3', 'van', '.']),
('A 2=3 van.', ['A', '2=3', 'van', '.']),
('A 2÷3 van.', ['A', '2÷3', 'van', '.']),
('A 1=(2÷3)-2/5 van.', ['A', '1=(2÷3)-2/5', 'van', '.']),
2017-01-14 14:51:59 +00:00
('A 2 +3 van.', ['A', '2', '+3', 'van', '.']),
('A 2+ 3 van.', ['A', '2', '+', '3', 'van', '.']),
('A 2 + 3 van.', ['A', '2', '+', '3', 'van', '.']),
2017-01-14 14:51:59 +00:00
('A 2*3 van.', ['A', '2*3', 'van', '.']),
('A 2 *3 van.', ['A', '2', '*', '3', 'van', '.']),
('A 2* 3 van.', ['A', '2', '*', '3', 'van', '.']),
('A 2 * 3 van.', ['A', '2', '*', '3', 'van', '.']),
('A C++ van.', ['A', 'C++', 'van', '.']),
('A C++-ben van.', ['A', 'C++-ben', 'van', '.']),
('A C++.', ['A', 'C++', '.']),
('A C++-ben.', ['A', 'C++-ben', '.']),
('A 2003. I. 06. van.', ['A', '2003.', 'I.', '06.', 'van', '.']),
('A 2003. I. 06-ben van.', ['A', '2003.', 'I.', '06-ben', 'van', '.']),
('A 2003. I. 06.', ['A', '2003.', 'I.', '06.']),
('A 2003. I. 06-ben.', ['A', '2003.', 'I.', '06-ben', '.']),
('A 2003. 01. 06. van.', ['A', '2003.', '01.', '06.', 'van', '.']),
('A 2003. 01. 06-ben van.', ['A', '2003.', '01.', '06-ben', 'van', '.']),
('A 2003. 01. 06.', ['A', '2003.', '01.', '06.']),
('A 2003. 01. 06-ben.', ['A', '2003.', '01.', '06-ben', '.']),
('A IV. 12. van.', ['A', 'IV.', '12.', 'van', '.']),
('A IV. 12-ben van.', ['A', 'IV.', '12-ben', 'van', '.']),
('A IV. 12.', ['A', 'IV.', '12.']),
('A IV. 12-ben.', ['A', 'IV.', '12-ben', '.']),
('A 2003.01.06. van.', ['A', '2003.01.06.', 'van', '.']),
('A 2003.01.06-ben van.', ['A', '2003.01.06-ben', 'van', '.']),
('A 2003.01.06.', ['A', '2003.01.06.']),
('A 2003.01.06-ben.', ['A', '2003.01.06-ben', '.']),
('A IV.12. van.', ['A', 'IV.12.', 'van', '.']),
('A IV.12-ben van.', ['A', 'IV.12-ben', 'van', '.']),
('A IV.12.', ['A', 'IV.12.']),
('A IV.12-ben.', ['A', 'IV.12-ben', '.']),
('A 1.1.2. van.', ['A', '1.1.2.', 'van', '.']),
('A 1.1.2-ben van.', ['A', '1.1.2-ben', 'van', '.']),
('A 1.1.2.', ['A', '1.1.2.']),
('A 1.1.2-ben.', ['A', '1.1.2-ben', '.']),
('A 1,5--2,5 van.', ['A', '1,5--2,5', 'van', '.']),
('A 1,5--2,5-ben van.', ['A', '1,5--2,5-ben', 'van', '.']),
('A 1,5--2,5-ben.', ['A', '1,5--2,5-ben', '.']),
('A 3,14 van.', ['A', '3,14', 'van', '.']),
('A 3,14-ben van.', ['A', '3,14-ben', 'van', '.']),
('A 3,14-ben.', ['A', '3,14-ben', '.']),
('A 3.14 van.', ['A', '3.14', 'van', '.']),
('A 3.14-ben van.', ['A', '3.14-ben', 'van', '.']),
('A 3.14-ben.', ['A', '3.14-ben', '.']),
('A 15. van.', ['A', '15.', 'van', '.']),
('A 15-ben van.', ['A', '15-ben', 'van', '.']),
('A 15-ben.', ['A', '15-ben', '.']),
('A 15.-ben van.', ['A', '15.-ben', 'van', '.']),
('A 15.-ben.', ['A', '15.-ben', '.']),
('A 2002--2003. van.', ['A', '2002--2003.', 'van', '.']),
('A 2002--2003-ben van.', ['A', '2002--2003-ben', 'van', '.']),
2017-01-14 21:09:29 +00:00
('A 2002-2003-ben.', ['A', '2002-2003-ben', '.']),
2017-01-14 14:51:59 +00:00
('A +0,99% van.', ['A', '+0,99%', 'van', '.']),
('A -0,99% van.', ['A', '-0,99%', 'van', '.']),
('A -0,99%-ben van.', ['A', '-0,99%-ben', 'van', '.']),
('A -0,99%.', ['A', '-0,99%', '.']),
('A -0,99%-ben.', ['A', '-0,99%-ben', '.']),
('A 10--20% van.', ['A', '10--20%', 'van', '.']),
('A 10--20%-ben van.', ['A', '10--20%-ben', 'van', '.']),
('A 10--20%.', ['A', '10--20%', '.']),
('A 10--20%-ben.', ['A', '10--20%-ben', '.']),
('A 99§ van.', ['A', '99§', 'van', '.']),
('A 99§-ben van.', ['A', '99§-ben', 'van', '.']),
('A 99§-ben.', ['A', '99§-ben', '.']),
('A 10--20§ van.', ['A', '10--20§', 'van', '.']),
('A 10--20§-ben van.', ['A', '10--20§-ben', 'van', '.']),
('A 10--20§-ben.', ['A', '10--20§-ben', '.']),
('A 99° van.', ['A', '99°', 'van', '.']),
('A 99°-ben van.', ['A', '99°-ben', 'van', '.']),
('A 99°-ben.', ['A', '99°-ben', '.']),
('A 10--20° van.', ['A', '10--20°', 'van', '.']),
('A 10--20°-ben van.', ['A', '10--20°-ben', 'van', '.']),
('A 10--20°-ben.', ['A', '10--20°-ben', '.']),
('A °C van.', ['A', '°C', 'van', '.']),
('A °C-ben van.', ['A', '°C-ben', 'van', '.']),
('A °C.', ['A', '°C', '.']),
('A °C-ben.', ['A', '°C-ben', '.']),
('A 100°C van.', ['A', '100°C', 'van', '.']),
('A 100°C-ben van.', ['A', '100°C-ben', 'van', '.']),
('A 100°C.', ['A', '100°C', '.']),
('A 100°C-ben.', ['A', '100°C-ben', '.']),
('A 800x600 van.', ['A', '800x600', 'van', '.']),
('A 800x600-ben van.', ['A', '800x600-ben', 'van', '.']),
('A 800x600-ben.', ['A', '800x600-ben', '.']),
('A 1x2x3x4 van.', ['A', '1x2x3x4', 'van', '.']),
('A 1x2x3x4-ben van.', ['A', '1x2x3x4-ben', 'van', '.']),
('A 1x2x3x4-ben.', ['A', '1x2x3x4-ben', '.']),
('A 5/J van.', ['A', '5/J', 'van', '.']),
('A 5/J-ben van.', ['A', '5/J-ben', 'van', '.']),
('A 5/J-ben.', ['A', '5/J-ben', '.']),
('A 5/J. van.', ['A', '5/J.', 'van', '.']),
('A 5/J.-ben van.', ['A', '5/J.-ben', 'van', '.']),
('A 5/J.-ben.', ['A', '5/J.-ben', '.']),
('A III/1 van.', ['A', 'III/1', 'van', '.']),
('A III/1-ben van.', ['A', 'III/1-ben', 'van', '.']),
('A III/1-ben.', ['A', 'III/1-ben', '.']),
('A III/1. van.', ['A', 'III/1.', 'van', '.']),
('A III/1.-ben van.', ['A', 'III/1.-ben', 'van', '.']),
('A III/1.-ben.', ['A', 'III/1.-ben', '.']),
('A III/c van.', ['A', 'III/c', 'van', '.']),
('A III/c-ben van.', ['A', 'III/c-ben', 'van', '.']),
('A III/c.', ['A', 'III/c', '.']),
('A III/c-ben.', ['A', 'III/c-ben', '.']),
('A TU154 van.', ['A', 'TU154', 'van', '.']),
('A TU154-ben van.', ['A', 'TU154-ben', 'van', '.']),
2017-01-14 14:51:59 +00:00
('A TU154-ben.', ['A', 'TU154-ben', '.']),
('A 5cm³', ['A', '5', 'cm³']),
('A 5 $-ban', ['A', '5', '$-ban']),
('A 5$-ban', ['A', '5$-ban']),
('A 5$.', ['A', '5', '$', '.']),
('A 5$', ['A', '5', '$']),
('A $5', ['A', '$5']),
2017-01-14 14:51:59 +00:00
('A 5km/h', ['A', '5', 'km/h']),
('A 75%+1-100%-ig', ['A', '75%+1-100%-ig']),
('A 5km/h.', ['A', '5', 'km/h', '.']),
2017-01-14 21:44:19 +00:00
('3434/1992. évi elszámolás', ['3434/1992.', 'évi', 'elszámolás']),
]
2016-12-10 22:29:41 +00:00
QUOTE_TESTS = [
('Az "Ime, hat"-ban irja.', ['Az', '"', 'Ime', ',', 'hat', '"', '-ban', 'irja', '.']),
('"Ime, hat"-ban irja.', ['"', 'Ime', ',', 'hat', '"', '-ban', 'irja', '.']),
('Az "Ime, hat".', ['Az', '"', 'Ime', ',', 'hat', '"', '.']),
2017-01-14 21:09:29 +00:00
('Egy 24"-os monitor.', ['Egy', '24"-os', 'monitor', '.']),
2017-01-14 21:24:58 +00:00
("A McDonald's van.", ['A', "McDonald's", 'van', '.'])
]
2016-12-10 22:29:41 +00:00
DOT_TESTS = [
('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági', 'székhely', '.']),
pytest.param('A .hu egy tld.', ['A', '.hu', 'egy', 'tld', '.'], marks=pytest.mark.xfail()),
('Az egy.ketto pelda.', ['Az', 'egy.ketto', 'pelda', '.']),
2017-01-14 14:51:59 +00:00
('A pl. rövidítés.', ['A', 'pl.', 'rövidítés', '.']),
('A S.M.A.R.T. szó.', ['A', 'S.M.A.R.T.', 'szó', '.']),
pytest.param('A .hu.', ['A', '.hu', '.'], marks=pytest.mark.xfail()),
('Az egy.ketto.', ['Az', 'egy.ketto', '.']),
('A pl.', ['A', 'pl.']),
('A S.M.A.R.T.', ['A', 'S.M.A.R.T.']),
('Egy..ket.', ['Egy', '..', 'ket', '.']),
('Valami... van.', ['Valami', '...', 'van', '.']),
('Valami ...van...', ['Valami', '...', 'van', '...']),
('Valami...', ['Valami', '...']),
('Valami ...', ['Valami', '...']),
('Valami ... más.', ['Valami', '...', 'más', '.'])
]
2016-12-10 22:29:41 +00:00
2017-05-31 20:22:42 +00:00
TYPO_TESTS = [
(
'Ez egy mondat vége.Ez egy másik eleje.', ['Ez', 'egy', 'mondat', 'vége', '.', 'Ez', 'egy', 'másik', 'eleje', '.']),
('Ez egy mondat vége .Ez egy másik eleje.',
['Ez', 'egy', 'mondat', 'vége', '.', 'Ez', 'egy', 'másik', 'eleje', '.']),
(
'Ez egy mondat vége!ez egy másik eleje.', ['Ez', 'egy', 'mondat', 'vége', '!', 'ez', 'egy', 'másik', 'eleje', '.']),
('Ez egy mondat vége !ez egy másik eleje.',
['Ez', 'egy', 'mondat', 'vége', '!', 'ez', 'egy', 'másik', 'eleje', '.']),
(
'Ez egy mondat vége?Ez egy másik eleje.', ['Ez', 'egy', 'mondat', 'vége', '?', 'Ez', 'egy', 'másik', 'eleje', '.']),
('Ez egy mondat vége ?Ez egy másik eleje.',
['Ez', 'egy', 'mondat', 'vége', '?', 'Ez', 'egy', 'másik', 'eleje', '.']),
('egy,kettő', ['egy', ',', 'kettő']),
('egy ,kettő', ['egy', ',', 'kettő']),
('egy :kettő', ['egy', ':', 'kettő']),
]
2017-01-14 14:51:59 +00:00
WIKI_TESTS = [
('!"', ['!', '"']),
2017-01-14 21:09:29 +00:00
('lány"a', ['lány', '"', 'a']),
('lány"a', ['lány', '"', 'a']),
2017-01-14 14:51:59 +00:00
('!"-lel', ['!', '"', '-lel']),
('""-sorozat ', ['"', '"', '-sorozat']),
('"(Köszönöm', ['"', '(', 'Köszönöm']),
('(törvénykönyv)-ben ', ['(', 'törvénykönyv', ')', '-ben']),
('"(...)"sokkal ', ['"', '(', '...', ')', '"', 'sokkal']),
2017-01-14 21:09:29 +00:00
('cérium(IV)-oxid', ['cérium', '(', 'IV', ')', '-oxid'])
2017-01-14 14:51:59 +00:00
]
2016-12-10 22:29:41 +00:00
2017-05-31 20:22:42 +00:00
TESTCASES = DEFAULT_TESTS + DOT_TESTS + QUOTE_TESTS + NUMBER_TESTS + HYPHEN_TESTS + WIKI_TESTS + TYPO_TESTS
2016-12-10 22:29:41 +00:00
@pytest.mark.parametrize('text,expected_tokens', TESTCASES)
💫 Refactor test suite (#2568) ## Description Related issues: #2379 (should be fixed by separating model tests) * **total execution time down from > 300 seconds to under 60 seconds** 🎉 * removed all model-specific tests that could only really be run manually anyway – those will now live in a separate test suite in the [`spacy-models`](https://github.com/explosion/spacy-models) repository and are already integrated into our new model training infrastructure * changed all relative imports to absolute imports to prepare for moving the test suite from `/spacy/tests` to `/tests` (it'll now always test against the installed version) * merged old regression tests into collections, e.g. `test_issue1001-1500.py` (about 90% of the regression tests are very short anyways) * tidied up and rewrote existing tests wherever possible ### Todo - [ ] move tests to `/tests` and adjust CI commands accordingly - [x] move model test suite from internal repo to `spacy-models` - [x] ~~investigate why `pipeline/test_textcat.py` is flakey~~ - [x] review old regression tests (leftover files) and see if they can be merged, simplified or deleted - [ ] update documentation on how to run tests ### Types of change enhancement, tests ## Checklist <!--- Before you submit the PR, go over this checklist and make sure you can tick off all the boxes. [] -> [x] --> - [x] I have submitted the spaCy Contributor Agreement. - [x] I ran the tests, and all new and existing tests passed. - [ ] My changes don't require a change to the documentation, or if they do, I've added all required information.
2018-07-24 21:38:44 +00:00
def test_hu_tokenizer_handles_testcases(hu_tokenizer, text, expected_tokens):
tokens = hu_tokenizer(text)
token_list = [token.text for token in tokens if not token.is_space]
2016-12-21 19:22:09 +00:00
assert expected_tokens == token_list