Spaces:
Running
Running
Joel DSL
commited on
Commit
•
6094f30
1
Parent(s):
e2d70e1
init
Browse files
app.py
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import numpy as np
|
2 |
+
import gradio as gr
|
3 |
+
from transformers import pipeline
|
4 |
+
pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
|
5 |
+
qa = pipeline("question-answering", model="deepset/gelectra-large-germanquad")
|
6 |
+
gpt = pipeline("text-generation", model="gpt2", num_return_sequences=5)
|
7 |
+
sumModel = pipeline("summarization", model="Einmalumdiewelt/T5-Base_GNAD")
|
8 |
+
|
9 |
+
title_text = "(Anmerkung: Diese Seite ist noch in Entwicklung.)<br />Spätestens seit der Veröffentlichung von ChatGPT geniessen moderne Sprachmodelle grosse öffentliche Aufmerksamkeit. Allerdings ist es für nicht-Experten schwierig einzuschätzen, inwiefern die Technologie in ihrem Arbeitsumfeld eingesetzt werden könnten. Damit auch sie eine Intuition für die Möglichkeiten und Limitierungen von grossen Sprachmodellen entwickeln können, haben wir diese interaktive Webseite entwickelt. <br />Grundsätzlich sind Sprachmodelle nichts als statistische Modelle, welche die menschliche Sprache abbilden. Sie werden zuerst auf sehr allgemeine Tasks \"vortrainiert\", damit sie die Struktur der Sprache erlernen können. Ein solcher Task ist es zum Beispiel, das nächste Wort in einem Text vorauszusagen: Um dies lösen zu können, braucht ein Modell einerseits ein Verständnis für Grammatik. Anderseits muss es aber auch ein gewisses Verständnis für unsere \"Welt\" entwickeln, um stets das richtige Wort voraussagen zu können. Ein Beispiel für ein solches Modell ist GPT-2, welches Sie in der nachfolgenden Demo ausprobieren können. <br />Die vortrainierten Sprachmodelle haben also bereits ein Verständnis für Sprache, und eignen sich deshalb gut, um sie auf eine spezifische Aufgabe zu spezialisieren. Mögliche spezialisierte Aufgaben sind Übersetzungen, das Erkennen und Taggen von gewissen Konzepten im Text (sog. Named Entity Recognition), Textklassifizierung (z.B.: Ist diese Mail eine Spam-Mail? Ist dieses Feedback positiv?), Text-Zusammenfassung oder Fragen zu beantworten. Letztere zwei Beispiele können Sie in der Demo-App ausprobieren. <br />Die Qualität des Sprachmodells hängt stark von der Grösse des Modells sowie der Grösse des Datensatzes ab. Während die Technologien hinter ChatGPT bereits weitestgehend bekannt waren, ist das einzige Geheimnis hinter den verblüffenden Resultaten die Modellgrösse: Das Modell hat 175 Milliarden Parameter und wurde auf über 8 Milliarden Textdokumenten trainiert. Dadurch konnte es ein so gutes Verständnis für Sprache und unsere Welt erlangen, dass man das Gefühl hat, man interagiere mit einem anderen Menschen. "
|
10 |
+
gpt2_text = 'GPT-2 ist ein Vorläufer von GPT-3.5, auf dem ChatGPT beruht. Das Modell vervollständigt eingegebene Texte, in dem es immer ein wahrscheinliches nächstes Wort voraussagt. Allerdings hat es auch einen kleinen Zufallsfaktor, damit der gleiche Input nicht immer das gleiche Resultat liefern. Das hier vorgestellte GPT-2 Modell hat 124 Millionen Parameter, ist also 1400x kleiner als ChatGPT - und somit auch erkennbar schlechter in der Textgenerierung. Das Modell versteht nur Englisch. '
|
11 |
+
summarization_text = 'Hier wurde ein sogenanntes T5-Sprachmodell auf den Task der Text-Zusammenfassung spezialisiert. Das Modell versteht nur Englisch. '
|
12 |
+
qa_text = 'Dieses Modell wurde darauf spezialisiert, in einem Text die Antwort auf eine gestellte Frage zu finden. Das Modell versteht nur Deutsch. '
|
13 |
+
|
14 |
+
|
15 |
+
def textGeneration(text):
|
16 |
+
return gpt(text)
|
17 |
+
|
18 |
+
|
19 |
+
def predict(text):
|
20 |
+
return pipe(text)[0]["translation_text"]
|
21 |
+
|
22 |
+
|
23 |
+
def questionAnswering(question, context):
|
24 |
+
return qa(question=question, context=context)["answer"]
|
25 |
+
|
26 |
+
|
27 |
+
def summarization(text):
|
28 |
+
return sumModel(text)[0]["summary_text"]
|
29 |
+
|
30 |
+
|
31 |
+
with gr.Blocks() as demo:
|
32 |
+
gr.Markdown(title_text)
|
33 |
+
with gr.Tab("Text Generation"):
|
34 |
+
gr.Markdown(gpt2_text)
|
35 |
+
gptInput = gr.Textbox()
|
36 |
+
output = gr.Textbox(label="Output 1")
|
37 |
+
output2 = gr.Textbox(label="Output 2")
|
38 |
+
output3 = gr.Textbox(label="Output 3")
|
39 |
+
output4 = gr.Textbox(label="Output 4")
|
40 |
+
output5 = gr.Textbox(label="Output 5")
|
41 |
+
generate_button = gr.Button("Generate")
|
42 |
+
with gr.Tab("Question Answering"):
|
43 |
+
gr.Markdown(qa_text)
|
44 |
+
with gr.Row():
|
45 |
+
with gr.Column():
|
46 |
+
context = gr.Textbox(label="Context")
|
47 |
+
question = gr.Textbox(label="Question")
|
48 |
+
text_output = gr.Textbox(label="Answer")
|
49 |
+
gr.Examples(
|
50 |
+
["Mein Name ist Wolfgang und ich lebe in Berlin", "Der Amazonas-Regenwald, auf Englisch auch als Amazonien oder Amazonas-Dschungel bekannt, ist ein feuchter Laubwald, der den größten Teil des Amazonas-Beckens Südamerikas bedeckt. Dieses Becken umfasst 7.000.000 Quadratkilometer (2.700.000 Quadratmeilen), von denen 5.500.000 Quadratkilometer (2.100.000 Quadratmeilen) vom Regenwald bedeckt sind. Diese Region umfasst Gebiete von neun Nationen. Der größte Teil des Waldes befindet sich in Brasilien mit 60% des Regenwaldes, gefolgt von Peru mit 13%, Kolumbien mit 10% und geringen Mengen in Venezuela, Ecuador, Bolivien, Guyana, Suriname und Französisch-Guayana. Staaten oder Abteilungen in vier Nationen enthalten \"Amazonas\" in ihren Namen. Der Amazonas repräsentiert mehr als die Hälfte der verbleibenden Regenwälder des Planeten und umfasst den größten und artenreichsten tropischen Regenwald der Welt mit geschätzten 390 Milliarden Einzelbäumen, die in 16.000 Arten unterteilt sind."], context, label="Context Examples")
|
51 |
+
gr.Examples(["Wo wohne ich?", "Welcher Name wird auch verwendet, um den Amazonas-Regenwald auf Englisch zu beschreiben?"],
|
52 |
+
question, label="Question Examples")
|
53 |
+
text_button = gr.Button("Answer")
|
54 |
+
with gr.Tab("Summarisation"):
|
55 |
+
gr.Markdown(summarization_text)
|
56 |
+
inputText = gr.Textbox()
|
57 |
+
summarized = gr.Textbox(label="Summarisation")
|
58 |
+
gr.Examples(["Paris is the capital and most populous city of France, with an estimated population of 2,175,601 residents as of 2018, in an area of more than 105 square kilometres (41 square miles). The City of Paris is the centre and seat of government of the region and province of Île-de-France, or Paris Region, which has an estimated population of 12,174,880, or about 18 percent of the population of France as of 2017."],
|
59 |
+
inputText, label="Question Examples")
|
60 |
+
summarize_button = gr.Button("Summarize")
|
61 |
+
|
62 |
+
generate_button.click(textGeneration, inputs=gptInput, outputs=[
|
63 |
+
output, output2, output3, output4, output5])
|
64 |
+
text_button.click(questionAnswering, inputs=[
|
65 |
+
question, context], outputs=text_output)
|
66 |
+
summarize_button.click(
|
67 |
+
summarization, inputs=inputText, outputs=summarized)
|
68 |
+
|
69 |
+
demo.launch()
|