5
5
6
6
import pytest
7
7
8
- from zeyrek .attributes import SecondaryPos , PrimaryPos , calculate_phonetic_attributes
8
+ from zeyrek .attributes import SecondaryPos , PrimaryPos , calculate_phonetic_attributes , RootAttribute , PhoneticAttribute
9
9
from zeyrek .lexicon import DictionaryItem , RootLexicon
10
10
from zeyrek .morphology import MorphAnalyzer
11
- from zeyrek .morphotactics import StemTransition , SearchPath , root_S
12
-
13
-
14
- @pytest .fixture
15
- def response ():
16
- """Sample pytest fixture.
17
-
18
- See more at: http://doc.pytest.org/en/latest/fixture.html
19
- """
20
- # import requests
21
- # return requests.get('https://github.com/audreyr/cookiecutter-pypackage')
11
+ from zeyrek .morphotactics import StemTransition , SearchPath , root_S , noun_S , MorphemeState , p2sg_S , loc_ST , a3pl_S , \
12
+ SuffixTransition , morphemes , equ_ST , TurkishMorphotactics , adjectiveRoot_ST
22
13
23
14
24
15
@pytest .fixture
@@ -43,7 +34,6 @@ def test_rootlexicon(dict_item):
43
34
lex .add (dict_item )
44
35
assert dict_item in lex .item_set
45
36
assert dict_item .id_ in lex .id_dict
46
- print (dict_item .id_ )
47
37
item = lex .get_item_by_id (dict_item .id_ )
48
38
assert item == dict_item
49
39
assert len (lex ) == 1
@@ -60,48 +50,23 @@ def test_initial_search_path():
60
50
assert p .stem_transition == transition
61
51
62
52
63
- """
64
53
def test_stem_transition ():
65
54
from zeyrek .attributes import calculate_phonetic_attributes
66
- word = 'beyaz'
67
- attr = DictItemAttrs(RootAttribute(0), calculate_phonetic_attributes(word))
68
- dict_item = DictionaryItem(word, word, PrimaryPos.Adjective,
69
- SecondaryPos.NONE, attr, word, 0)
70
- transition = StemTransition(word, dict_item,
71
- attr, noun_S)
72
- assert transition.to_ == noun_S
73
- # assert str(transition) == "<(Dict: beyaz [P:Adj]):beyaz → [noun_S:Noun]>"
74
- print(transition, dir(transition))
55
+ word_line = 'beyaz [P:Adj]'
56
+ lexicon = RootLexicon .from_lines ([word_line ])
57
+ morphotactics = TurkishMorphotactics (lexicon = lexicon )
58
+ dict_item = lexicon .get_matching_items ('beyaz' )[0 ]
59
+ transition = morphotactics .stem_transitions .prefix_matches ('beyaz' )[0 ]
60
+ assert transition .to_ == adjectiveRoot_ST
61
+ assert str (transition ) == "<(Dict: beyaz [P:Adj]):beyaz → [adjectiveRoot_ST:Adj]>"
75
62
assert transition .condition is None
76
63
assert transition .condition_count == 0
77
64
assert transition .dict_item .lemma == 'beyaz'
78
- assert transition.from_ is None
79
- print(transition.phonetic_attrs)
65
+ assert transition .from_ is root_S
80
66
81
- assert transition.phonetic_attrs & (PhoneticAttribute.FirstLetterConsonant | PhoneticAttribute.LastLetterConsonant )
82
- assert transition.surface == dict_item.lemma
67
+ calculated_attrs = calculate_phonetic_attributes ( 'beyaz' )
68
+ assert transition .attrs == calculated_attrs
83
69
assert type (transition .to_ ) == MorphemeState
84
- assert transition.to_ == noun_S
85
-
86
-
87
-
88
- def test_morphotactics():
89
- item = DictionaryItem("guzel", "guzel", PrimaryPos.Adjective, SecondaryPos.NONE, [], "guzel", 0)
90
- lex = RootLexicon()
91
- lex.add(item)
92
- m = TurkishMorphotactics(lex)
93
- print(m)
94
- assert m is not None
95
-
96
- from zeyrek.conditions import PreviousMorphemeIs
97
- trans = SuffixTransition(p2sg_S, equ_ST, 'cA', PreviousMorphemeIs(morphemes['A3pl']))
98
- print(trans, trans.condition, trans.condition_count)
99
- pre_trans = SuffixTransition(a3pl_S, p2sg_S)
100
-
101
- assert trans is not None
102
- path = SearchPath('ca', MorphemeState(loc_ST, loc_ST, True), [a3pl_S, p2sg_S], PhoneticAttribute.LastLetterVowel, True)
103
- assert trans.condition.accept(path)
104
- """
105
70
106
71
107
72
@pytest .fixture
@@ -112,10 +77,8 @@ def lex_from_lines():
112
77
def test_analysis (lex_from_lines ):
113
78
lemmer = MorphAnalyzer (lexicon = lex_from_lines )
114
79
analysis = lemmer .analyze ('elma' )
115
- print (analysis )
116
80
assert analysis is not None
117
81
analysis = lemmer .analyze ('beyazlaştırıcı' )
118
- print (analysis )
119
82
assert analysis is not None
120
83
assert 'beyaz' in lemmer .lemmatize ('beyazlaştı' )[0 ][1 ]
121
84
assert 'elma' in lemmer .lemmatize ('elmalı' )[0 ][1 ]
0 commit comments