reflexive 1.2.7__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reflexive/__init__.py +3 -18
- reflexive/analysis_functions.py +383 -0
- reflexive/display_functions.py +165 -0
- reflexive/res_analysis.py +217 -0
- reflexive/service.py +58 -0
- {reflexive-1.2.7.dist-info → reflexive-2.0.0.dist-info}/METADATA +1 -1
- reflexive-2.0.0.dist-info/RECORD +9 -0
- reflexive/analyse.py +0 -430
- reflexive/cfg.py +0 -116
- reflexive/res.py +0 -225
- reflexive/res_functions.py +0 -62
- reflexive/session.py +0 -264
- reflexive/util.py +0 -127
- reflexive/visualise.py +0 -355
- reflexive-1.2.7.dist-info/RECORD +0 -12
- {reflexive-1.2.7.dist-info → reflexive-2.0.0.dist-info}/WHEEL +0 -0
- {reflexive-1.2.7.dist-info → reflexive-2.0.0.dist-info}/licenses/LICENSE +0 -0
reflexive/visualise.py
DELETED
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
from graph_tool.all import (
|
|
2
|
-
Graph,
|
|
3
|
-
graph_draw,
|
|
4
|
-
ungroup_vector_property,
|
|
5
|
-
group_vector_property
|
|
6
|
-
)
|
|
7
|
-
import cairo
|
|
8
|
-
|
|
9
|
-
from spacy import displacy
|
|
10
|
-
|
|
11
|
-
from reflexive import session
|
|
12
|
-
from reflexive import cfg
|
|
13
|
-
|
|
14
|
-
class Display:
|
|
15
|
-
aws:session.AWS = None
|
|
16
|
-
config:cfg.Config = None
|
|
17
|
-
|
|
18
|
-
defaults = {
|
|
19
|
-
"priority_tags": [
|
|
20
|
-
"NR",
|
|
21
|
-
"AR",
|
|
22
|
-
"RR",
|
|
23
|
-
"EP",
|
|
24
|
-
"AF",
|
|
25
|
-
"TE",
|
|
26
|
-
],
|
|
27
|
-
"colours": {
|
|
28
|
-
"NR": "#ED1B23",
|
|
29
|
-
"AR": "#00A64F",
|
|
30
|
-
"RR": "#00AEEF",
|
|
31
|
-
"EP": "#FFF200",
|
|
32
|
-
"AF": "#EC008C",
|
|
33
|
-
"TE":"#f7f7d4",
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
#FFF200 yellow
|
|
38
|
-
#EC008C magenta
|
|
39
|
-
#00AEEF cyan
|
|
40
|
-
#00A64F green
|
|
41
|
-
#ED1B23 red
|
|
42
|
-
|
|
43
|
-
# "VR_ER": "#ff6644", #Orange
|
|
44
|
-
# "AR": "#00cc00", #Green
|
|
45
|
-
# "RR": "#6699ff", #Blue
|
|
46
|
-
# "EP_EV": "#aacc33", #Lime
|
|
47
|
-
# "AF_CN": "#dd44cc", #magenta
|
|
48
|
-
# "EO":"#f7f7d4", #light yellow
|
|
49
|
-
# "EA":"#d9f2f2" #light Cyan
|
|
50
|
-
# {
|
|
51
|
-
# "priority_tags": ["VR_ER","AR","RR","EP_EV","AF_CN","KP"],
|
|
52
|
-
# "colours": {"VR_EV_CN": "#ff6644","ER_AF": "#dd44cc","AR": "#00cc00","EP": "#aacc33","RR": "#00aaff","KP":"#aaaacc"}}
|
|
53
|
-
|
|
54
|
-
def __init__(self,aws):
|
|
55
|
-
self.aws = aws
|
|
56
|
-
self.aws = aws
|
|
57
|
-
self.config = self.aws.config
|
|
58
|
-
self.set_default_parameters()
|
|
59
|
-
|
|
60
|
-
def set_default_parameters(self):
|
|
61
|
-
priority_tags = self.defaults['priority_tags']
|
|
62
|
-
colours = self.defaults['colours']
|
|
63
|
-
options = {"ents": list(colours.keys()), "colors": colours}
|
|
64
|
-
self.config.set_display_parameters(priority_tags,colours,options)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def add_reflexive_offsets(self,df):
|
|
68
|
-
temp_df = df.copy()
|
|
69
|
-
temp_df['reflexive_offsets'] = temp_df.ReflexiveResults.apply(self.collect_reflexive_offsets)
|
|
70
|
-
return temp_df
|
|
71
|
-
|
|
72
|
-
def add_keyphrase_offsets(self,df):
|
|
73
|
-
temp_df = df.copy()
|
|
74
|
-
temp_df['keyphrase_offsets'] = temp_df.KeyPhraseResults.apply(self.collect_keyphrase_offsets)
|
|
75
|
-
return temp_df
|
|
76
|
-
|
|
77
|
-
def add_syntax_offsets(self,df):
|
|
78
|
-
temp_df = df.copy()
|
|
79
|
-
temp_df['syntax_offsets'] = temp_df.SyntaxResults.apply(self.collect_syntax_offsets)
|
|
80
|
-
return temp_df
|
|
81
|
-
|
|
82
|
-
def add_offsets(self,df):
|
|
83
|
-
df = self.add_reflexive_offsets(df)
|
|
84
|
-
df = self.add_keyphrase_offsets(df)
|
|
85
|
-
return self.add_syntax_offsets(df)
|
|
86
|
-
|
|
87
|
-
def create_displacy(self,df):
|
|
88
|
-
all_ents = list(df.apply(self.render_record,axis=1))
|
|
89
|
-
#html_out = displacy.render(all_ents,manual=True,style="ent", options=options,page=True,jupyter=False)
|
|
90
|
-
# with open(f"{path}{prefix}annotated_reflections{postfix}.html","w") as fp:
|
|
91
|
-
# fp.write(html_out)
|
|
92
|
-
#displacy.render(all_ents,manual=True,style="ent", options=options)
|
|
93
|
-
return all_ents
|
|
94
|
-
|
|
95
|
-
def render_record(self,record,title="----"):
|
|
96
|
-
#timestamp = record['timestamp'].split('T')[0]
|
|
97
|
-
#pseudonym = record['pseudonym']
|
|
98
|
-
#point_round = record['point_round']
|
|
99
|
-
#title = f"{pseudonym} ({point_round}) - {timestamp}"
|
|
100
|
-
title = f"Idx_{record.name}"
|
|
101
|
-
tags = self.config.display_priority_tags
|
|
102
|
-
text = record['text']
|
|
103
|
-
reflexive_offsets = record['reflexive_offsets']
|
|
104
|
-
keyphrase_offsets = record['keyphrase_offsets']
|
|
105
|
-
syntax_offsets = record['syntax_offsets']
|
|
106
|
-
ents = []
|
|
107
|
-
taken = []
|
|
108
|
-
offsets = []
|
|
109
|
-
for tag in tags:
|
|
110
|
-
if tag in reflexive_offsets:
|
|
111
|
-
offsets = reflexive_offsets[tag]
|
|
112
|
-
elif tag in syntax_offsets:
|
|
113
|
-
offsets = syntax_offsets[tag]
|
|
114
|
-
elif tag in keyphrase_offsets:
|
|
115
|
-
offsets = keyphrase_offsets[tag]
|
|
116
|
-
|
|
117
|
-
for off in offsets:
|
|
118
|
-
new_ent = {}
|
|
119
|
-
if off[0] in taken:
|
|
120
|
-
# the start offset is taken
|
|
121
|
-
x = None
|
|
122
|
-
elif off[1] in taken:
|
|
123
|
-
# the end offset is taken
|
|
124
|
-
x = None
|
|
125
|
-
else:
|
|
126
|
-
# both start and end is available
|
|
127
|
-
for t in range(off[0],(off[1]+1)):
|
|
128
|
-
taken.append(t)
|
|
129
|
-
#print(taken)
|
|
130
|
-
new_ent["start"] = off[0]
|
|
131
|
-
new_ent["end"] = off[1]
|
|
132
|
-
new_ent["label"] = tag
|
|
133
|
-
ents.append(new_ent)
|
|
134
|
-
|
|
135
|
-
text_ents = {
|
|
136
|
-
"text": text, #.replace('\r\n','\n'),
|
|
137
|
-
"ents": ents,
|
|
138
|
-
"title": title
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return text_ents
|
|
142
|
-
|
|
143
|
-
def collect_keyphrase_offsets(self,krs):
|
|
144
|
-
new_krs = {}
|
|
145
|
-
for kr in krs:
|
|
146
|
-
if kr['Score']>0.98:
|
|
147
|
-
new_krs.setdefault("KP",[]).append((kr['BeginOffset'],kr['EndOffset']))
|
|
148
|
-
return new_krs
|
|
149
|
-
|
|
150
|
-
def collect_reflexive_offsets(self,rrs):
|
|
151
|
-
new_rrs = {}
|
|
152
|
-
for rr in rrs:
|
|
153
|
-
if rr['Score']>0.5:
|
|
154
|
-
ent_type = rr['Type']
|
|
155
|
-
if ent_type in ['VR','ER']:
|
|
156
|
-
label = "NR"
|
|
157
|
-
elif ent_type in ['EP','EV']:
|
|
158
|
-
label = "EP"
|
|
159
|
-
elif ent_type in ['CN','AF']:
|
|
160
|
-
label = "AF"
|
|
161
|
-
else:
|
|
162
|
-
label = ent_type
|
|
163
|
-
new_rrs.setdefault(label,[]).append((rr['BeginOffset'],rr['EndOffset']))
|
|
164
|
-
return new_rrs
|
|
165
|
-
|
|
166
|
-
def collect_syntax_offsets(self,syntax_results):
|
|
167
|
-
offsets = {}
|
|
168
|
-
for sr in syntax_results:
|
|
169
|
-
pos = sr['PartOfSpeech']
|
|
170
|
-
if pos['Score']>0.99:
|
|
171
|
-
if pos['Tag'] in ['NOUN','ADJ']: # TE - Topic Entity
|
|
172
|
-
offsets.setdefault("TE",[]).append((sr['BeginOffset'],sr['EndOffset']))
|
|
173
|
-
# if pos['Tag'] in ['ADV','VERB']:
|
|
174
|
-
# offsets.setdefault("EA",[]).append((sr['BeginOffset'],sr['EndOffset']))
|
|
175
|
-
return self.concatenate_offsets(offsets)
|
|
176
|
-
|
|
177
|
-
def concatenate_offsets(self,offsets:dict):
|
|
178
|
-
new_offsets = {}
|
|
179
|
-
for k in offsets.keys():
|
|
180
|
-
#print("TAG:",k)
|
|
181
|
-
#print("Offsets:",len(offsets[k]))
|
|
182
|
-
b,e = offsets[k][0] # set to first tag
|
|
183
|
-
for v in offsets[k]:
|
|
184
|
-
#print("b,e",b,e)
|
|
185
|
-
#print("offset:",v)
|
|
186
|
-
if v[0] <= (e+1): # this tag extends a previous tag
|
|
187
|
-
e = v[1]
|
|
188
|
-
#print("extending")
|
|
189
|
-
#print("new_offset:",(b,e))
|
|
190
|
-
else: # this tag starts a new tag
|
|
191
|
-
#print("new tag")
|
|
192
|
-
new_offsets.setdefault(k,[]).append((b,e))
|
|
193
|
-
b = v[0]
|
|
194
|
-
e = v[1]
|
|
195
|
-
#print("New offsets:",len(new_offsets[k]))
|
|
196
|
-
return new_offsets
|
|
197
|
-
|
|
198
|
-
class RES_text:
|
|
199
|
-
|
|
200
|
-
def __init__(self):
|
|
201
|
-
self._setup()
|
|
202
|
-
|
|
203
|
-
def _setup(self):
|
|
204
|
-
return None
|
|
205
|
-
|
|
206
|
-
def show(self):
|
|
207
|
-
#displacy.render(disp_data,manual=True,style="ent", options=cfg.display_options)
|
|
208
|
-
return None
|
|
209
|
-
|
|
210
|
-
class RES_graph:
|
|
211
|
-
|
|
212
|
-
#
|
|
213
|
-
gt_props = {0:{ "lbl":"RR",
|
|
214
|
-
"pos":(0.2,6.5),
|
|
215
|
-
"clr":"#00AEEF"},
|
|
216
|
-
1:{ "lbl":"NR",
|
|
217
|
-
"pos":(5,10),
|
|
218
|
-
"clr":"#ED1B23"},
|
|
219
|
-
2:{ "lbl":"AR",
|
|
220
|
-
"pos":(9.8,6.5),
|
|
221
|
-
"clr":"#00A64F"},
|
|
222
|
-
3:{ "lbl":"AF",
|
|
223
|
-
"pos":(7.9,1),
|
|
224
|
-
"clr":"#EC008C"},
|
|
225
|
-
4:{ "lbl":"EP",
|
|
226
|
-
"pos":(2.1,1),
|
|
227
|
-
"clr":"#FFF200"}}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
# re_props = {"RR":{
|
|
231
|
-
# "idx": 0,
|
|
232
|
-
# "pos":(0.2,6.5),
|
|
233
|
-
# "clr":"#00AEEF"},
|
|
234
|
-
# "NR":{
|
|
235
|
-
# "idx": 1,
|
|
236
|
-
# "pos":(5,10),
|
|
237
|
-
# "clr":"#ED1B23"},
|
|
238
|
-
# "AR":{
|
|
239
|
-
# "idx": 2,
|
|
240
|
-
# "pos":(9.8,6.5),
|
|
241
|
-
# "clr":"#00A64F"},
|
|
242
|
-
# "AF":{
|
|
243
|
-
# "idx": 3,
|
|
244
|
-
# "pos":(7.9,1),
|
|
245
|
-
# "clr":"#EC008C"},
|
|
246
|
-
# "EP":{
|
|
247
|
-
# "idx": 4,
|
|
248
|
-
# "pos":(2.1,1),
|
|
249
|
-
# "clr":"#FFF200"}}
|
|
250
|
-
|
|
251
|
-
#
|
|
252
|
-
edges = dict()
|
|
253
|
-
#
|
|
254
|
-
iso_vertices = set()
|
|
255
|
-
#
|
|
256
|
-
v_label = None
|
|
257
|
-
#
|
|
258
|
-
v_color = None
|
|
259
|
-
#
|
|
260
|
-
v_pos = None
|
|
261
|
-
|
|
262
|
-
#
|
|
263
|
-
def __init__(self,matrix=None):
|
|
264
|
-
self._setup(matrix)
|
|
265
|
-
|
|
266
|
-
#
|
|
267
|
-
def _setup(self,matrix):
|
|
268
|
-
if matrix:
|
|
269
|
-
# Edges from matrix
|
|
270
|
-
self.edges = self._matrix_to_dict(matrix)
|
|
271
|
-
self.graph = Graph(g=self.edges.keys(),directed=False)
|
|
272
|
-
self.e_weight = self.graph.new_ep("double",vals=self.edges.values())
|
|
273
|
-
# Handle colour of isolated vertices
|
|
274
|
-
default_clrs = self._get_prop_values('clr')
|
|
275
|
-
actual_clrs = []
|
|
276
|
-
for i in range(5):
|
|
277
|
-
if i in self.iso_vertices:
|
|
278
|
-
clr = "#cccccc"
|
|
279
|
-
else:
|
|
280
|
-
clr = default_clrs[i]
|
|
281
|
-
actual_clrs.append(clr)
|
|
282
|
-
self.v_color = self.graph.new_vp("string",vals=actual_clrs)
|
|
283
|
-
else:
|
|
284
|
-
# No edges
|
|
285
|
-
self.graph = Graph(g=self._empty_edge_dict(),directed=False)
|
|
286
|
-
self.e_weight = self.graph.new_ep("double")
|
|
287
|
-
self.v_color = self.graph.new_vp("string",val="#cccccc")
|
|
288
|
-
# Vertex properties common to all graphs
|
|
289
|
-
self.v_label = self.graph.new_vp("string",vals=self._get_prop_values('lbl'))
|
|
290
|
-
self.v_pos = self.graph.new_vp("vector<double>",vals=self._get_prop_values('pos'))
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
#
|
|
295
|
-
def _matrix_to_dict(self,matrix):
|
|
296
|
-
edges = {}
|
|
297
|
-
for r,row in enumerate(matrix):
|
|
298
|
-
# if empty row, add to iso_vertices
|
|
299
|
-
if sum(row) == 0:
|
|
300
|
-
self.iso_vertices.add(r)
|
|
301
|
-
else:
|
|
302
|
-
for c,weight in enumerate(row):
|
|
303
|
-
if weight > 0:
|
|
304
|
-
edge = tuple(sorted((r,c)))
|
|
305
|
-
#print("r,c:",edge," - ",weight)
|
|
306
|
-
edges[edge] = weight
|
|
307
|
-
return edges
|
|
308
|
-
|
|
309
|
-
#
|
|
310
|
-
def _empty_edge_dict(self):
|
|
311
|
-
empty_edges = {}
|
|
312
|
-
for idx in self.gt_props.keys():
|
|
313
|
-
empty_edges[idx] = []
|
|
314
|
-
return empty_edges
|
|
315
|
-
|
|
316
|
-
#
|
|
317
|
-
def _get_prop_values(self,key):
|
|
318
|
-
values_list = self.gt_props.values()
|
|
319
|
-
return [p[key] for p in values_list]
|
|
320
|
-
|
|
321
|
-
# flip coordinates for graph-tool
|
|
322
|
-
def _flipY(self,vpositions):
|
|
323
|
-
x, y = ungroup_vector_property(vpositions, [0, 1])
|
|
324
|
-
y.fa *= -1
|
|
325
|
-
y.fa -= y.fa.min()
|
|
326
|
-
return group_vector_property([x, y])
|
|
327
|
-
|
|
328
|
-
#
|
|
329
|
-
def show(self,inline=True):
|
|
330
|
-
graph = self.graph
|
|
331
|
-
positions = self._flipY(self.v_pos)
|
|
332
|
-
labels = self.v_label
|
|
333
|
-
colors = self.v_color
|
|
334
|
-
weights = self.e_weight
|
|
335
|
-
graph_draw(graph, inline=inline,output_size=(300,300),fit_view=0.7,
|
|
336
|
-
pos=positions,
|
|
337
|
-
vertex_text=labels,
|
|
338
|
-
vertex_font_family="sans serif",
|
|
339
|
-
vertex_font_size=18,
|
|
340
|
-
vertex_font_weight=cairo.FONT_WEIGHT_BOLD,
|
|
341
|
-
vertex_fill_color=colors,
|
|
342
|
-
vertex_size = 50,
|
|
343
|
-
vertex_halo=False,
|
|
344
|
-
vertex_pen_width=1.2,
|
|
345
|
-
vertex_color="#999999",
|
|
346
|
-
edge_pen_width=weights)
|
|
347
|
-
|
|
348
|
-
def get_vertex_labels(self):
|
|
349
|
-
return self._get_prop_values('lbl')
|
|
350
|
-
|
|
351
|
-
def get_vertex_colours(self):
|
|
352
|
-
return self._get_prop_values('clr')
|
|
353
|
-
|
|
354
|
-
def get_vertex_positions(self):
|
|
355
|
-
return self._get_prop_values('pos')
|
reflexive-1.2.7.dist-info/RECORD
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
reflexive/__init__.py,sha256=x5l8GV_9yC8yJyjTLqiM_WkfuPMLuNgQxF6PIz5MfFU,422
|
|
2
|
-
reflexive/analyse.py,sha256=CU6mQ8PxQrkOvuSe4mmnuI18jGMkuxql3zLZ1vEeMEY,17466
|
|
3
|
-
reflexive/cfg.py,sha256=tDPiC9NwpEVoT05_831sMsMfHhJt8pVrSOsgbtzTNDM,4267
|
|
4
|
-
reflexive/res.py,sha256=rMaXSf0xRrbER9HWqGviTuAKBeyxcv_j2wyTBUshFbQ,7833
|
|
5
|
-
reflexive/res_functions.py,sha256=YF45yUF8NYMSC19DFpE0lmV4xyNxv3QqbbzZmdwmFzg,1231
|
|
6
|
-
reflexive/session.py,sha256=8STWo8sqmWn-1PHcloFbgmLEvd7lsiFTU4t7ESRTsvw,10046
|
|
7
|
-
reflexive/util.py,sha256=uU7-lqUmiCiCaR85AdNFKXrdrBspjb1Rmd-yThA3fRU,3699
|
|
8
|
-
reflexive/visualise.py,sha256=pVnsPJOnHiLAIvDDm9P0u6-sGQINC4GVOY9b0GrzTK4,11725
|
|
9
|
-
reflexive-1.2.7.dist-info/METADATA,sha256=7NseRqUpaOJYKjJmg-UmseqANTCye8khCfYMkGDYWEE,574
|
|
10
|
-
reflexive-1.2.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
11
|
-
reflexive-1.2.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
12
|
-
reflexive-1.2.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|