File: relations_test.py

package info (click to toggle)
python-wn 0.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,184 kB
  • sloc: python: 7,592; xml: 493; sql: 220; makefile: 12
file content (166 lines) | stat: -rw-r--r-- 5,972 bytes parent folder | download
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166

import pytest

import wn


@pytest.mark.usefixtures('mini_db')
def test_word_derived_words():
    assert len(wn.word('test-en-example-n').derived_words()) == 1
    assert len(wn.word('test-es-ejemplo-n').derived_words()) == 1


@pytest.mark.usefixtures('mini_db')
def test_synset_hypernyms():
    assert wn.synset('test-en-0002-n').hypernyms() == [
        wn.synset('test-en-0001-n')
    ]
    assert wn.synset('test-en-0001-n').hypernyms() == []


@pytest.mark.usefixtures('mini_db')
def test_synset_hypernyms_expand_default():
    assert wn.synset('test-es-0002-n').hypernyms() == [
        wn.synset('test-es-0001-n')
    ]
    assert wn.synset('test-es-0001-n').hypernyms() == []


@pytest.mark.usefixtures('mini_db')
def test_synset_hypernyms_expand_empty():
    w = wn.Wordnet(lang='es', expand='')
    assert w.synset('test-es-0002-n').hypernyms() == []


@pytest.mark.usefixtures('mini_db')
def test_synset_hypernyms_expand_specified():
    w = wn.Wordnet(lang='es', expand='test-en')
    assert w.synset('test-es-0002-n').hypernyms() == [
        w.synset('test-es-0001-n')
    ]


@pytest.mark.usefixtures('mini_db')
def test_synset_relations():
    w = wn.Wordnet(lang='en')
    assert w.synset('test-en-0002-n').relations() == {
        'hypernym': [w.synset('test-en-0001-n')],
        'hyponym': [w.synset('test-en-0004-n')]
    }


@pytest.mark.usefixtures('mini_db')
def test_sense_get_related():
    w = wn.Wordnet('test-en')
    assert w.sense('test-en-example-n-0002-01').get_related() == [
        w.sense('test-en-exemplify-v-0003-01')
    ]


@pytest.mark.usefixtures('mini_db')
def test_sense_relations():
    w = wn.Wordnet('test-en')
    assert w.sense('test-en-example-n-0002-01').relations() == {
        'derivation': [w.sense('test-en-exemplify-v-0003-01')]
    }


@pytest.mark.usefixtures('mini_db_1_1')
def test_extension_relations():
    # default mode
    assert wn.synset('test-en-0007-v').hypernyms() == [
        wn.synset('test-en-ext-0009-v')
    ]
    assert wn.synset('test-en-ext-0009-v').hyponyms() == [
        wn.synset('test-en-0007-v')
    ]
    assert wn.sense('test-en-information-n-0001-01').get_related('pertainym') == [
        wn.sense('test-en-ext-info-n-0001-01')
    ]
    assert wn.sense('test-en-ext-info-n-0001-01').get_related('pertainym') == [
        wn.sense('test-en-information-n-0001-01')
    ]

    # restricted to base
    w = wn.Wordnet(lexicon='test-en')
    assert w.synset('test-en-0007-v').hypernyms() == []
    assert w.sense('test-en-information-n-0001-01').get_related('pertainym') == []

    # base and extension
    w = wn.Wordnet(lexicon='test-en test-en-ext')
    assert w.synset('test-en-0007-v').hypernyms() == [
        w.synset('test-en-ext-0009-v')
    ]
    assert w.synset('test-en-ext-0009-v').hyponyms() == [
        w.synset('test-en-0007-v')
    ]
    assert w.sense('test-en-information-n-0001-01').get_related('pertainym') == [
        w.sense('test-en-ext-info-n-0001-01')
    ]
    assert w.sense('test-en-ext-info-n-0001-01').get_related('pertainym') == [
        w.sense('test-en-information-n-0001-01')
    ]

    # restricted to extension
    w = wn.Wordnet(lexicon='test-en-ext')
    assert w.synset('test-en-ext-0009-v').hyponyms() == []
    assert w.sense('test-en-ext-info-n-0001-01').get_related('pertainym') == []


@pytest.mark.usefixtures('mini_db_1_1')
def test_sense_synset_issue_168():
    # https://github.com/goodmami/wn/issues/168
    ja = wn.Wordnet(lexicon='test-ja', expand='')
    assert ja.synset('test-ja-0001-n').get_related() == []
    assert ja.sense('test-ja-情報-n-0001-01').synset().get_related() == []


@pytest.mark.usefixtures('mini_db')
def test_synset_relations_issue_169():
    # https://github.com/goodmami/wn/issues/169
    en = wn.Wordnet('test-en')
    assert list(en.synset("test-en-0001-n").relations('hyponym')) == ['hyponym']
    es = wn.Wordnet('test-es', expand='test-en')
    assert list(es.synset("test-es-0001-n").relations('hyponym')) == ['hyponym']


@pytest.mark.usefixtures('mini_db')
def test_synset_relations_issue_177():
    # https://github.com/goodmami/wn/issues/177
    assert 'hyponym' in wn.synset('test-es-0001-n').relations()


@pytest.mark.usefixtures('mini_db')
def test_sense_relation_map():
    en = wn.Wordnet('test-en')
    assert en.sense('test-en-information-n-0001-01').relation_map() == {}
    relmap = en.sense('test-en-illustrate-v-0003-01').relation_map()
    # only sense-sense relations by default
    assert len(relmap) == 3
    assert all(isinstance(tgt, wn.Sense) for tgt in relmap.values())
    assert {rel.name for rel in relmap} == {'derivation', 'other'}
    assert {rel.target_id for rel in relmap} == {'test-en-illustration-n-0002-01'}
    # sense relations targets should always have same ids as resolved targets
    assert all(rel.target_id == tgt.id for rel, tgt in relmap.items())


@pytest.mark.usefixtures('mini_db')
def test_synset_relation_map():
    en = wn.Wordnet('test-en')
    assert en.synset('test-en-0003-v').relation_map() == {}
    relmap = en.synset('test-en-0002-n').relation_map()
    assert len(relmap) == 2
    assert {rel.name for rel in relmap} == {'hypernym', 'hyponym'}
    assert {rel.target_id for rel in relmap} == {'test-en-0001-n', 'test-en-0004-n'}
    # synset relation targets have same ids as resolved targets in same lexicon
    assert all(rel.target_id == tgt.id for rel, tgt in relmap.items())
    assert all(rel.lexicon().id == 'test-en' for rel in relmap)

    # interlingual synset relation targets show original target ids
    es = wn.Wordnet('test-es', expand='test-en')
    relmap = es.synset('test-es-0002-n').relation_map()
    assert len(relmap) == 2
    assert {rel.name for rel in relmap} == {'hypernym', 'hyponym'}
    assert {rel.target_id for rel in relmap} == {'test-en-0001-n', 'test-en-0004-n'}
    assert all(rel.target_id != tgt.id for rel, tgt in relmap.items())
    assert all(rel.lexicon().id == 'test-en' for rel in relmap)