-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtranslate_abbreviations.py
133 lines (114 loc) · 4.7 KB
/
translate_abbreviations.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
from settings import *
import general_functions as gf
from general import *
from split_sentences import split_sentencescl
class translate_abbreviationscl:
def __init__(self, output, reducts, kind=""):
self.map_var = output.map_var
self.variables = output.variables
self.reducts = reducts
self.kind = kind
self.lbicond = output.lbicond
self.abbreviations = output.abbreviations
self.word = output.word
self.tvalue = output.tvalue
self.dictionary = output.dictionary
self.rn_sent = ""
self.main_loop_ta()
def main_loop_ta(self):
self.change_constants()
for m, self.reduct in enumerate(self.reducts):
self.sentences = self.reduct.sentences
self.greek = self.reduct.greek
self.greek2 = self.greek
self.substitute_ta()
self.implmnt_trans()
self.replace_greek()
return
def substitute_ta(self):
for name, sent in self.sentences.items():
if iscyrillic(sent.name):
pass
elif sent.word_dict["relat"] == "R" and self.kind == "transform_def":
pass
else:
ogreek = sent.greek
for var_name, ovar in sent.vars.items():
nvar = self.map_var.get(ovar)
if nvar != None:
sent.word_dict[var_name] = nvar
elif ovar in self.variables:
self.variables.remove(ovar)
self.map_var.update({ovar: ovar})
else:
sent.word_dict[var_name] = self.variables.pop(0)
self.map_var.update({ovar: sent.word_dict[var_name]})
self.adjust_tvalue(sent, name)
# gf.build_stan_sent(sent)
self.greek = self.greek.replace(ogreek, sent.name)
return
def implmnt_trans(self):
if self.translations_made():
self.rn_sent = self.build_trans_sent()
self.map_var = {}
def adjust_tvalue(self, sent, name):
if self.kind == "replace_def" and \
sent.relat == "R" and \
name != "1.1":
sent.tvalue = self.tvalue
def change_constants(self):
if self.kind == "":
self.tconstants = self.dictionary.def_constants.get(self.word, {})
for k, v in self.tconstants.items():
new_var = vgf.get_key(self.abbreviations, v)
if new_var != None:
self.map_var.update({k: new_var})
else:
old_value = v
if k not in self.variables:
v = self.variables[0]
del self.variables[0]
self.map_var.update({k: v})
self.abbreviations.update({v: old_value})
else:
self.variables.remove(k)
self.map_var.update({k: k})
self.abbreviations.update({k: old_value})
return
def translations_made(self):
for k, v in self.map_var.items():
if k != v:
return True
return False
def build_trans_sent(self):
list1 = []
lst = [x for x in self.map_var.values()]
st = set(x for x in self.map_var.values())
if len(lst) != len(st):
p("different variables are being instantiated by the same object")
raise Exception
for k, v in self.map_var.items():
if k != v:
str1 = "(" + k + idd + v + ")"
list1.append(str1)
return " ".join(list1)
def replace_greek(self):
for sent in self.sentences.values():
if iscyrillic(sent.name):
self.greek = self.greek.replace(sent.greek, sent.name)
bgreek = self.reduct.sentences["1.1"].greek
self.final_sent = self.greek.replace(bgreek, self.lbicond)
self.adjective_category()
self.sp_sent = split_sentencescl().main(self.final_sent)
return
def adjective_category(self):
if hasattr(self.reducts[0], 'adj_cat') and self.reducts[0].adj_cat:
for num, csent in self.sentences.items():
if num != "1.1" and csent.relat == 'R':
obj = self.reducts[0].adj_cat
subj = csent.vars["subj"]
new_sent = "(" + subj + " I " + obj + ")"
old_sent = csent.name
new_sent = "(" + old_sent + f" {cj} " + new_sent + ")"
self.final_sent = self.final_sent.replace(old_sent, new_sent)
break