spaCy/spacy/tests/lang/bn/test_tokenizer.py
2018-09-05 21:49:00 +02:00

46 lines
3.7 KiB
Python

# coding: utf8
from __future__ import unicode_literals
import pytest
TESTCASES = []
PUNCTUATION_TESTS = [
(u'āφāĻŽāĻŋ āĻŦāĻžāĻ‚āϞāĻžāϝāĻŧ āĻ—āĻžāύ āĻ—āĻžāχ!', [u'āφāĻŽāĻŋ', u'āĻŦāĻžāĻ‚āϞāĻžāϝāĻŧ', u'āĻ—āĻžāύ', u'āĻ—āĻžāχ', u'!']),
(u'āφāĻŽāĻŋ āĻŦāĻžāĻ‚āϞāĻžāϝāĻŧ āĻ•āĻĨāĻž āĻ•āχāĨ¤', [u'āφāĻŽāĻŋ', u'āĻŦāĻžāĻ‚āϞāĻžāϝāĻŧ', u'āĻ•āĻĨāĻž', u'āĻ•āχ', u'āĨ¤']),
(u'āĻŦāϏ⧁āĻ¨ā§āϧāϰāĻž āϜāύāϏāĻŽā§āĻŽā§āϖ⧇ āĻĻā§‹āώ āĻ¸ā§āĻŦā§€āĻ•āĻžāϰ āĻ•āϰāϞ⧋ āύāĻž?', [u'āĻŦāϏ⧁āĻ¨ā§āϧāϰāĻž', u'āϜāύāϏāĻŽā§āĻŽā§āϖ⧇', u'āĻĻā§‹āώ', u'āĻ¸ā§āĻŦā§€āĻ•āĻžāϰ', u'āĻ•āϰāϞ⧋', u'āύāĻž', u'?']),
(u'āϟāĻžāĻ•āĻž āĻĨāĻžāĻ•āϞ⧇ āĻ•āĻŋ āύāĻž āĻšāϝāĻŧ!', [u'āϟāĻžāĻ•āĻž', u'āĻĨāĻžāĻ•āϞ⧇', u'āĻ•āĻŋ', u'āύāĻž', u'āĻšāϝāĻŧ', u'!']),
(u'āϏāϰāĻ•āĻžāϰāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻŦāĻŋāĻĻā§āϝāĻžāϞ⧟-āĻāϰ āĻ›āĻžāĻ¤ā§āϰ āύāχ āĻŦāϞ⧇āχ āĻ•āĻŋ āĻāĻŽāύ āφāϚāϰāĻŖ?',
[u'āϏāϰāĻ•āĻžāϰāĻŋ', u'āĻŦāĻŋāĻļā§āĻŦāĻŦāĻŋāĻĻā§āϝāĻžāϞ⧟', u'-', u'āĻāϰ', u'āĻ›āĻžāĻ¤ā§āϰ', u'āύāχ', u'āĻŦāϞ⧇āχ', u'āĻ•āĻŋ', u'āĻāĻŽāύ', u'āφāϚāϰāĻŖ', u'?']),
(u'āϤāĻžāϰāĻž āĻŦāϞ⧇, "āĻ“āϰāĻž āĻ–āĻžāĻŽāĻžāϰ⧇āϰ āĻŽā§āϰāĻ—āĻŋāĨ¤"', [u'āϤāĻžāϰāĻž', u'āĻŦāϞ⧇', ',', '"', u'āĻ“āϰāĻž', u'āĻ–āĻžāĻŽāĻžāϰ⧇āϰ', u'āĻŽā§āϰāĻ—āĻŋ', u'āĨ¤', '"']),
(u'ā§Š*ā§Š=ā§Ŧ?', [u'ā§Š', u'*', u'ā§Š', '=', u'ā§Ŧ', '?']),
(u'āĻ•āĻžāρāĻ āĻžāϞ-āĻāϰ āĻ—āĻ¨ā§āϧāχ āĻ…āĻ¨ā§āϝāϰāĻ•āĻŽ', [u'āĻ•āĻžāρāĻ āĻžāϞ', '-', u'āĻāϰ', u'āĻ—āĻ¨ā§āϧāχ', u'āĻ…āĻ¨ā§āϝāϰāĻ•āĻŽ']),
]
ABBREVIATIONS = [
(u'āĻĄāσ āĻ–āĻžāϞ⧇āĻĻ āĻŦāϞāϞ⧇āύ āĻĸāĻžāĻ•āĻžāϝāĻŧ ā§Šā§Ģ āĻĄāĻŋāĻ—ā§āϰāĻŋ āϏ⧇.āĨ¤', [u'āĻĄāσ', u'āĻ–āĻžāϞ⧇āĻĻ', u'āĻŦāϞāϞ⧇āύ', u'āĻĸāĻžāĻ•āĻžāϝāĻŧ', u'ā§Šā§Ģ', u'āĻĄāĻŋāĻ—ā§āϰāĻŋ', u'āϏ⧇.', u'āĨ¤'])
]
TESTCASES.extend(PUNCTUATION_TESTS)
TESTCASES.extend(ABBREVIATIONS)
@pytest.mark.parametrize('text,expected_tokens', TESTCASES)
def test_tokenizer_handles_testcases(bn_tokenizer, text, expected_tokens):
tokens = bn_tokenizer(text)
token_list = [token.text for token in tokens if not token.is_space]
assert expected_tokens == token_list
def test_tokenizer_handles_long_text(bn_tokenizer):
text = u"""āύāĻ°ā§āĻĨ āϏāĻžāωāĻĨ āĻŦāĻŋāĻļā§āĻŦāĻŦāĻŋāĻĻā§āϝāĻžāϞāϝāĻŧ⧇ āϏāĻžāϰāĻžāĻŦāĻ›āϰ āϕ⧋āύ āύāĻž āϕ⧋āύ āĻŦāĻŋāώāϝāĻŧ⧇ āĻ—āĻŦ⧇āώāĻŖāĻž āϚāϞāϤ⧇āχ āĻĨāĻžāϕ⧇āĨ¤ \
āĻ…āĻ­āĻŋāĻœā§āĻž āĻĢā§āϝāĻžāĻ•āĻžāĻ˛ā§āϟāĻŋ āĻŽā§‡āĻŽā§āĻŦāĻžāϰāĻ—āĻŖ āĻĒā§āϰāĻžāϝāĻŧāχ āĻļāĻŋāĻ•ā§āώāĻžāĻ°ā§āĻĨā§€āĻĻ⧇āϰ āύāĻŋāϝāĻŧ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ—āĻŦ⧇āώāĻŖāĻž āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āύ, \
āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇ āϰ⧋āĻŦāϟ āĻĨ⧇āϕ⧇ āĻŽā§‡āĻļāĻŋāύ āϞāĻžāĻ°ā§āύāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ“ āφāĻ°ā§āϟāĻŋāĻĢāĻŋāĻļāĻŋāϝāĻŧāĻžāϞ āχāĻ¨ā§āĻŸā§‡āϞāĻŋāĻœā§‡āĻ¨ā§āϏāĨ¤ \
āĻāϏāĻ•āϞ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻ‚āĻļā§āϞāĻŋāĻˇā§āϟ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϝāĻĨ⧇āĻˇā§āĻ  āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻ¸ā§āĻĒ⧇āĻļāĻžāϞāĻžāχāϜāĻĄ āĻšāĻ“āϝāĻŧāĻž āϏāĻŽā§āĻ­āĻŦāĨ¤ \
āφāϰ āĻ—āĻŦ⧇āώāĻŖāĻžāϰ āĻ•āĻžāϜ āϤ⧋āĻŽāĻžāϰ āĻ•ā§āϝāĻžāϰāĻŋāϝāĻŧāĻžāϰāϕ⧇ āϠ⧇āϞ⧇ āύāĻŋāϝāĻŧ⧇ āϝāĻžāĻŦ⧇ āĻ…āύ⧇āĻ•āĻ–āĻžāύāĻŋ! \
āĻ•āĻ¨ā§āĻŸā§‡āĻ¸ā§āϟ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻžāϰ āĻšāĻ“, āĻ—āĻŦ⧇āώāĻ• āĻ•āĻŋāĻ‚āĻŦāĻž āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ - āύāĻ°ā§āĻĨ āϏāĻžāωāĻĨ āχāωāύāĻŋāĻ­āĻžāĻ°ā§āϏāĻŋāϟāĻŋāϤ⧇ āϤ⧋āĻŽāĻžāϰ āĻĒā§āϰāϤāĻŋāĻ­āĻž āĻŦāĻŋāĻ•āĻžāĻļ⧇āϰ āϏ⧁āϝ⧋āĻ— āϰāϝāĻŧ⧇āϛ⧇āχāĨ¤ \
āύāĻ°ā§āĻĨ āϏāĻžāωāĻĨ⧇āϰ āĻ…āϏāĻžāϧāĻžāϰāĻŖ āĻ•āĻŽāĻŋāωāύāĻŋāϟāĻŋāϤ⧇ āϤ⧋āĻŽāĻžāϕ⧇ āϏāĻžāĻĻāϰ āφāĻŽāĻ¨ā§āĻ¤ā§āϰāĻŖāĨ¤"""
tokens = bn_tokenizer(text)
assert len(tokens) == 84