yakutmorph 0.0.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tests/__init__.py +0 -0
- tests/test_tokenizers.py +62 -0
- tests/test_transducers.py +22 -0
- yakutmorph/__init__.py +0 -0
- yakutmorph/data/__init__.py +0 -0
- yakutmorph/data/gru_weights.pth +0 -0
- yakutmorph/data/mappings.pkl +0 -0
- yakutmorph/data/mappings.yaml +87 -0
- yakutmorph/data/morph_reference.yaml +825 -0
- yakutmorph/data/validate_structure.py +41 -0
- yakutmorph/data/vocabulary.pkl +0 -0
- yakutmorph/disambiguation.py +146 -0
- yakutmorph/fsts/__init__.py +0 -0
- yakutmorph/fsts/yma.a +0 -0
- yakutmorph/fsts/yms.a +0 -0
- yakutmorph/fsts/ymv.a +0 -0
- yakutmorph/interfaces.py +160 -0
- yakutmorph/main.py +100 -0
- yakutmorph/mappers.py +214 -0
- yakutmorph/tokenizers.py +126 -0
- yakutmorph/transducers.py +213 -0
- yakutmorph/utils.py +6 -0
- yakutmorph/wrappers.py +281 -0
- yakutmorph-0.0.5.dist-info/LICENSE +674 -0
- yakutmorph-0.0.5.dist-info/METADATA +444 -0
- yakutmorph-0.0.5.dist-info/RECORD +28 -0
- yakutmorph-0.0.5.dist-info/WHEEL +5 -0
- yakutmorph-0.0.5.dist-info/top_level.txt +2 -0
tests/__init__.py
ADDED
|
File without changes
|
tests/test_tokenizers.py
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
from yakutmorph.tokenizers import YakutTokenizer
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TestYakutTokenizer(unittest.TestCase):
|
|
6
|
+
|
|
7
|
+
def setUp(self):
|
|
8
|
+
self.tokenizer = YakutTokenizer()
|
|
9
|
+
|
|
10
|
+
def test_phone(self):
|
|
11
|
+
text = 'Сиһилии билсиҥ: https://zhataytekh.ru саайтка, +7(4114)426407, +7(4113)427303 төлөпүөнүнэн.'
|
|
12
|
+
expected = [
|
|
13
|
+
('Сиһилии', 'title'), ('билсиҥ', 'lowercase'), (':', 'colon'), ('https://zhataytekh.ru', 'uri'),
|
|
14
|
+
('саайтка', 'lowercase'), (',', 'comma'), ('+7(4114)426407', 'phone'), (',', 'comma'),
|
|
15
|
+
('+7(4113)427303', 'phone'), ('төлөпүөнүнэн', 'lowercase'), ('.', 'period')
|
|
16
|
+
]
|
|
17
|
+
self.assertEqual(self.tokenizer.tokenize(text), expected)
|
|
18
|
+
|
|
19
|
+
def test_date(self):
|
|
20
|
+
text = 'дата 01/04/2024'
|
|
21
|
+
expected = [
|
|
22
|
+
('дата', 'lowercase'), ('01/04/2024', 'date')
|
|
23
|
+
]
|
|
24
|
+
self.assertEqual(self.tokenizer.tokenize(text), expected)
|
|
25
|
+
|
|
26
|
+
def test_number(self):
|
|
27
|
+
text = '1949 сыллаахха оруобуна ахсынньы 10 күнүгэр аан бастаан көрдөрүллүбүт эбит.'
|
|
28
|
+
expected = [
|
|
29
|
+
('1949', 'number'), ('сыллаахха', 'lowercase'), ('оруобуна', 'lowercase'), ('ахсынньы', 'lowercase'),
|
|
30
|
+
('10', 'number'), ('күнүгэр', 'lowercase'), ('аан', 'lowercase'), ('бастаан', 'lowercase'),
|
|
31
|
+
('көрдөрүллүбүт', 'lowercase'), ('эбит', 'lowercase'), ('.', 'period')
|
|
32
|
+
]
|
|
33
|
+
self.assertEqual(self.tokenizer.tokenize(text), expected)
|
|
34
|
+
|
|
35
|
+
def test_url(self):
|
|
36
|
+
text = 'Хаартыска https://www.trud.ru саайтан.'
|
|
37
|
+
expected = [
|
|
38
|
+
('Хаартыска', 'title'), ('https://www.trud.ru', 'uri'), ('саайтан', 'lowercase'), ('.', 'period')
|
|
39
|
+
]
|
|
40
|
+
self.assertEqual(self.tokenizer.tokenize(text), expected)
|
|
41
|
+
|
|
42
|
+
def test_email(self):
|
|
43
|
+
text = 'Кыттааччыларгыт тустарынан иһитиннэриини sleptsova191_@mail.ru ыытыҥ.'
|
|
44
|
+
expected = [
|
|
45
|
+
('Кыттааччыларгыт', 'title'), ('тустарынан', 'lowercase'), ('иһитиннэриини', 'lowercase'),
|
|
46
|
+
('sleptsova191_@mail.ru', 'email'), ('ыытыҥ', 'lowercase'), ('.', 'period')
|
|
47
|
+
]
|
|
48
|
+
self.assertEqual(self.tokenizer.tokenize(text), expected)
|
|
49
|
+
|
|
50
|
+
def test_roman(self):
|
|
51
|
+
text = 'Ити саха хомустара бары XIX үйэ бүтүүтэ – XX үйэ бастакы аҥаарыгар оҥоһуллубуттар.'
|
|
52
|
+
expected = [
|
|
53
|
+
('Ити', 'title'), ('саха', 'lowercase'), ('хомустара', 'lowercase'), ('бары', 'lowercase'),
|
|
54
|
+
('XIX', 'roman'), ('үйэ', 'lowercase'), ('бүтүүтэ', 'lowercase'), ('–', 'dash'), ('XX', 'roman'),
|
|
55
|
+
('үйэ', 'lowercase'), ('бастакы', 'lowercase'), ('аҥаарыгар', 'lowercase'),
|
|
56
|
+
('оҥоһуллубуттар', 'lowercase'), ('.', 'period')
|
|
57
|
+
]
|
|
58
|
+
self.assertEqual(self.tokenizer.tokenize(text), expected)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
if __name__ == '__main__':
|
|
62
|
+
unittest.main()
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
from yakutmorph.transducers import YakutTransducer
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TestYakutTransducer(unittest.TestCase):
|
|
6
|
+
|
|
7
|
+
def setUp(self):
|
|
8
|
+
self.transducer = YakutTransducer()
|
|
9
|
+
|
|
10
|
+
def test_analyse(self):
|
|
11
|
+
surface_form = 'дьоннор'
|
|
12
|
+
analysis_form = ['дьон^N+PL']
|
|
13
|
+
self.assertEqual(self.transducer.analyse(surface_form), analysis_form)
|
|
14
|
+
|
|
15
|
+
def test_generate(self):
|
|
16
|
+
analysis_form = 'дьон^N+PL'
|
|
17
|
+
surface_form = ['дьоннор']
|
|
18
|
+
self.assertEqual(self.transducer.generate(analysis_form), surface_form)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if __name__ == '__main__':
|
|
22
|
+
unittest.main()
|
yakutmorph/__init__.py
ADDED
|
File without changes
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
morph_mapping:
|
|
2
|
+
^VRBLZ: ^V
|
|
3
|
+
^NMLZ: ^N
|
|
4
|
+
^ADJZ: ^Adj
|
|
5
|
+
^ADVZ: ^Adv
|
|
6
|
+
+CONV_COND: +PART
|
|
7
|
+
+PART_PRES: +PART
|
|
8
|
+
+PART_PAST: +PART
|
|
9
|
+
+PART_FUT: +PART
|
|
10
|
+
^POSS: ^Pron
|
|
11
|
+
|
|
12
|
+
token_type_mapping:
|
|
13
|
+
uri: ^PN
|
|
14
|
+
email: ^PN
|
|
15
|
+
phone: ^PN
|
|
16
|
+
date: ^Adv
|
|
17
|
+
number: ^Num
|
|
18
|
+
roman: ^Num
|
|
19
|
+
hyphen: <HYP>
|
|
20
|
+
comma: <COMMA>
|
|
21
|
+
colon: <COMMA>
|
|
22
|
+
period: <STOP>
|
|
23
|
+
ellipsis: <STOP>
|
|
24
|
+
question: <STOP>
|
|
25
|
+
exclamation: <STOP>
|
|
26
|
+
semicolon: <STOP>
|
|
27
|
+
quotation: <SYM>
|
|
28
|
+
bracket: <SYM>
|
|
29
|
+
dash: <SYM>
|
|
30
|
+
symbol: <SYM>
|
|
31
|
+
unknown: ^UNK
|
|
32
|
+
|
|
33
|
+
feature_morphs:
|
|
34
|
+
- ^Adv
|
|
35
|
+
- ^ADVZ
|
|
36
|
+
- ^Adj
|
|
37
|
+
- ^ADJZ
|
|
38
|
+
- ^aux
|
|
39
|
+
- ^CONJ
|
|
40
|
+
- ^DEF
|
|
41
|
+
- ^IMIT
|
|
42
|
+
- ^INJ
|
|
43
|
+
- ^N
|
|
44
|
+
- ^NMLZ
|
|
45
|
+
- ^Num
|
|
46
|
+
- ^PN
|
|
47
|
+
- ^MOD
|
|
48
|
+
- ^ORD
|
|
49
|
+
- ^Part
|
|
50
|
+
- ^POST
|
|
51
|
+
- ^POSS
|
|
52
|
+
- ^Pron
|
|
53
|
+
- ^UNK
|
|
54
|
+
- ^V
|
|
55
|
+
- ^VRBLZ
|
|
56
|
+
- +1SG
|
|
57
|
+
- +2SG
|
|
58
|
+
- +1PL
|
|
59
|
+
- +2PL
|
|
60
|
+
- +3SG
|
|
61
|
+
- +3PL
|
|
62
|
+
- +ABL
|
|
63
|
+
- +ACC
|
|
64
|
+
- +COMIT
|
|
65
|
+
- +COMP
|
|
66
|
+
- +CONV
|
|
67
|
+
- +DAT
|
|
68
|
+
- +INST
|
|
69
|
+
- +LOC
|
|
70
|
+
- +CONV_COND
|
|
71
|
+
- +PART_PAST
|
|
72
|
+
- +PART_PRES
|
|
73
|
+
- +PART_FUT
|
|
74
|
+
- +PL
|
|
75
|
+
- +POSS.1SG
|
|
76
|
+
- +POSS.2SG
|
|
77
|
+
- +POSS.3SG
|
|
78
|
+
- +POSS.1PL
|
|
79
|
+
- +POSS.2PL
|
|
80
|
+
- +POSS.3PL
|
|
81
|
+
- +PRTV
|
|
82
|
+
- +PST.1SG
|
|
83
|
+
- +PST.2SG
|
|
84
|
+
- +PST.3SG
|
|
85
|
+
- +PST.1PL
|
|
86
|
+
- +PST.2PL
|
|
87
|
+
- +PST.3PL
|