-
Notifications
You must be signed in to change notification settings - Fork 2
/
Synset.py
136 lines (120 loc) · 3.42 KB
/
Synset.py
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
from Commons import Unicode
class Synset:
def __init__(self, synset):
'''
Parent Class Constructor
'''
self._pos = Unicode(synset.pos())
self._name = Unicode(synset.name())
self._definition = Unicode(synset.definition())
self._examples = Unicode(synset.examples())
self._lemma_names = Unicode(synset.lemma_names())
self._lemma_count = self.Sensecount(synset)
self._hypernyms = list()
self._hyponyms = list()
self._meronyms= list()
self._holonyms = list()
self._entailments = list()
self._similar_tos = list()
def name(self):
'''
Getter for name property
'''
return self._name
def definition(self):
'''
Getter for definition property
'''
return self._definition
def examples(self):
'''
Getter for examples property
'''
return self._examples
def lemma_names(self):
'''
Getter for lemma_names property
'''
return self._lemma_names
def lemma_count(self):
'''
Getter for lemma_count property
'''
return self._lemma_count
def pos(self):
'''
Getter for examples property
'''
return self._pos
def hypernyms(self):
'''
Getter for hypernyms
'''
return self._hypernyms
def hyponyms(self):
'''
Getter for hyponyms
'''
return self._hyponyms
def meronyms(self):
'''
Getter for meronyms
'''
return self._meronyms
def holonyms(self):
'''
Getter for holonyms
'''
return self._holonyms
def entailments(self):
'''
Getter for Entailments
'''
return self._entailments
def similar_tos(self):
'''
Getter for Similar Tos
'''
return self._similar_tos
def __str__(self):
'''
Each Object represented by name
'''
return self._name
def Sensecount(self, wn_synset):
'''
To fill lemma counts in wordnet
'''
data = list()
for lemma in wn_synset.lemmas():
count = 1 + lemma.count() #to avoid zeros
data.append(count)
return data
def populate(self, type, data):
#Avoid duplicates
if type == 'hypernyms':
for synset in data:
if synset not in self._hypernyms:
self._hypernyms.append(synset)
elif type == 'hyponyms':
for synset in data:
if synset not in self._hyponyms:
self._hyponyms.append(synset)
elif type == 'meronyms':
for synset in data:
if synset not in self._meronyms:
self._meronyms.append(synset)
elif type == 'holonyms':
for synset in data:
if synset not in self._holonyms:
self._holonyms.append(synset)
elif type == 'entailments':
for synset in data:
if synset not in self._entailments:
self._entailments.append(synset)
elif type == 'similar':
for synset in data:
if synset not in self._similar_tos:
self._similar_tos.append(synset)
else:
print 'Invalid Property, not exists!'