relik-ie commited on
Commit
8432c73
·
verified ·
1 Parent(s): 92254d3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -20
app.py CHANGED
@@ -221,7 +221,7 @@ relik_models = {
221
  }
222
 
223
 
224
- def get_span_annotations(response, doc):
225
  dict_ents = {}
226
  el_link_wrapper = (
227
  "<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css'><a href='https://en.wikipedia.org/wiki/{}' style='color: #414141'><i class='fa-brands fa-wikipedia-w fa-xs' style='color: #414141'></i> {}</a>"
@@ -236,7 +236,7 @@ def get_span_annotations(response, doc):
236
  span.end,
237
  el_link_wrapper.format(
238
  span.label.replace(" ", "_"), span.label
239
- ) if span.label != "--NME--" else "--NME--",
240
  # kb_id=span.label.replace(" ", "_")
241
  )
242
  )
@@ -249,7 +249,7 @@ def get_span_annotations(response, doc):
249
  colors = get_random_color(set([span.label_ for span in spans]))
250
  return spans, colors, dict_ents
251
 
252
- def generate_graph(spans, response, colors, dict_ents, bgcolor="#111827", font_color="white"):
253
  g = Network(
254
  width="720px",
255
  height="600px",
@@ -269,7 +269,7 @@ def generate_graph(spans, response, colors, dict_ents, bgcolor="#111827", font_c
269
 
270
  for ent in spans:
271
  # if not NME use title:
272
- if dict_ents[(ent.start, ent.end)][2] != "--NME--":
273
  g.add_node(
274
  dict_ents[(ent.start, ent.end)][2],
275
  label=dict_ents[(ent.start, ent.end)][2],
@@ -289,22 +289,23 @@ def generate_graph(spans, response, colors, dict_ents, bgcolor="#111827", font_c
289
  )
290
  seen_rels = set()
291
  for rel in response.triplets:
292
- if dict_ents[(rel.subject.start, rel.subject.end)][2] == "--NME--" and dict_ents[(rel.object.start, rel.object.end)][2] == "--NME--":
293
- if (rel.subject.text, rel.object.text, rel.label) in seen_rels:
294
- continue
295
- elif dict_ents[(rel.subject.start, rel.subject.end)][2] == "--NME--" and dict_ents[(rel.object.start, rel.object.end)][2] != "--NME--":
296
- if (rel.subject.text, dict_ents[(rel.object.start, rel.object.end)][2], rel.label) in seen_rels:
297
- continue
298
- elif dict_ents[(rel.subject.start, rel.subject.end)][2] != "--NME--" and dict_ents[(rel.object.start, rel.object.end)][2] == "--NME--":
299
- if (dict_ents[(rel.subject.start, rel.subject.end)][2], rel.object.text, rel.label) in seen_rels:
300
- continue
301
- else:
302
- if (dict_ents[(rel.subject.start, rel.subject.end)][2], dict_ents[(rel.object.start, rel.object.end)][2], rel.label) in seen_rels:
303
- continue
 
304
 
305
  g.add_edge(
306
- dict_ents[(rel.subject.start, rel.subject.end)][2] if dict_ents[(rel.subject.start, rel.subject.end)][2] != "--NME--" else dict_ents[(rel.subject.start, rel.subject.end)][1],
307
- dict_ents[(rel.object.start, rel.object.end)][2] if dict_ents[(rel.object.start, rel.object.end)][2] != "--NME--" else dict_ents[(rel.object.start, rel.object.end)][1],
308
  label=rel.label,
309
  title=rel.label,
310
  )
@@ -344,7 +345,7 @@ def text_analysis(Text, Model, Relation_Threshold, Window_Size, Window_Stride):
344
  nlp = spacy.blank("xx")
345
  annotated_text = relik(Text, annotation_type="word", num_workers=0, remove_nmes= False, relation_threshold = Relation_Threshold, window_size=Window_Size, window_stride=Window_Stride)
346
  doc = Doc(nlp.vocab, words=[token.text for token in annotated_text.tokens])
347
- spans, colors, dict_ents = get_span_annotations(response=annotated_text, doc=doc)
348
  doc.spans["sc"] = spans
349
 
350
  # build the EL display
@@ -362,7 +363,7 @@ def text_analysis(Text, Model, Relation_Threshold, Window_Size, Window_Stride):
362
  display_re = ""
363
  if annotated_text.triplets:
364
  # background_color should be the same as the background of the page
365
- display_re = generate_graph(spans, annotated_text, colors, dict_ents)
366
  return display_el, display_re
367
 
368
 
 
221
  }
222
 
223
 
224
+ def get_span_annotations(response, doc, ner=False):
225
  dict_ents = {}
226
  el_link_wrapper = (
227
  "<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css'><a href='https://en.wikipedia.org/wiki/{}' style='color: #414141'><i class='fa-brands fa-wikipedia-w fa-xs' style='color: #414141'></i> {}</a>"
 
236
  span.end,
237
  el_link_wrapper.format(
238
  span.label.replace(" ", "_"), span.label
239
+ ) if span.label != "--NME--" and not ner else span.label,
240
  # kb_id=span.label.replace(" ", "_")
241
  )
242
  )
 
249
  colors = get_random_color(set([span.label_ for span in spans]))
250
  return spans, colors, dict_ents
251
 
252
+ def generate_graph(spans, response, colors, dict_ents, bgcolor="#111827", font_color="white", ner=False):
253
  g = Network(
254
  width="720px",
255
  height="600px",
 
269
 
270
  for ent in spans:
271
  # if not NME use title:
272
+ if dict_ents[(ent.start, ent.end)][2] != "--NME--" or not ner:
273
  g.add_node(
274
  dict_ents[(ent.start, ent.end)][2],
275
  label=dict_ents[(ent.start, ent.end)][2],
 
289
  )
290
  seen_rels = set()
291
  for rel in response.triplets:
292
+ if not ner:
293
+ if dict_ents[(rel.subject.start, rel.subject.end)][2] == "--NME--" and dict_ents[(rel.object.start, rel.object.end)][2] == "--NME--":
294
+ if (rel.subject.text, rel.object.text, rel.label) in seen_rels:
295
+ continue
296
+ elif dict_ents[(rel.subject.start, rel.subject.end)][2] == "--NME--" and dict_ents[(rel.object.start, rel.object.end)][2] != "--NME--":
297
+ if (rel.subject.text, dict_ents[(rel.object.start, rel.object.end)][2], rel.label) in seen_rels:
298
+ continue
299
+ elif dict_ents[(rel.subject.start, rel.subject.end)][2] != "--NME--" and dict_ents[(rel.object.start, rel.object.end)][2] == "--NME--":
300
+ if (dict_ents[(rel.subject.start, rel.subject.end)][2], rel.object.text, rel.label) in seen_rels:
301
+ continue
302
+ else:
303
+ if (dict_ents[(rel.subject.start, rel.subject.end)][2], dict_ents[(rel.object.start, rel.object.end)][2], rel.label) in seen_rels:
304
+ continue
305
 
306
  g.add_edge(
307
+ dict_ents[(rel.subject.start, rel.subject.end)][2] if dict_ents[(rel.subject.start, rel.subject.end)][2] != "--NME--" and not ner else dict_ents[(rel.subject.start, rel.subject.end)][1],
308
+ dict_ents[(rel.object.start, rel.object.end)][2] if dict_ents[(rel.object.start, rel.object.end)][2] != "--NME--" and not ner else dict_ents[(rel.object.start, rel.object.end)][1],
309
  label=rel.label,
310
  title=rel.label,
311
  )
 
345
  nlp = spacy.blank("xx")
346
  annotated_text = relik(Text, annotation_type="word", num_workers=0, remove_nmes= False, relation_threshold = Relation_Threshold, window_size=Window_Size, window_stride=Window_Stride)
347
  doc = Doc(nlp.vocab, words=[token.text for token in annotated_text.tokens])
348
+ spans, colors, dict_ents = get_span_annotations(response=annotated_text, doc=doc, ner="ner" in Model)
349
  doc.spans["sc"] = spans
350
 
351
  # build the EL display
 
363
  display_re = ""
364
  if annotated_text.triplets:
365
  # background_color should be the same as the background of the page
366
+ display_re = generate_graph(spans, annotated_text, colors, dict_ents, ner="ner" in Model)
367
  return display_el, display_re
368
 
369