Skip to content

Commit

Permalink
Add morphosemantic relationships
Browse files Browse the repository at this point in the history
  • Loading branch information
jmccrae committed Aug 22, 2023
1 parent 838d007 commit 9c7474b
Show file tree
Hide file tree
Showing 29 changed files with 34,853 additions and 3,443 deletions.
2 changes: 1 addition & 1 deletion scripts/validate.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ def main():
"ERROR: Pertainyms should be between adjectives %s => %s" %
(sense.id, sr.target))
errors += 1
sr_counter = Counter((sr.target, sr.rel_type)
sr_counter = Counter((sr.target, sr.other_type if sr.other_type else sr.rel_type)
for sr in sense.sense_relations)
for item, count in sr_counter.items():
if count > 1:
Expand Down
28 changes: 25 additions & 3 deletions scripts/wordnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,12 +361,18 @@ def to_xml(self, xml_file, comments):


class SenseRelation:
def __init__(self, target, rel_type):
def __init__(self, target, rel_type, other_type=None):
self.target = target
self.rel_type = rel_type
self.other_type = other_type

def to_xml(self, xml_file, comments):
xml_file.write(
if self.other_type:
xml_file.write(
""" <SenseRelation relType="other" target="%s" dc:type="%s"/>""" %
(self.target, self.other_type))
else:
xml_file.write(
""" <SenseRelation relType="%s" target="%s"/>""" %
(self.rel_type.value, self.target))
if self.target in comments:
Expand Down Expand Up @@ -578,6 +584,21 @@ class SenseRelType(Enum):
SIMILAR = 'similar'
OTHER = 'other'

class OtherSenseRelType(Enum):
AGENT = 'agent'
MATERIAL = 'material'
EVENT = 'event'
INSTRUMENT = 'instrument'
LOCATION = 'location'
BY_MEANS_OF = 'by_means_of'
UNDERGOER = 'undergoer'
PROPERTY = 'property'
RESULT = 'result'
STATE = 'state'
USES = 'uses'
DESTINATION = 'destination'
BODY_PART = 'body_part'
VEHICLE = 'vehicle'

inverse_sense_rels = {
SenseRelType.DOMAIN_REGION: SenseRelType.HAS_DOMAIN_REGION,
Expand Down Expand Up @@ -654,7 +675,8 @@ def startElement(self, name, attrs):
elif name == "SenseRelation":
self.sense.add_sense_relation(
SenseRelation(attrs["target"],
SenseRelType(attrs["relType"])))
SenseRelType(attrs["relType"]),
attrs.get("dc:type")))
elif name == "SyntacticBehaviour":
pass
#self.entry.add_syntactic_behaviour(
Expand Down
4 changes: 4 additions & 0 deletions scripts/wordnet_yaml.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ def sense_from_yaml(y, lemma, pos, n):
# Remap senses
s.add_sense_relation(SenseRelation(
map_sense_key(target), SenseRelType(rel)))
if rel in OtherSenseRelType._value2member_map_:
for target in targets:
s.add_sense_relation(SenseRelation(
map_sense_key(target), SenseRelType.OTHER, rel))
if "sent" in y:
s.sent = y["sent"]
if "subcat" in y:
Expand Down
Loading

0 comments on commit 9c7474b

Please sign in to comment.