Spaces:
Running
Running
eljanmahammadli
commited on
Commit
•
38d87ea
1
Parent(s):
9df8406
implemented dynamic color schema for low weights + smoothing
Browse files- app.py +0 -7
- highlighter.py +25 -10
app.py
CHANGED
@@ -307,13 +307,6 @@ with gr.Blocks() as demo:
|
|
307 |
api_name="bc_highlighter",
|
308 |
)
|
309 |
|
310 |
-
# quillbot_highlighter.click(
|
311 |
-
# fn=analyze_and_highlight,
|
312 |
-
# inputs=[input_text],
|
313 |
-
# outputs=[highlighter_html],
|
314 |
-
# api_name="quillbot_highlighter",
|
315 |
-
# )
|
316 |
-
|
317 |
date_from = ""
|
318 |
date_to = ""
|
319 |
|
|
|
307 |
api_name="bc_highlighter",
|
308 |
)
|
309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
date_from = ""
|
311 |
date_to = ""
|
312 |
|
highlighter.py
CHANGED
@@ -26,24 +26,39 @@ def explainer(text, model_type):
|
|
26 |
|
27 |
|
28 |
def analyze_and_highlight(text, model_type):
|
|
|
29 |
highlighted_text = ""
|
30 |
sentences_weights, _ = explainer(text, model_type)
|
31 |
-
|
32 |
-
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
|
|
|
43 |
sentence = sentence.strip()
|
44 |
if not sentence:
|
45 |
continue
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
highlighted_sentence = (
|
48 |
f'<span style="background-color: {color}; color: black;">{sentence}</span> '
|
49 |
)
|
|
|
26 |
|
27 |
|
28 |
def analyze_and_highlight(text, model_type):
|
29 |
+
|
30 |
highlighted_text = ""
|
31 |
sentences_weights, _ = explainer(text, model_type)
|
32 |
+
positive_weights = [weight for weight in sentences_weights.values() if weight >= 0]
|
33 |
+
negative_weights = [weight for weight in sentences_weights.values() if weight < 0]
|
34 |
|
35 |
+
smoothing_factor = 0.001 # we do this cos to avoid all white colors
|
36 |
+
min_positive_weight = min(positive_weights) if positive_weights else 0
|
37 |
+
max_positive_weight = max(positive_weights) if positive_weights else 0
|
38 |
+
min_negative_weight = min(negative_weights) if negative_weights else 0
|
39 |
+
max_negative_weight = max(negative_weights) if negative_weights else 0
|
40 |
+
|
41 |
+
max_positive_weight += smoothing_factor
|
42 |
+
min_negative_weight -= smoothing_factor
|
43 |
|
44 |
+
for sentence, weight in sentences_weights.items():
|
45 |
sentence = sentence.strip()
|
46 |
if not sentence:
|
47 |
continue
|
48 |
|
49 |
+
if weight >= 0 and max_positive_weight != min_positive_weight:
|
50 |
+
normalized_weight = (weight - min_positive_weight + smoothing_factor) / (
|
51 |
+
max_positive_weight - min_positive_weight
|
52 |
+
)
|
53 |
+
color = f"rgb(255, {int(255 * (1 - normalized_weight))}, {int(255 * (1 - normalized_weight))})"
|
54 |
+
elif weight < 0 and min_negative_weight != max_negative_weight:
|
55 |
+
normalized_weight = (weight - max_negative_weight - smoothing_factor) / (
|
56 |
+
min_negative_weight - max_negative_weight
|
57 |
+
)
|
58 |
+
color = f"rgb({int(255 * (1 - normalized_weight))}, 255, {int(255 * (1 - normalized_weight))})"
|
59 |
+
else:
|
60 |
+
color = "rgb(255, 255, 255)" # when no range
|
61 |
+
|
62 |
highlighted_sentence = (
|
63 |
f'<span style="background-color: {color}; color: black;">{sentence}</span> '
|
64 |
)
|