From 696215a3fb8b981a11114e0d276bd57553c3e8dd Mon Sep 17 00:00:00 2001 From: Aniruddha Adhikary Date: Sun, 5 Mar 2017 07:11:26 +0600 Subject: [PATCH] add tests for Bengali --- spacy/tests/bn/__init__.py | 1 + spacy/tests/bn/test_tokenizer.py | 40 +++++++++++++++++++++++++ spacy/tests/conftest.py | 8 ++++- spacy/tests/tokenizer/test_tokenizer.py | 2 +- 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 spacy/tests/bn/__init__.py create mode 100644 spacy/tests/bn/test_tokenizer.py diff --git a/spacy/tests/bn/__init__.py b/spacy/tests/bn/__init__.py new file mode 100644 index 000000000..57d631c3f --- /dev/null +++ b/spacy/tests/bn/__init__.py @@ -0,0 +1 @@ +# coding: utf-8 diff --git a/spacy/tests/bn/test_tokenizer.py b/spacy/tests/bn/test_tokenizer.py new file mode 100644 index 000000000..08b9a00df --- /dev/null +++ b/spacy/tests/bn/test_tokenizer.py @@ -0,0 +1,40 @@ +# encoding: 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'!']), +] + +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 diff --git a/spacy/tests/conftest.py b/spacy/tests/conftest.py index b6dcb905a..7c6dcda1b 100644 --- a/spacy/tests/conftest.py +++ b/spacy/tests/conftest.py @@ -11,6 +11,7 @@ from ..nl import Dutch from ..sv import Swedish from ..hu import Hungarian from ..fi import Finnish +from ..bn import Bengali from ..tokens import Doc from ..strings import StringStore from ..lemmatizer import Lemmatizer @@ -24,7 +25,7 @@ import pytest LANGUAGES = [English, German, Spanish, Italian, French, Portuguese, Dutch, - Swedish, Hungarian, Finnish] + Swedish, Hungarian, Finnish, Bengali] @pytest.fixture(params=LANGUAGES) @@ -73,6 +74,11 @@ def sv_tokenizer(): return Swedish.Defaults.create_tokenizer() +@pytest.fixture +def bn_tokenizer(): + return Bengali.Defaults.create_tokenizer() + + @pytest.fixture def stringstore(): return StringStore() diff --git a/spacy/tests/tokenizer/test_tokenizer.py b/spacy/tests/tokenizer/test_tokenizer.py index a82284b34..b9d01791a 100644 --- a/spacy/tests/tokenizer/test_tokenizer.py +++ b/spacy/tests/tokenizer/test_tokenizer.py @@ -31,7 +31,7 @@ def test_tokenizer_handles_punct(tokenizer): def test_tokenizer_handles_digits(tokenizer): - exceptions = ["hu"] + exceptions = ["hu", "bn"] text = "Lorem ipsum: 1984." tokens = tokenizer(text)