Spaces:
Running
Running
Commit
·
023a91a
1
Parent(s):
ecca0d1
Cleanup
Browse files- app.py +24 -39
- requirements.txt +3 -3
app.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
import json
|
| 2 |
-
from collections import defaultdict
|
| 3 |
|
| 4 |
import matplotlib.pyplot as plt
|
| 5 |
import gradio as gr
|
|
@@ -11,22 +11,14 @@ model = AutoModelForTokenClassification.from_pretrained("d4data/biomedical-ner-a
|
|
| 11 |
|
| 12 |
plt.switch_backend("Agg")
|
| 13 |
|
| 14 |
-
|
| 15 |
with open("examples.json", "r") as f:
|
| 16 |
-
|
| 17 |
-
|
| 18 |
|
| 19 |
pipe = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="simple")
|
| 20 |
|
| 21 |
|
| 22 |
-
def group_by_entity(raw):
|
| 23 |
-
out = defaultdict(int)
|
| 24 |
-
for ent in raw:
|
| 25 |
-
out[ent["entity_group"]] += 1
|
| 26 |
-
# out["total"] = sum(out.values())
|
| 27 |
-
return out
|
| 28 |
-
|
| 29 |
-
|
| 30 |
def plot_to_figure(grouped):
|
| 31 |
fig = plt.figure()
|
| 32 |
plt.bar(x=list(grouped.keys()), height=list(grouped.values()))
|
|
@@ -36,7 +28,7 @@ def plot_to_figure(grouped):
|
|
| 36 |
return fig
|
| 37 |
|
| 38 |
|
| 39 |
-
def
|
| 40 |
raw = pipe(text)
|
| 41 |
ner_content = {
|
| 42 |
"text": text,
|
|
@@ -51,30 +43,23 @@ def ner(text):
|
|
| 51 |
for x in raw
|
| 52 |
],
|
| 53 |
}
|
| 54 |
-
grouped = group_by_entity(raw)
|
| 55 |
-
figure = plot_to_figure(grouped)
|
| 56 |
-
label = EXAMPLE_MAP.get(text, "Unknown")
|
| 57 |
-
|
| 58 |
-
meta = {
|
| 59 |
-
"entity_counts": grouped,
|
| 60 |
-
"entities": len(set(grouped.keys())),
|
| 61 |
-
"counts": sum(grouped.values()),
|
| 62 |
-
}
|
| 63 |
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
gr.
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
)
|
| 79 |
-
|
| 80 |
-
|
|
|
|
|
|
|
|
|
| 1 |
import json
|
| 2 |
+
from collections import defaultdict, Counter
|
| 3 |
|
| 4 |
import matplotlib.pyplot as plt
|
| 5 |
import gradio as gr
|
|
|
|
| 11 |
|
| 12 |
plt.switch_backend("Agg")
|
| 13 |
|
| 14 |
+
examples = {}
|
| 15 |
with open("examples.json", "r") as f:
|
| 16 |
+
content = json.load(f)
|
| 17 |
+
examples = {x["text"]: x["label"] for x in content}
|
| 18 |
|
| 19 |
pipe = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="simple")
|
| 20 |
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
def plot_to_figure(grouped):
|
| 23 |
fig = plt.figure()
|
| 24 |
plt.bar(x=list(grouped.keys()), height=list(grouped.values()))
|
|
|
|
| 28 |
return fig
|
| 29 |
|
| 30 |
|
| 31 |
+
def run_ner(text):
|
| 32 |
raw = pipe(text)
|
| 33 |
ner_content = {
|
| 34 |
"text": text,
|
|
|
|
| 43 |
for x in raw
|
| 44 |
],
|
| 45 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
+
grouped = Counter((x["entity_group"] for x in raw))
|
| 48 |
+
rows = [[k, v] for k, v in grouped.items()]
|
| 49 |
+
figure = plot_to_figure(grouped)
|
| 50 |
+
return ner_content, rows, figure
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
with gr.Blocks() as demo:
|
| 54 |
+
note = gr.Textbox(label="Note text")
|
| 55 |
+
with gr.Accordion("Examples", open=False):
|
| 56 |
+
examples = gr.Examples(examples=list(examples.keys()), inputs=note)
|
| 57 |
+
with gr.Tab("NER"):
|
| 58 |
+
highlight = gr.HighlightedText(label="NER", combine_adjacent=True)
|
| 59 |
+
with gr.Tab("Bar"):
|
| 60 |
+
plot = gr.Plot(label="Bar")
|
| 61 |
+
with gr.Tab("Table"):
|
| 62 |
+
table = gr.Dataframe(headers=["Entity", "Count"])
|
| 63 |
+
note.submit(run_ner, [note], [highlight, table, plot])
|
| 64 |
+
|
| 65 |
+
demo.launch()
|
requirements.txt
CHANGED
|
@@ -18,7 +18,7 @@ filelock==3.8.0
|
|
| 18 |
fonttools==4.37.4
|
| 19 |
frozenlist==1.3.1
|
| 20 |
fsspec==2022.8.2
|
| 21 |
-
gradio==3.
|
| 22 |
h11==0.12.0
|
| 23 |
httpcore==0.15.0
|
| 24 |
httpx==0.23.0
|
|
@@ -60,9 +60,9 @@ sniffio==1.3.0
|
|
| 60 |
starlette==0.20.4
|
| 61 |
tokenizers==0.12.1
|
| 62 |
tomli==2.0.1
|
| 63 |
-
torch==1.
|
| 64 |
tqdm==4.64.1
|
| 65 |
-
transformers==4.
|
| 66 |
typing_extensions==4.4.0
|
| 67 |
uc-micro-py==1.0.1
|
| 68 |
urllib3==1.26.12
|
|
|
|
| 18 |
fonttools==4.37.4
|
| 19 |
frozenlist==1.3.1
|
| 20 |
fsspec==2022.8.2
|
| 21 |
+
gradio==3.11.0
|
| 22 |
h11==0.12.0
|
| 23 |
httpcore==0.15.0
|
| 24 |
httpx==0.23.0
|
|
|
|
| 60 |
starlette==0.20.4
|
| 61 |
tokenizers==0.12.1
|
| 62 |
tomli==2.0.1
|
| 63 |
+
torch==1.13.0
|
| 64 |
tqdm==4.64.1
|
| 65 |
+
transformers==4.24.0
|
| 66 |
typing_extensions==4.4.0
|
| 67 |
uc-micro-py==1.0.1
|
| 68 |
urllib3==1.26.12
|