translations.py
4.28 KB
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
#! /usr/bin/python
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand
from semantics.management.commands.frame_grouping_files.shellvalier_db import getLuToFrameId, getFrameArgumentToArgumentId
# from wordnet.models import LexicalUnit
# from semantics.models import SemanticFrame
class Command(BaseCommand):
args = 'none'
help = ''
def handle(self, **options):
c = 0
lu_to_frame_id = getLuToFrameId()
frame_argument_to_argument_id = getFrameArgumentToArgumentId()
pos_translate = {'czasownik': 'verb', 'przymiotnik': 'adj', 'rzeczownik': 'noun'}
frame_slowal_id_to_unifier_id = {}
for frame in SemanticFrame.objects.filter(next=None, removed=False).all():
lus = frame.lexical_units.all()
slowal_id = frame.id
for lu in lus:
lu_data = (lu.base, pos_translate[lu.pos], lu.sense)
if lu_data not in lu_to_frame_id:
# first type of error -- lexical unit does not exist in unifier
print "type 1", lu.base, lu.pos, lu.sense
c += 1
pass
else:
unifier_id = lu_to_frame_id[lu_data]
if slowal_id in frame_slowal_id_to_unifier_id:
if frame_slowal_id_to_unifier_id[slowal_id] != unifier_id:
# second type of error -- lexical units from the same frame connected to different frames // frame split in unifier
print "type 2", lu.base, lu.pos, lu.sense
c += 1
pass
else:
frame_slowal_id_to_unifier_id[slowal_id] = unifier_id
# thirt type of error -- lexical units from different frames connected to the same frame // frames joined in unifier
l = [(s, f) for f, s in frame_slowal_id_to_unifier_id.items()]
l1 = [s for f, s in frame_slowal_id_to_unifier_id.items()]
print len(l1)
print len(set(l1))
prev_wal = -1
prev_uni = -1
for s, f in sorted(l):
if s == prev_uni:
f1 = SemanticFrame.objects.get(id=prev_wal)
f2 = SemanticFrame.objects.get(id=f)
print "type3", f1.lexical_units.all(), f2.lexical_units.all()
c+= 1
pass
prev_wal = f
prev_uni = s
# print c
print len(frame_slowal_id_to_unifier_id)
# argument_slowal_id_to_unifier_id = {}
# ATTRIBUTES = ['Source', 'Goal', 'Foreground', 'Background']
# for frame in SemanticFrame.objects.filter(next=None, removed=False).all():
# if frame.id in frame_slowal_id_to_unifier_id:
# corresponding_frame_id = frame_slowal_id_to_unifier_id[frame.id]
# for argument in frame.complements.all():
# roles = argument.roles.all()
# if len(roles) == 1:
# role_tag = (roles[0].role, None)
# elif len(roles) == 2:
# if roles[0].role in ATTRIBUTES:
# role_tag = (roles[1].role, roles[0].role)
# elif roles[1].role in ATTRIBUTES:
# role_tag = (roles[0].role, roles[1].role)
# else:
# raise MultipleRolesError()
# else:
# raise RolesNumberError()
# if argument.id not in argument_slowal_id_to_unifier_id:
# if role_tag in frame_argument_to_argument_id[corresponding_frame_id]:
# argument_slowal_id_to_unifier_id[argument.id] = frame_argument_to_argument_id[corresponding_frame_id][role_tag]
# else:
# # 4th type of error -- changed or no longer existing role tag
# print frame.lexical_units.all(), frame_argument_to_argument_id[corresponding_frame_id].keys(), role_tag
# pass
# else:
# raise DoubleError()
#
# else:
# pass # type 1 error