File: relations_test.py

package info (click to toggle)
python-wn 1.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,100 kB
  • sloc: python: 8,429; xml: 566; sql: 238; makefile: 12
file content (151 lines) | stat: -rw-r--r-- 5,917 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
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_data_true():
    en = wn.Wordnet("test-en")
    assert en.sense("test-en-information-n-0001-01").relations(data=True) == {}
    relmap = en.sense("test-en-illustrate-v-0003-01").relations(data=True)
    # 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_relations_data_true():
    en = wn.Wordnet("test-en")
    assert en.synset("test-en-0003-v").relations(data=True) == {}
    relmap = en.synset("test-en-0002-n").relations(data=True)
    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").relations(data=True)
    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)