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