File size: 2,049 Bytes
b1c2932
 
 
 
 
 
7a079bf
 
b1c2932
55f9cc5
 
 
 
 
 
b1c2932
 
55f9cc5
5e4e87f
 
 
 
 
 
b1c2932
 
 
55f9cc5
 
 
5e4e87f
 
55f9cc5
b1c2932
72be8ef
b1c2932
 
7a079bf
 
b1c2932
 
 
7a079bf
b1c2932
 
 
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
import gradio as gr

from interfaces.cap import demo as cap_demo
from interfaces.manifesto import demo as manifesto_demo
from interfaces.sentiment import demo as sentiment_demo
from interfaces.emotion import demo as emotion_demo
from interfaces.ner import demo as ner_demo
from interfaces.ner import download_models as download_spacy_models

from spacy import glossary

entities = ["CARDINAL", "DATE", "EVENT", "FAC", "GPE", "LANGUAGE", "LAW", "LOC", "MONEY", "NORP", "ORDINAL", "ORG", "PERCENT", "PERSON", "PRODUCT", "QUANTITY", "TIME", "WORK_OF_ART"]
ent_dict = glossary.GLOSSARY
ent_sum = [f'{ent} = <i>{ent_dict[ent]}</i>' for ent in entities ]

with gr.Blocks() as demo:
    gr.Markdown(
        f"""
        <style>
        .list {{
            display: grid;
            grid-template-columns: 1fr 1fr 1fr;
            }}
        </style>
        <div style="display: block; text-align: left; padding:0; margin:0;">
            <h1 style="text-align: center">Babel Machine Demo</h1>
            <p>This is a demo for text classification using language models finetuned on data labeled by <a href="https://www.comparativeagendas.net/">CAP</a>, <a href="https://manifesto-project.wzb.eu/">Manifesto Project</a>, sentiment, and emotion coding systems.<br>
            For the coding of complete datasets, please visit the official <a href="https://babel.poltextlab.com/">Babel Machine</a> site.<br>
            Please note that named entity inputs are case sensitive.<br>
            For named entity recognition the following labels are used:</p>
            <ul class="list">
            <li class="list-item"> {'</li class="list-item"> <li>'.join(ent_sum)} </li>
            </ul>
        </div>
        """)

    gr.TabbedInterface(
        interface_list=[cap_demo, manifesto_demo, sentiment_demo, emotion_demo, ner_demo],
        tab_names=["CAP", "Manifesto", "Sentiment (3)", "Emotions (8)", "Named Entity Recognition"],
    )

if __name__ == "__main__":
    download_spacy_models()
    demo.launch()

# TODO: add all languages & domains