Reformat HU tokenizer tests and adapt to general style

Improve readability of test cases and add conftest.py with fixture
This commit is contained in:
Ines Montani 2017-01-05 18:06:44 +01:00
parent bc911322b3
commit 038002d616
2 changed files with 213 additions and 201 deletions

View File

@ -0,0 +1,11 @@
# coding: utf-8
from __future__ import unicode_literals
import pytest
from ...hu import Hungarian
@pytest.fixture
def hu_tokenizer():
return Hungarian.Defaults.create_tokenizer()

View File

@ -2,9 +2,10 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import pytest import pytest
from spacy.hu import Hungarian
_DEFAULT_TESTS = [('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági', 'székhely', '.']),
DEFAULT_TESTS = [
('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági', 'székhely', '.']),
('A .hu egy tld.', ['A', '.hu', 'egy', 'tld', '.']), ('A .hu egy tld.', ['A', '.hu', 'egy', 'tld', '.']),
('Az egy.ketto pelda.', ['Az', 'egy.ketto', 'pelda', '.']), ('Az egy.ketto pelda.', ['Az', 'egy.ketto', 'pelda', '.']),
('A pl. rovidites.', ['A', 'pl.', 'rovidites', '.']), ('A pl. rovidites.', ['A', 'pl.', 'rovidites', '.']),
@ -18,9 +19,10 @@ _DEFAULT_TESTS = [('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági',
('Valami ...van...', ['Valami', '...', 'van', '...']), ('Valami ...van...', ['Valami', '...', 'van', '...']),
('Valami...', ['Valami', '...']), ('Valami...', ['Valami', '...']),
('Valami ...', ['Valami', '...']), ('Valami ...', ['Valami', '...']),
('Valami ... más.', ['Valami', '...', 'más', '.'])] ('Valami ... más.', ['Valami', '...', 'más', '.'])
]
_HYPHEN_TESTS = [ HYPHEN_TESTS = [
('Egy -nak, -jaiért, -magyar, bel- van.', ['Egy', '-nak', ',', '-jaiért', ',', '-magyar', ',', 'bel-', 'van', '.']), ('Egy -nak, -jaiért, -magyar, bel- van.', ['Egy', '-nak', ',', '-jaiért', ',', '-magyar', ',', 'bel-', 'van', '.']),
('Egy -nak.', ['Egy', '-nak', '.']), ('Egy -nak.', ['Egy', '-nak', '.']),
('Egy bel-.', ['Egy', 'bel-', '.']), ('Egy bel-.', ['Egy', 'bel-', '.']),
@ -39,9 +41,11 @@ _HYPHEN_TESTS = [
('A 7-es.', ['A', '7-es', '.']), ('A 7-es.', ['A', '7-es', '.']),
('Ez (lakik)-e?', ['Ez', '(', 'lakik', ')', '-e', '?']), ('Ez (lakik)-e?', ['Ez', '(', 'lakik', ')', '-e', '?']),
('A %-sal.', ['A', '%-sal', '.']), ('A %-sal.', ['A', '%-sal', '.']),
('A CD-ROM-okrol.', ['A', 'CD-ROM-okrol', '.'])] ('A CD-ROM-okrol.', ['A', 'CD-ROM-okrol', '.'])
]
_NUMBER_TESTS = [('A 2b van.', ['A', '2b', 'van', '.']), NUMBER_TESTS = [
('A 2b van.', ['A', '2b', 'van', '.']),
('A 2b-ben van.', ['A', '2b-ben', 'van', '.']), ('A 2b-ben van.', ['A', '2b-ben', 'van', '.']),
('A 2b.', ['A', '2b', '.']), ('A 2b.', ['A', '2b', '.']),
('A 2b-ben.', ['A', '2b-ben', '.']), ('A 2b-ben.', ['A', '2b-ben', '.']),
@ -190,15 +194,19 @@ _NUMBER_TESTS = [('A 2b van.', ['A', '2b', 'van', '.']),
('A III/c-ben.', ['A', 'III/c-ben', '.']), ('A III/c-ben.', ['A', 'III/c-ben', '.']),
('A TU154 van.', ['A', 'TU154', 'van', '.']), ('A TU154 van.', ['A', 'TU154', 'van', '.']),
('A TU154-ben van.', ['A', 'TU154-ben', 'van', '.']), ('A TU154-ben van.', ['A', 'TU154-ben', 'van', '.']),
('A TU154-ben.', ['A', 'TU154-ben', '.'])] ('A TU154-ben.', ['A', 'TU154-ben', '.'])
]
_QUOTE_TESTS = [('Az "Ime, hat"-ban irja.', ['Az', '"', 'Ime', ',', 'hat', '"', '-ban', 'irja', '.']), QUOTE_TESTS = [
('Az "Ime, hat"-ban irja.', ['Az', '"', 'Ime', ',', 'hat', '"', '-ban', 'irja', '.']),
('"Ime, hat"-ban irja.', ['"', 'Ime', ',', 'hat', '"', '-ban', 'irja', '.']), ('"Ime, hat"-ban irja.', ['"', 'Ime', ',', 'hat', '"', '-ban', 'irja', '.']),
('Az "Ime, hat".', ['Az', '"', 'Ime', ',', 'hat', '"', '.']), ('Az "Ime, hat".', ['Az', '"', 'Ime', ',', 'hat', '"', '.']),
('Egy 24"-os monitor.', ['Egy', '24', '"', '-os', 'monitor', '.']), ('Egy 24"-os monitor.', ['Egy', '24', '"', '-os', 'monitor', '.']),
("A don't van.", ['A', "don't", 'van', '.'])] ("A don't van.", ['A', "don't", 'van', '.'])
]
_DOT_TESTS = [('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági', 'székhely', '.']), DOT_TESTS = [
('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági', 'székhely', '.']),
('A .hu egy tld.', ['A', '.hu', 'egy', 'tld', '.']), ('A .hu egy tld.', ['A', '.hu', 'egy', 'tld', '.']),
('Az egy.ketto pelda.', ['Az', 'egy.ketto', 'pelda', '.']), ('Az egy.ketto pelda.', ['Az', 'egy.ketto', 'pelda', '.']),
('A pl. rovidites.', ['A', 'pl.', 'rovidites', '.']), ('A pl. rovidites.', ['A', 'pl.', 'rovidites', '.']),
@ -212,22 +220,15 @@ _DOT_TESTS = [('N. kormányzósági\nszékhely.', ['N.', 'kormányzósági', 'sz
('Valami ...van...', ['Valami', '...', 'van', '...']), ('Valami ...van...', ['Valami', '...', 'van', '...']),
('Valami...', ['Valami', '...']), ('Valami...', ['Valami', '...']),
('Valami ...', ['Valami', '...']), ('Valami ...', ['Valami', '...']),
('Valami ... más.', ['Valami', '...', 'más', '.'])] ('Valami ... más.', ['Valami', '...', 'más', '.'])
]
@pytest.fixture(scope="session") TESTCASES = DEFAULT_TESTS + HYPHEN_TESTS + NUMBER_TESTS + DOT_TESTS + QUOTE_TESTS
def HU():
return Hungarian()
@pytest.fixture(scope="module") @pytest.mark.parametrize('text,expected_tokens', TESTCASES)
def hu_tokenizer(HU): def test_tokenizer_handles_testcases(hu_tokenizer, text, expected_tokens):
return HU.tokenizer tokens = hu_tokenizer(text)
token_list = [token.text for token in tokens if not token.is_space]
@pytest.mark.parametrize(("input", "expected_tokens"),
_DEFAULT_TESTS + _HYPHEN_TESTS + _NUMBER_TESTS + _DOT_TESTS + _QUOTE_TESTS)
def test_testcases(hu_tokenizer, input, expected_tokens):
tokens = hu_tokenizer(input)
token_list = [token.orth_ for token in tokens if not token.is_space]
assert expected_tokens == token_list assert expected_tokens == token_list