File size: 2,727 Bytes
5ac8480
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import pytest
from pandas import read_csv

from src.parse_disambiguation.feature_extraction import get_word_features_df, join_feats

@pytest.fixture
def word_analysis():
    return {'diac': 'ุจูุณู’ู…ู', 'lex': 'ูฑูุณู’ู…', 'caphi': 'b_i_s_m_i', 
        'gloss': 'in/by_+_(the)_Name_of_+_[def.gen.]', 
        'bw': 'ุจู/PREP+ูฑูุณู’ู…/NOUN+ู/CASE_DEF_GEN', 'pos': 'noun', 
        'catib6': 'PRT+NOM', 'ud': 'ADP+NOUN', 'root': 'ุณ.ู….#', 
        'pattern': 'ุจู1ู’2ู', 'prc3': '0', 'prc2': '0', 'prc1': 
        'bi_prep', 'prc0': '0', 'per': 'na', 'asp': 'na', 
        'vox': 'na', 'mod': 'na', 'form_gen': 'm', 'gen': 'm', 
        'form_num': 's', 'num': 's', 'stt': 'c', 'cas': 'g', 
        'enc0': '0', 'rat': 'i', 'source': 'lex', 'd1seg': 'ุจูุณู’ู…ู', 
        'd2seg': 'ุจู+_ุณู’ู…ู', 'd3seg': 'ุจู+_ุณู’ู…ู', 'atbseg': 'ุจู+_ุณู’ู…ู', 
        'd1tok': 'ุจูุณู’ู…ู', 'd2tok': 'ุจู+_ุงูุณู’ู…ู', 'd3tok': 'ุจู+_ุงูุณู’ู…ู', 
        'atbtok': 'ุจู+_ุงูุณู’ู…ู', 'bwtok': 'ุจู+_ูฑูุณู’ู…_+ู', 'pos_logprob': -0.4344233, 
        'lex_logprob': -3.156274, 'pos_lex_logprob': -3.156274, 
        'stem': 'ุจูุณู’ู…ู', 'stemgloss': 'in/by_+_(the)_Name_of_+_[def.gen.]', 'stemcat': 'FW-Wa'
    }

@pytest.fixture
def clitic_feats():
    return read_csv('data/clitic_feats.csv')

@pytest.fixture
def word_feats():
    df = read_csv('tests/test_feats.tsv', sep='\t')
    return df.astype(str).astype(object)
    

def test_get_word_features_df(word_analysis, clitic_feats, word_feats):
    tagset = "catib6"
    
    df = get_word_features_df(word_analysis, clitic_feats)
    df = df.astype(str).astype(object)
    assert word_feats.equals(df)

def test_join_feats_catib6(word_feats):
    word_feats = join_feats(word_feats, 'catib6')
    
    assert word_feats['tokens'] == ['ุจู+', 'ุงูุณู’ู…ู']
    assert word_feats['pos_tags'] == ['PRT', 'NOM']
    assert word_feats['lemmas'] == ['ุจู+', 'ูฑูุณู’ู…']
    assert word_feats['feats'] == ['ud=ADP|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na', 'ud=NOUN|prc3=0|prc2=0|prc1=bi_prep|prc0=0|per=na|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=g|enc0=0|rat=i']

def test_join_feats_ud(word_feats):
    word_feats = join_feats(word_feats, 'ud')
    
    assert word_feats['tokens'] == ['ุจู+', 'ุงูุณู’ู…ู']
    assert word_feats['pos_tags'] == ['ADP', 'NOUN']
    assert word_feats['lemmas'] == ['ุจู+', 'ูฑูุณู’ู…']
    assert word_feats['feats'] == ['catib6=PRT|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na', 'catib6=NOM|prc3=0|prc2=0|prc1=bi_prep|prc0=0|per=na|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=g|enc0=0|rat=i']