Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stanfordnlp/stanza.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'stanza/tests/test_bsf_2_beios.py')
-rw-r--r--stanza/tests/test_bsf_2_beios.py329
1 files changed, 329 insertions, 0 deletions
diff --git a/stanza/tests/test_bsf_2_beios.py b/stanza/tests/test_bsf_2_beios.py
new file mode 100644
index 00000000..0ad59540
--- /dev/null
+++ b/stanza/tests/test_bsf_2_beios.py
@@ -0,0 +1,329 @@
+"""
+Tests the conversion code for the lang_uk NER dataset
+"""
+
+import unittest
+from stanza.utils.datasets.ner.convert_bsf_to_beios import convert_bsf, parse_bsf, BsfInfo
+
+import pytest
+pytestmark = [pytest.mark.travis, pytest.mark.pipeline]
+
+class TestBsf2Beios(unittest.TestCase):
+
+ def test_empty_markup(self):
+ res = convert_bsf('', '')
+ self.assertEqual('', res)
+
+ def test_1line_markup(self):
+ data = 'тележурналіст Василь'
+ bsf_markup = 'T1 PERS 14 20 Василь'
+ expected = '''тележурналіст O
+Василь S-PERS'''
+ self.assertEqual(expected, convert_bsf(data, bsf_markup))
+
+ def test_1line_follow_markup(self):
+ data = 'тележурналіст Василь .'
+ bsf_markup = 'T1 PERS 14 20 Василь'
+ expected = '''тележурналіст O
+Василь S-PERS
+. O'''
+ self.assertEqual(expected, convert_bsf(data, bsf_markup))
+
+ def test_1line_2tok_markup(self):
+ data = 'тележурналіст Василь Нагірний .'
+ bsf_markup = 'T1 PERS 14 29 Василь Нагірний'
+ expected = '''тележурналіст O
+Василь B-PERS
+Нагірний E-PERS
+. O'''
+ self.assertEqual(expected, convert_bsf(data, bsf_markup))
+
+ def test_1line_Long_tok_markup(self):
+ data = 'А в музеї Гуцульщини і Покуття можна '
+ bsf_markup = 'T12 ORG 4 30 музеї Гуцульщини і Покуття'
+ expected = '''А O
+в O
+музеї B-ORG
+Гуцульщини I-ORG
+і I-ORG
+Покуття E-ORG
+можна O'''
+ self.assertEqual(expected, convert_bsf(data, bsf_markup))
+
+ def test_2line_2tok_markup(self):
+ data = '''тележурналіст Василь Нагірний .
+В івано-франківському видавництві «Лілея НВ» вийшла друком'''
+ bsf_markup = '''T1 PERS 14 29 Василь Нагірний
+T2 ORG 67 75 Лілея НВ'''
+ expected = '''тележурналіст O
+Василь B-PERS
+Нагірний E-PERS
+. O
+В O
+івано-франківському O
+видавництві O
+« O
+Лілея B-ORG
+НВ E-ORG
+» O
+вийшла O
+друком O'''
+ self.assertEqual(expected, convert_bsf(data, bsf_markup))
+
+ def test_real_markup(self):
+ data = '''Через напіввоєнний стан в Україні та збільшення телефонних терористичних погроз українці купуватимуть sim-карти тільки за паспортами .
+Про це повідомив начальник управління зв'язків зі ЗМІ адміністрації Держспецзв'язку Віталій Кукса .
+Він зауважив , що днями відомство опублікує проект змін до правил надання телекомунікаційних послуг , де будуть прописані норми ідентифікації громадян .
+Абонентів , які на сьогодні вже мають sim-карту , за словами Віталія Кукси , реєструватимуть , коли ті звертатимуться в службу підтримки свого оператора мобільного зв'язку .
+Однак мобільні оператори побоюються , що таке нововведення помітно зменшить продаж стартових пакетів , адже спеціалізовані магазини є лише у містах .
+Відтак купити сімку в невеликих населених пунктах буде неможливо .
+Крім того , нова процедура ідентифікації абонентів вимагатиме від операторів мобільного зв'язку додаткових витрат .
+- Близько 90 % українських абонентів - це абоненти передоплати .
+Якщо мова буде йти навіть про поетапну їх ідентифікацію , зробити це буде складно , довго і дорого .
+Мобільним операторам доведеться йти на чималі витрати , пов'язані з укладанням і зберіганням договорів , веденням баз даних , - розповіла « Економічній правді » начальник відділу зв'язків з громадськістю « МТС-Україна » Вікторія Рубан .
+'''
+ bsf_markup = '''T1 LOC 26 33 Україні
+T2 ORG 203 218 Держспецзв'язку
+T3 PERS 219 232 Віталій Кукса
+T4 PERS 449 462 Віталія Кукси
+T5 ORG 1201 1219 Економічній правді
+T6 ORG 1267 1278 МТС-Україна
+T7 PERS 1281 1295 Вікторія Рубан
+'''
+ expected = '''Через O
+напіввоєнний O
+стан O
+в O
+Україні S-LOC
+та O
+збільшення O
+телефонних O
+терористичних O
+погроз O
+українці O
+купуватимуть O
+sim-карти O
+тільки O
+за O
+паспортами O
+. O
+Про O
+це O
+повідомив O
+начальник O
+управління O
+зв'язків O
+зі O
+ЗМІ O
+адміністрації O
+Держспецзв'язку S-ORG
+Віталій B-PERS
+Кукса E-PERS
+. O
+Він O
+зауважив O
+, O
+що O
+днями O
+відомство O
+опублікує O
+проект O
+змін O
+до O
+правил O
+надання O
+телекомунікаційних O
+послуг O
+, O
+де O
+будуть O
+прописані O
+норми O
+ідентифікації O
+громадян O
+. O
+Абонентів O
+, O
+які O
+на O
+сьогодні O
+вже O
+мають O
+sim-карту O
+, O
+за O
+словами O
+Віталія B-PERS
+Кукси E-PERS
+, O
+реєструватимуть O
+, O
+коли O
+ті O
+звертатимуться O
+в O
+службу O
+підтримки O
+свого O
+оператора O
+мобільного O
+зв'язку O
+. O
+Однак O
+мобільні O
+оператори O
+побоюються O
+, O
+що O
+таке O
+нововведення O
+помітно O
+зменшить O
+продаж O
+стартових O
+пакетів O
+, O
+адже O
+спеціалізовані O
+магазини O
+є O
+лише O
+у O
+містах O
+. O
+Відтак O
+купити O
+сімку O
+в O
+невеликих O
+населених O
+пунктах O
+буде O
+неможливо O
+. O
+Крім O
+того O
+, O
+нова O
+процедура O
+ідентифікації O
+абонентів O
+вимагатиме O
+від O
+операторів O
+мобільного O
+зв'язку O
+додаткових O
+витрат O
+. O
+- O
+Близько O
+90 O
+% O
+українських O
+абонентів O
+- O
+це O
+абоненти O
+передоплати O
+. O
+Якщо O
+мова O
+буде O
+йти O
+навіть O
+про O
+поетапну O
+їх O
+ідентифікацію O
+, O
+зробити O
+це O
+буде O
+складно O
+, O
+довго O
+і O
+дорого O
+. O
+Мобільним O
+операторам O
+доведеться O
+йти O
+на O
+чималі O
+витрати O
+, O
+пов'язані O
+з O
+укладанням O
+і O
+зберіганням O
+договорів O
+, O
+веденням O
+баз O
+даних O
+, O
+- O
+розповіла O
+« O
+Економічній B-ORG
+правді E-ORG
+» O
+начальник O
+відділу O
+зв'язків O
+з O
+громадськістю O
+« O
+МТС-Україна S-ORG
+» O
+Вікторія B-PERS
+Рубан E-PERS
+. O'''
+ self.assertEqual(expected, convert_bsf(data, bsf_markup))
+
+
+class TestBsf(unittest.TestCase):
+
+ def test_empty_bsf(self):
+ self.assertEqual(parse_bsf(''), [])
+
+ def test_empty2_bsf(self):
+ self.assertEqual(parse_bsf(' \n \n'), [])
+
+ def test_1line_bsf(self):
+ bsf = 'T1 PERS 103 118 Василь Нагірний'
+ res = parse_bsf(bsf)
+ expected = BsfInfo('T1', 'PERS', 103, 118, 'Василь Нагірний')
+ self.assertEqual(len(res), 1)
+ self.assertEqual(res, [expected])
+
+ def test_2line_bsf(self):
+ bsf = '''T9 PERS 778 783 Карла
+T10 MISC 814 819 міста'''
+ res = parse_bsf(bsf)
+ expected = [BsfInfo('T9', 'PERS', 778, 783, 'Карла'),
+ BsfInfo('T10', 'MISC', 814, 819, 'міста')]
+ self.assertEqual(len(res), 2)
+ self.assertEqual(res, expected)
+
+ def test_multiline_bsf(self):
+ bsf = '''T3 PERS 220 235 Андрієм Кіщуком
+T4 MISC 251 285 А .
+Kubler .
+Світло і тіні маестро
+T5 PERS 363 369 Кіблер'''
+ res = parse_bsf(bsf)
+ expected = [BsfInfo('T3', 'PERS', 220, 235, 'Андрієм Кіщуком'),
+ BsfInfo('T4', 'MISC', 251, 285, '''А .
+Kubler .
+Світло і тіні маестро'''),
+ BsfInfo('T5', 'PERS', 363, 369, 'Кіблер')]
+ self.assertEqual(len(res), len(expected))
+ self.assertEqual(res, expected)
+
+
+if __name__ == '__main__':
+ unittest.main()