Sie sind auf Seite 1von 32

Hochschule Trier, Fachbereich Wirtschaft

Praxisprojektbericht
WS 2020/21

Mehrsprachige Textzusammenfassung in der


maschinellen Verarbeitung natürlicher Sprache

Referent: Prof. Dr. Helge Rieder

Vorgelegt von: Uyen Truong


Martrikelnummer: 967412
Abgabetermin: 24.01.2020
INHALTSVERZEICHNIS I

Inhaltsverzeichnis

Codeverzeichnis III

Abbildungsverzeichnis V

1 Einleitung 1

2 Sprachmerkmalen und Daten 2


2.1 Englische Texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1 Lemmatisierung und Stemming . . . . . . . . . . . . . . . . . . . . 2
2.1.2 Implementierung das Stemming des Wortes in Python . . . . . . . . 2
2.2 Vietnamesische Texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 Wort-Tokenisierung für Vietnamesisch . . . . . . . . . . . . . . . . 3
2.2.2 Vietnamesische Stoppwörter . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Deutsche Texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Wortähnlichkeiten 5

4 Extraktive Methode 6
4.1 TF-IDF Algorithmus ( Term Frequency Inverse Document Frequency ) . . 6
4.1.1 Term Frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.2 Inverse Document Frequency . . . . . . . . . . . . . . . . . . . . . . 7
4.1.3 Überschau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 Implementieren von TF-IDF Algorithmus in Python . . . . . . . . . . . . . 8
4.2.1 Satztokenisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2.2 Erstellung von Häufigkeitstabelle für Wörten in jedem Satz. . . . . 9
4.2.3 Berechnen von TermFrequency-Werten . . . . . . . . . . . . . . . . 10
4.2.4 Erstellung von Häufigkeitstabelle für Wörten im Text . . . . . . . . 10
4.2.5 Berechnen von Inverse Document Frequency-Werten . . . . . . . . . 11
4.2.6 Berechnen von TF-IDF Werten . . . . . . . . . . . . . . . . . . . . 11
4.2.7 Bewertung von den Sätzen . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.8 Generierung von der Zusammenfassung . . . . . . . . . . . . . . . . 12
INHALTSVERZEICHNIS II

4.3 TextRank Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12


4.3.1 Überschau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4 Implementieren von TextRank Algorithmus in Python . . . . . . . . . . . . 13
4.4.1 Satztokenisierung und Datenbereinigung . . . . . . . . . . . . . . . 14
4.4.2 Erstellung von Satzvektoren . . . . . . . . . . . . . . . . . . . . . . 14
4.4.3 Erstellung von Ähnlichkeitsmatrix . . . . . . . . . . . . . . . . . . . 15
4.4.4 Erstellung von Graph und Anwenden von PageRank - Algorithmus 15
4.4.5 Extraktzusammenfassung . . . . . . . . . . . . . . . . . . . . . . . 16

5 Abtraktive Methode 16
5.1 Transfer Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.2 Das Modell: Google T5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3 Implementieren von T5 für Dokument in englischer Sprache in Python . . 17
5.4 Fine-Turning das mT5-Modell für die Zusammenfassung der deutschen
und vietnamesichen Dokument . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.4.1 Datensatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.4.2 Überschau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.4.3 Implementierungsdetails . . . . . . . . . . . . . . . . . . . . . . . . 20

6 Resultate 21

7 Webapplikation 23

8 Zusammenfassung und Ausblick 24


CODEVERZEICHNIS III

Codeverzeichnis
1 Stemming englischer Texte: Aus dem Beispielsatz (siehe Programmzeile 2)
wird mit der Stemming Methode die Stammwörter (siehe Programmzeile
7) ausgegeben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Tokenisierung vietnameischer Texte: Bei diesem Quellcode wurden beispiel-
haft drei Nomen Da.i ho.c, Bách Khoa und Hà N.i tokenisiert zu Da.i ho.c,
Bách Khoa und Hà N.i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Stemming deutscher Texte: Aus dem Beispielsatz aus Zeile 3, wird aus
jedem Wort der Stemmer gebildet. Das Ergebnis sieht man in Zeile 8. Wobei
bei der deutschen Sprache Fehler auftreten können wie zum Beispiel wird
aus Wochen woch. Dadurch wird das Ergebnis in den meisten Fällen nicht
verschlechtert [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Das Glove-Modelle enthält wortverwandte Wörter zum Beispiel von king
sind prince, queen, monarch, brother und uncle verwandt. . . . . . . . . 6
5 Importieren von Bibliotheken und Modulen in Python: heapq ist ein Modul,
um die größten Elemente in einer Auflistung zu finden . . . . . . . . . . . 8
6 Segmentieren von Sätzen im Text . . . . . . . . . . . . . . . . . . . . . . . 9
7 Die verwendete Funktion bestimmt die Frequenz von wichtigen Wörtern
im Satz zu bestimmen. Aus Zeile 18 0 dresdn0 : 1 bedeutet, dass Dresender
einmal in dem ersten Satz von Quellcode 6 ankommt usw. . . . . . . . . . 9
8 Implementieren von Term Frequency Funktion in Python: Aus dem Bei-
spiel Satz 1 Quellcode 6 gibt es drei wichtigen Wörten, jeweils einen Wert
= 0.3333 bekommt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9 Verwendete Funktion zur Bestimmung von der Frequenz wichtigen Wörten
im Text. Als Ergebnis erscheint dresdn aus Zeile 10 in drei Sätzen. . . . . 10
10 Implementieren von IDF-Funktion in Python. Beispielhaft hat stolz aus
Zeile 9 einen IDF-Wert von 1.38. . . . . . . . . . . . . . . . . . . . . . . . 11
11 Implementieren von TF-IDF Funktion in Python. Aus Zeile 10 hat stolz
einen TF-IDF-Wert von 0.46. . . . . . . . . . . . . . . . . . . . . . . . . . 11
12 Verwendete Saztwert-Funktion: Das Satzgewicht wird durch den TF-IDF-
Werten von Wörten im Satz bestimmen. Aus dem Beispielsatz Quellcode
6 hat Satz 1 aus Zeile 10 ein Gewicht von 0.3736. . . . . . . . . . . . . . . 12
13 Die vewendete nlargest Funktion dient zum Abrufen sechs Sätzen mit dem
höchsten Gewicht. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
14 Importieren von nötigen Bibliotheken und Module für Textrank-Modell . . 13
15 Verwendete Funktion zur Entfernung von Stoppwörter, Satzzeichen und
Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
CODEVERZEICHNIS IV

16 Verwendete Funktion dient zum Abrufen von den Vektoren für die kon-
stituierenden Wörter in einem Satz, sowie zur Ermittlung den Mittelwert
dieser Vektoren. Aus Zeile 2 werden die Vektoren für vietnamesiche Wörter
geladen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
17 Funktion zur Berechnung der Ähnlichkeitswerte von Sätzen miteinander.
Als Ergebnis aus Zeile 6 ist der Ähnlichkeitswert zwischen Satz 0 und Satz
1 0.43. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
18 Konvertierung von die Ähnlichkeitsmatrix simm at im Quellcode17 in einen
Graphen: Aus dem Beisieltext im Quellcode 15, Satz 0 als Knote 0 hat einen
Wert von 0.122 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
19 Funktion zur Auflistung sechs Sätzen im Quellcode 15 mit dem höchsten
Gewicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
20 Zusammenfassung mit T5-Transformatoren. Das zusammengefasste Ergeb-
nis im Quellcode 20 ist nicht Teil des Originaltextes. . . . . . . . . . . . . . 17
21 Training Argumente definieren. . . . . . . . . . . . . . . . . . . . . . . . . 20
ABBILDUNGSVERZEICHNIS V

Abbildungsverzeichnis

1 Hier wird beispielhaft eine Textvektorisierung dargestellt, wobei die Vek-


toren von Mädchen und Junge räumlich näher sind im Vergleich zu Schau-
spielerin und Schauspieler . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Prozessübersicht der Textzusammenfassung mit TF-IDF Algorithmus . . . 8
3 Prozessübersicht der Textzusammenfassung mit TextRank Algorithmus . . 13
4 Visualisierung der Satzbeziehungen vom Beispielsatz im Quellcode 15 . . . 15
5 Diagramm Aufgaben des Text-zu-Text-Frameworks. für die Übersetzung
(grün), die sprachliche Akzeptanz (rot), die Satzähnlichkeit (gelb) und die
Dokumentenzusammenfassung (blau). Bildquelle [16] . . . . . . . . . . . . 17
6 Statistik für WikiLingua. Num. parallel entspricht der Anzahl der Artikel
mit einem Parallelartikel im Englisch. . . . . . . . . . . . . . . . . . . . . 18
7 Darstellung von WikiLingua Datensatz für vietnamesiche Sprache mit Da-
taFrame von Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8 Prozessübersicht des Fine-Tuning Modell MT5 für Textzusammenfassung . 19
9 Beispiel für Zusammenfassungen in Englisch aus dem Wikihow mit TF-
IDF, TexRank und T5 Modelle. Jedes Beispiel besteht aus dem Zuschnitt-
artikel, der Referenzusammenfassung und den von drei Modellen generier-
ten Zusammenfassungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
10 Beispiel für Zusammenfassungen in Deutsch aus dem Wikihow mit TF-IDF,
TexRank und mT5 Modelle. Jedes Beispiel besteht aus dem Zuschnittar-
tikel, der Referenzusammenfassung und den von drei Modellen generierten
Zusammenfassungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11 Beispiel für Zusammenfassungen in Vietnamesisch aus dem Wikihow mit
TF-IDF, TexRank und mT5 Modelle. Jedes Beispiel besteht aus dem Zu-
schnittartikel, der Referenzusammenfassung und den von drei Modellen
generierten Zusammenfassungen. . . . . . . . . . . . . . . . . . . . . . . . 23
12 Übersicht der Webapplikation. Die Webseite hat ein Eingabefeld, drei Ra-
diobuttons für drei Sprachen,von denen der Anwender einen auswählen
kann, und einen Submit-Button. . . . . . . . . . . . . . . . . . . . . . . . . 23
1 EINLEITUNG 1

1 Einleitung

Die rasante Entwicklung der Informationstechnologie in den letzten Jahrzehnten zusam-


men mit der Explosion des Internets bringen dem Menschen eine große Menge an Informa-
tionen. Dies macht es für den Benutzer zunehmend schwieriger, relevante Informationen
zu finden, die ihn interessieren. Um dieses Problem zu bewältige, wird die automatische
Zusammenfassung von Texten verwendet. Textzusammenfassung ist ein Teilgebiet von
Data Mining, mit dessen Hilfe Leser wichtige Informationen in Langtexten leicht finden
können, indem Länge und Inhalt des Originaltextes verkürzt werden. Die Ausgabe eines
Zusammenfassungssystems kommt vielen Anwendungen wie der Websuche oder Zusam-
menfassung der wissenschaftlichen Arbeit zugute.
Im Zeitalter der Informationsüberflutung sind viele Wissenschaftler und Unternehmen
an der automatischen Textzusammenfassung interessiert. Auf internationalen Konferen-
zen wie DUC 2001-2007, TAC 2008-2011, ACL 2001-2015 wurde in vielen Artikeln die
automatische Textzusammenfassung erwähnt. Darüber hinaus wurden viele unabhängige
oder integrierte Textzusammenfassungssysteme entwickelt, zum Beispiel: MEAD System,
automatische Zusammenfassungsfunktion in Microsoft Word.
Textzusammenfassungstechniken können in zwei Kategorien eingeteilt werden: Extrak-
tion und Abstraktion. Eine Extraktzusammenfassung besteht aus Sätzen, die aus dem
Dokument extrahiert wurden, während eine Abstraktzusammenfassung Wörter und Aus-
drücke verwenden kann, die im Originaldokument nicht enthalten sind [1]. Normalerweise
erfordert eine abstrakte Zusammenfassung ein tieferes Verständnis des Textes und lingui-
stische Kenntnisse. Im Gegensatz dazu hat die einfache Extraktion von Sätzen in großen
Anwendungen zu zufriedenstellenden Ergebnissen geführt, insbesondere bei der Zusam-
menfassung mehrerer Dokumente.
Während für englische und deutsche Dokumente viele Erfolge erzielt wurden, befin-
det sich Vietnamesisch aufgrund der flexiblen Grammatik noch in einer frühen Phase.
Dies stellt eine Herausforderung dar, da die Datensätze in dieser Sprache über weni-
ger verfügbare Ressourcen beinhaltet. In dieser Arbeit wird ein unbeaufsichtigtes Modell
(unsupervised model) für die xtraktzusammenfassung entwickelt. Der TF-IDF (Term Fre-
quency Inverse Document Frequency) und der Textrank-Algorithmus berechen die Wich-
tigkeitsbewertung der im Eingabedokument enthaltenen Sätze, identifizieren und exextra-
hieren die wichtigen Sätze. Die erhaltene Zusammenfassung enthält genaue Sätze aus dem
Originaltext. Für die Abtraktzusammenfassung wird Text-to-Text Transfer Transformer
Model von Google verwendet, um das Eingabedokument verkürzen und umzuschreiben.
Alle Algorithmen und Modelle wurden in Python implementiert. Für eine übersichtliche
Darstellung und eine benutzerfreundliche Bedienung wurde zusätzlich eine Webapplika-
tion mit dem Framework Flask und Hypertext Markup Language (HTML) Template [2]
programmiert.
2 SPRACHMERKMALEN UND DATEN 2

2 Sprachmerkmalen und Daten

2.1 Englische Texte

In der englischen Sprache können Wörter in verschiedenen Formen auftreten und es ist
nötig, die Grundform zu bestimmen. Zum Beispiel für die Indexierung von Dokumen-
ten durch eine Suchmaschine. Wird der Suchbegriff wish bei der Suchmaschine Google
eingegeben, wird auch nach wishes und wishing gesucht, da wish das Stammwort ist.
Um Flexionsformen und ableitungsbezogene Formen eines Wortes auf eine gemeinsame
Grundform zu zurückzuführen, wurden die Lemmatisierung- und Stemming Methoden
verwendet.

2.1.1 Lemmatisierung und Stemming

Lemmatisierung und Stemming sind zwei Methoden, mit den die zusammengehörenden
Wörter kategorisiert werden. Bei der Lemmatisierung handelt es sich um die Form des
Wortes, wie sie in einem Wörterbuch steht[3], zum Beispiel sind am, is and are alles
Formen des Wortes be, daher ist be das Lemma all dieser Wörter. Bei dem Stemming wird
das Suffix der Wörter wie −ed, −ize, −s, −de, −mis und − ing entfernt.

2.1.2 Implementierung das Stemming des Wortes in Python

Ein Wort im Englisch kann oft zu mehreren Klassen gehören. Aus diesem Grund muss man
bei der Lemmatisierung Wörter nach Wortart klassifizieren. Das führt zu einem komplexen
Problem, dass er mehr Information als Ausgangspunkt benötigt und wesentlich langsamer
arbeitet. In diesem Projekt wird deswegen nur die Stemming-Methode verwendet (siehe
Quellcode 1). Porterstemmer ist ein Bestandteil des Natural Language Toolkit, dieser hat
nur eine Liste von Suffixen, die abgetrennt oder ersetzt werden. Dies führt in vielen Fällen
zu unsinnigen Ergebnisse. Oft ist das aber unproblematisch, so lange verschiedene Formen
eines Wortes auf dem gleichen eindeutigen Stamm zurückgeführt werden [4].
2 SPRACHMERKMALEN UND DATEN 3

1 import nltk
2 text = """The first application for marketing approval of a COVID-19 vaccine in the
European Union should arrive in the next few days, according to the European
Medicines Agency (EMA)."""
3 sentences = nltk.sent_tokenize(text,language=’english’)
4 tokenized_text = [nltk.word_tokenize(sent, language=’english’) for sent in sentences]
5 porter = nltk.PorterStemmer()
6 stems = [porter.stem(t) for t in tokenized_text[0]]
7 -->[’the’, ’first’, ’applic’, ’for’, ’market’, ’approv’, ’of’, ’a’, ’covid-19’, ’
vaccin’, ’in’, ’the’, ’european’, ’union’, ’should’, ’arriv’, ’in’, ’the’, ’next’,
’few’, ’day’, ’,’, ’accord’, ’to’, ’the’, ’european’, ’medicin’, ’agenc’, ’(’, ’
ema’, ’)’]
8

Quellcode 1: Stemming englischer Texte: Aus dem Beispielsatz (siehe Programmzeile 2)


wird mit der Stemming Methode die Stammwörter (siehe Programmzeile 7) ausgegeben.

2.2 Vietnamesische Texte

Vietnamesisch ist eine monosyllabische Sprache, daher können Wörter nicht anhand von
Leerzeichen getrennt werden [5], zum Beispiel: declare (Englisch), deklarieren (Deutsch) ist
in Vietnamesisch: tuyên bô. Von der Struktur ist Vietnamesisch eine isolierende Sprache,
d.h. die Wörter sind unveränderlich, alle grammatischen Beziehungen werden durch eigene
Wörter ausgedrückt und es gibt keinen Singular und Plural für Wörter [6]. Zum Beispiel:
Tôi yêu anh ´y (Ich liebe ihn) und Anh ´y yêu tôi (Er liebt mich) sind zwei Sätze auf
Vietnamesisch. Die Wörter Tôi und Anh ´y , ob in der Subjektposition oder im Objekt
stehend, ändern ihre Form nicht. Auch das Verb yêu ändert sich nicht je nach Person oder
Singular- oder Pluralform des Subjekts.
Vietnamesisch ist keine Flexionssprache. Wenn Wörter Homophone sind, haben sie in
jedem verwendeten Kontext die gleichen Klang und Schreibweisen aber unterschiedliche
Bedeutung. Es gibt außerdem keine morphologischen Zeichen, um die Wortart eines Wor-
tes zu erkennen. Auf Vietnamesisch : Ru`i d.u mâm xôi d.u ( Die Fliege saß auf einem
Teller mit Bohnenklebreis ). Das erste Wort d.u ist ein Verb, das nächste Wort d.u ist ein
Substantiv.

2.2.1 Wort-Tokenisierung für Vietnamesisch

Das Natural Language Toolkit Library enthält keine Tokenisierung für die vietnamesi-
sche Sprache, deswegen wurde hier ein anderes Toolkit angewendet. VnCoreNLP ist ein
vietnamesisches Toolkit zur Verarbeitung von natürlichen Texten, desweiteren bietet es
umfangreiche sprachliche Anmerkungen durch wichtige NLP-Komponenten der Wortseg-
mentierung (siehe Quellcode 2) und der Wortarterkennung an [7].
2 SPRACHMERKMALEN UND DATEN 4

1 from vncorenlp import VnCoreNLP


2 text ="Dai hoc Bách Khoa Hà N^
oi."
˙ ˙ ˙
3 annotator = VnCoreNLP("/Users/truonguyen/Downloads/VnCoreNLP-master/VnCoreNLP-1.1.1.
jar", annotators="wseg", max_heap_size=’-Xmx500m’)
4 word_segmented_text = annotator.tokenize(text)
5 --> [[’Dai_hoc’, ’Bách_Khoa’, ’Hà_N^
oi’, ’.’]]
˙ ˙ ˙
Quellcode 2: Tokenisierung vietnameischer Texte: Bei diesem Quellcode wurden
beispielhaft drei Nomen Da.i ho.c, Bách Khoa und Hà N.i tokenisiert zu Da.i ho.c, Bách Khoa
und Hà N.i.

2.2.2 Vietnamesische Stoppwörter

Stoppwörter tragen nicht zur einer Inhaltszunahme bei. Das Entfernen von Stoppwörtern
in vietnamesischen Dokumenten erfordert neben der in der europäischen Sprache üblichen
Technik zum Entfernen von Präpositionen und Pronomen ein spezifisches Verfahren. Bei
dem aufeinanderfolgen von zwei gleichen Wörtern ist eines davon immer ein Stoppwort,
zum Beispiel lâng lâng, xinh xinh [8]. Um diese Stoppwörter zu finden und zu entfernen
wird eine Stoppwöter-Sammlung von [9] verwendet, da die NLTK-Bibliothek noch keine
Stoppwörte für Vietnamesisch enthält.

2.3 Deutsche Texte

Deutsch und Englsich sind flektierende Sprachen, die morphologische Formveränderungen


an einigen Wortarten zeigen [6]. Zusätzlich hat Deutsch noch ein komplexes Flexionssy-
stem. Es gibt drei Genera: Maskulinum (männlich), Femininum (weiblich) und Neutrum
(sächlich). Diese werden mit Artikeln, den Endungen der Nomen, und der Endungen Ad-
jektive angegeben. Im Gegensatz zu Englisch hat die deutsche Sprache außerdem noch
die Umlautbuchstaben ä, ö und ü.
Für viele europäische Sprachen einschließlich Deutsch wurde ein Porter-Stemmer-Algorithmus
von Martin Porter entwickelt, der Snowball heißt [10]. Der deutsche Stemmer-Snowball
entfernt häufige Suffixe wie ern, est, isch oder keit usw.
1 import nltk
2 from nltk.stem.snowball import GermanStemmer
3 text ="Der Lander soll einen Mondtag lang - was zwei Wochen auf der Erde entspricht -
auf dem Erdtrabanten bleiben."
4 sentences = nltk.sent_tokenize(text,language=’german’)
5 tokenized_text = [nltk.word_tokenize(sent, language=’german’) for sent in sentences]
6 stemmer = GermanStemmer()
7 stems = [stemmer.stem(t) for t in tokenized_text[0]]
3 WORTÄHNLICHKEITEN 5

8 -->[’der’, ’land’, ’soll’, ’ein’, ’mondtag’, ’lang’, ’-’, ’was’, ’zwei’, ’woch’, ’auf’
, ’der’, ’erd’, ’entspricht’, ’-’, ’auf’, ’dem’, ’erdtrabant’, ’bleib’, ’.’]

Quellcode 3: Stemming deutscher Texte: Aus dem Beispielsatz aus Zeile 3, wird aus jedem
Wort der Stemmer gebildet. Das Ergebnis sieht man in Zeile 8. Wobei bei der deutschen
Sprache Fehler auftreten können wie zum Beispiel wird aus Wochen woch. Dadurch wird
das Ergebnis in den meisten Fällen nicht verschlechtert [4].

3 Wortähnlichkeiten

Ein weiteres Problem beim Information Retrieval ist die Wortähnlichkeit. Beispielweise
ist die Wörter der Suchanfrage nicht im gewünschten Dokument vorkommen, da für dieses
Dokument andere bedeutungsähnliche verwendet werden. Dabei liegt ein Lösung für dieses
Problem, dass die semantischen Verbindungen zwischen diesen Wörtern gesucht werden
soll. Eine Möglichkeit der Ermittlung semantischer Relationen zwischen einzelnen Wörtern
bietet sich Word-Embedding. Word-Embedding ist eine gelernte Darstellung für Texte,
bei dem die Wörter mit derselben Bedeutung eine ähnliche Darstellung haben. Sind zwei
Wörter ähnlich zum Beispiel König und Königin besitzen die dazugehörigen Vektoren eine
räumliche nähe zueinander. Hinter dem Ansatz steckt eine tiefere Sprachtheorie: Wörter
mit einem ähnlichem Kontext haben ähnliche Bedeutungen [11].

Abbildung 1: Hier wird beispielhaft eine Textvektorisierung dargestellt, wobei die Vek-
toren von Mädchen und Junge räumlich näher sind im Vergleich zu Schauspielerin und
Schauspieler

Im diesem Projekt werde drei Glove (Global Vectors for Word Representation)-Modelle
[12] für drei Sprachen Deutsch, Vietnamesish und Englisch benutzt. In dem Quellcode 4
4 EXTRAKTIVE METHODE 6

wurde mit Hilfe der GloVe-Embedding die ähnlichen Wörter von king aus einem Text
gefunden.
1 import numpy as np
2 from scipy import spatial
3 embeddings_dict = {}
4 f = open(’venv/glove.6B.100d.txt’, encoding=’utf-8’)
5 for line in f:
6 values = line.split()
7 word = values[0]
8 vector = np.asarray(values[1:], "float32")
9 embeddings_dict[word] = vector
10 def find_closest_embeddings(embedding):
11 return sorted(embeddings_dict.keys(), key=lambda word: spatial.distance.euclidean(
embeddings_dict[word], embedding))
12 king = find_closest_embeddings(embeddings_dict["king"])[1:6]
13 print(king)
14 --->[’prince’, ’queen’, ’monarch’, ’brother’, ’uncle’]

Quellcode 4: Das Glove-Modelle enthält wortverwandte Wörter zum Beispiel von king
sind prince, queen, monarch, brother und uncle verwandt.

4 Extraktive Methode

Die Extraktionsbasierte Zusammenfassungsmethode wählt informative Sätze aus dem Do-


kument aus, die genau in der Quelle erscheinen, basierend auf bestimmten Kriterien, um
eine Zusammenfassung zu bilden. Die größte Aufgabe vor der extraktiven Zusammenfas-
sung besteht darin, zu entscheiden, welche Sätze aus dem Eingabedokument von Bedeu-
tung sind und möglich in die Zusammenfassung aufgenommen werden. Für diese Aufgabe
wird die Satzbewertung basierend auf Merkmalen von Sätzen verwendet. Zunächst wird
jedem Satz basierend auf dem Merkmal eine Punktzahl zugewiesen, dann werden die
Sätze entsprechend ihrer Punktzahl eingestuft [13, 14]. Sätze mit der höchsten Punktzahl
werden wahrscheinlich in die endgültige Zusammenfassung aufgenommen. Die folgenden
Methoden sind die Technik der Zusammenfassung von extraktivem Text.

4.1 TF-IDF Algorithmus ( Term Frequency Inverse Document


Frequency )

Der TF-IDF-Algorithmus besteht aus 2 miteinander multiplizierten Algorithmen : TF (


Term Frequency ) und IDF ( Inverse document frequency ).
Hauptteil 7

4.1.1 Term Frequency

Die Termhäufigkeit (TF) gibt an, wie oft ein Wort in einem Dokument vorkommt, geteilt
durch die Anzahl der Wörter.

Anzahl Vorkommen des Wortes t im Dokument


T F (t) = (1)
Anzahl aller Wörter im Dokument

4.1.2 Inverse Document Frequency

IDF-Inverse Document Frequency wird verwendet, um abzuschätzen, wie wichtig ein Wort
in Bezug auf alle Dokumente eines Corpus ist ( Corpus ist der Begriff der Linguisten für
eine Kollektion von Dokumenten )

Nd
IDF (t) = log (2)
ft

Nd : Anzahl der Dokumente der Dokumentensammlung


ft : Anzahl der Dokumente derselben Sammlung geteilt, die dieses bestimmte Wort bein-
halten

4.1.3 Überschau

Die Vorverarbeitungsfunktion verarbeitet das Dokument mit NLTK-Funktionen wie To-


kenisierung, Stemming und Stoppwörtern. Nachdem das Dokument in das Programm
eingegeben wurde, teilt die Vorverarbeitungsfunktion den Text mithilfe von Tokenisie-
rungsfunktionen in eine Liste von Sätzen.
Zunächst wird der Text mit Lower-Funktion in Kleinbuchstaben konvertiert. Alle Stoppwörter
werden ebenfalls entfernt. Dann wird die Liste der Wörter unter Verwendung der Stemming-
Funktion verarbeitet, um die Wurzel von Wörtern zu finden, nachdem der Verb und der
angespannte Teil daraus entfernt wurden. Aus der vorverarbeiteten Liste von Wörtern
können dann die TF-IDF-Werte berechnet werden. Nachdem der TF-IDF-Wert jedes Wor-
tes bekannt ist, kann der Wichtigkeitswert eines Satzes berechnet werden. Schließlich wird
der Satz im Dokument in absteigender Reihenfolge sortiert.
Hauptteil 8

Abbildung 2: Prozessübersicht der Textzusammenfassung mit TF-IDF Algorithmus

4.2 Implementieren von TF-IDF Algorithmus in Python

Für Textanalyse mit Python ist das Paket NLTK der Stanford University erforderlich.
Zuerst werden die Python-Pakete und Module für Textzusammenfassung importiert.
1 import math
2 import nltk
3 from nltk import sent_tokenize,RegexpTokenizer
4 from nltk.stem.snowball import GermanStemmer
5 from nltk.corpus import stopwords
6 import heapq

Quellcode 5: Importieren von Bibliotheken und Modulen in Python: heapq ist ein Modul,
um die größten Elemente in einer Auflistung zu finden
Hauptteil 9

4.2.1 Satztokenisierung

Die Sätze werden in dem Quellcode 6 anstelle von Wörten zerlegt und später ein Gewicht
bekommen.
1 text ="Die Dresdner sind stolz auf ihren Striezelmarkt.Immerhin ist er der älteste,
beurkundete Weihnachtsmarkt Deutschlands. Bereits seit 1434 wird er auf dem
Altmarkt im Stadtzentrum veranstaltet...."
2 saetze = sent_tokenize(text)

Quellcode 6: Segmentieren von Sätzen im Text

4.2.2 Erstellung von Häufigkeitstabelle für Wörten in jedem Satz.

Im Quellcode 7 wird die Häufigkeit von Wörtern in jedem Satz berechnen.


1 def Worthaeufigkeit_im_Satz(saetze):
2 for satz in saetze:
3 haeufigkeitstabelle = {}
4 woerter = tokenizer.tokenize(satz)
5 for wort in woerter:
6 wort = wort.lower()
7 wort = ps.stem(wort)
8 if wort in stoppwoerter:
9 continue
10 if wort in haeufigkeitstabelle:
11 haeufigkeitstabelle[wort] += 1
12 else:
13 haeufigkeitstabelle[wort] = 1
14

15 frequenzmatrix[satz[: 20]] = haeufigkeitstabelle


16 return frequenzmatrix
17

18 ---> {{’Die Dresdner sind st’: {’dresdn’: 1, ’stolz’: 1, ’striezelmarkt’: 1}, ’


Immerhin ist er der ’: {’immerhin’: 1, ’alt’: 1, ’beurkundet’: 1, ’weihnachtsmarkt
’: 1, ’deutschland’: 1},...}

Quellcode 7: Die verwendete Funktion bestimmt die Frequenz von wichtigen Wörtern im
Satz zu bestimmen. Aus Zeile 18 0 dresdn0 : 1 bedeutet, dass Dresender einmal in dem
ersten Satz von Quellcode 6 ankommt usw.

satz[: 20] aus Zeile 13 wählt die ersten 20 Zeichen aus dem Satz aus. Der größte Teil der
Sätze wird streifen, um Speicherplatz zu sparen
Hauptteil 10

4.2.3 Berechnen von TermFrequency-Werten

Die Wichtigkeit jedes Wortes im Satz wird im Quellecode 8 durch Teilen der Häufigkeit
eines Wortes durch die Wortanzahl im Satz kalkuliert.
1 def Berechnen_TermFrequency(frequenzmatrix):
2 tf_matrix = {}
3 for satz, f_tabelle in frequenzmatrix.items():
4 tf_tabelle = {}
5 wortanzahl_im_satz = len(f_tabelle)
6 for wort, anzahl in f_tabelle.items():
7 tf_tabelle[wort] = anzahl / wortanzahl_im_satz
8

9 tf_matrix[satz] = tf_tabelle
10 return tf_matrix
11 --->{’Die Dresdner sind st’: {’dresdn’: 0.3333333333333333, ’stolz’:
0.3333333333333333, ’striezelmarkt’: 0.3333333333333333}, ’Immerhin ist er der ’:
{’immerhin’: 0.2, ’alt’: 0.2, ’beurkundet’: 0.2, ’weihnachtsmarkt’: 0.2, ’
deutschland’: 0.2},...}

Quellcode 8: Implementieren von Term Frequency Funktion in Python: Aus dem Beispiel
Satz 1 Quellcode 6 gibt es drei wichtigen Wörten, jeweils einen Wert = 0.3333 bekommt.

4.2.4 Erstellung von Häufigkeitstabelle für Wörten im Text

Quellcode 9 zeigt die Berechnung, wie viele Sätze ein Wort enthalten.
1 def Worthaeufigkeit_im_Text(frequenzmatrix):
2 wortanzahl_im_text = {}
3 for satz, f_tabelle in frequenzmatrix.items():
4 for wort, anzahl in f_tabelle.items():
5 if wort in wortanzahl_im_text:
6 wortanzahl_im_text[wort] += 1
7 else:
8 wortanzahl_im_text[wort] = 1
9 return wortanzahl_im_text
10 --->{’dresdn’: 3, ’stolz’: 1, ’striezelmarkt’: 2, ’immerhin’: 1, ’alt’: 1, ’beurkundet
’: 1, ’weihnachtsmarkt’: 2, ’deutschland’: 1,...}

Quellcode 9: Verwendete Funktion zur Bestimmung von der Frequenz wichtigen Wörten
im Text. Als Ergebnis erscheint dresdn aus Zeile 10 in drei Sätzen.
Hauptteil 11

4.2.5 Berechnen von Inverse Document Frequency-Werten

Mit der IDF Funktion, wobei Nd die Satzanzahl im Textund ft die Anzahl der Sätze ist,
die das bestimmte Wort beinhalten, wird der IDF-Wert für jedes Wort ermittelt (siehe
Quellecode 10).

Nd
IDF (t) = log (3)
ft

1 def Berechnen_IDF(frequenzmatrix, wortanzahl_im_text, gesamtdokument):


2 idf_matrix = {}
3 for satz, haeufigkeitstabelle in frequenzmatrix.items():
4 idf_tabelle = {}
5 for wort in haeufigkeitstabelle.keys():
6 idf_tabelle[wort] = math.log10(gesamtdokument / wortanzahl_im_text[wort])
7 idf_matrix[satz] = idf_tabelle
8 return idf_matrix
9 ---> {’Die Dresdner sind st’: {’dresdn’: 0.9030899869919435, ’stolz’:
1.380211241711606, ’striezelmarkt’: 1.0791812460476249}, ’Immerhin ist er der ’: {
’immerhin’: 1.380211241711606, ’alt’: 1.380211241711606, ’beurkundet’:
1.380211241711606, ’weihnachtsmarkt’: 1.0791812460476249, ’deutschland’:
1.380211241711606},...}

Quellcode 10: Implementieren von IDF-Funktion in Python. Beispielhaft hat stolz aus
Zeile 9 einen IDF-Wert von 1.38.

4.2.6 Berechnen von TF-IDF Werten

Das Produkt zweier Matrizen TF und IDF ergibt die TF-IDF Matrix (siehe Quelle 11).
1 def Berechnen_TFIDF(tf_matrix,idf_matrix):
2 tf_idf_matrix = {}
3 for (satz1, f_tabelle1), (satz2, f_tabelle2) in zip(tf_matrix.items(), idf_matrix.
items()):
4 tf_idf_tabelle = {}
5 for (wort1, wert1), (wort2, wert2) in zip(f_tabelle1.items(),
6 f_tabelle2.items()):
7 tf_idf_tabelle[wort1] = float(wert1 * wert2)
8 tf_idf_matrix[satz1] = tf_idf_tabelle
9 return tf_idf_matrix
10 --->{’Die Dresdner si’: {’dresdn’: 0.30102999566398114, ’stolz’: 0.4600704139038686, ’
striezelmarkt’: 0.35972708201587494}, ’Immerhin ist er’: {’immerhin’:
0.2760422483423212, ’alt’: 0.2760422483423212, ’beurkundet’: 0.2760422483423212, ’
weihnachtsmarkt’: 0.215836249209525, ’deutschland’: 0.2760422483423212},...}

Quellcode 11: Implementieren von TF-IDF Funktion in Python. Aus Zeile 10 hat stolz
einen TF-IDF-Wert von 0.46.
Hauptteil 12

4.2.7 Bewertung von den Sätzen

Nachdem der TF-IDF-Wert jedes Wortes bekannt ist, kann jetzt der Wichtigkeitswert
eines Satzes im Quellcode 12 berechnet werden.
1 def Bewerten_Sätze(tf_idf_matrix) -> dict:
2 satz_wert = {}
3 for satz, f_tabelle in tf_idf_matrix.items():
4 wert_pro_satz = 0
5 anzahl_woerte_im_satz = len(f_tabelle)
6 for wort, wert in f_tabelle.items():
7 wert_pro_satz += wert
8 satz_wert[satz] = wert_pro_satz / anzahl_woerte_im_satz
9 return satz_wert
10 ---> ’Die Dresdner si’: 0.37360916386124154, ’Immerhin ist er’: 0.26400104851576195, ’
Bereits seit 14’: 0.22167326262793483, ’Jährlich lockt ’: 0.46007041390386866, ’
November bis 24’: 0.46007041390386866,...}

Quellcode 12: Verwendete Saztwert-Funktion: Das Satzgewicht wird durch den TF-IDF-
Werten von Wörten im Satz bestimmen. Aus dem Beispielsatz Quellcode 6 hat Satz 1 aus
Zeile 10 ein Gewicht von 0.3736.

4.2.8 Generierung von der Zusammenfassung

Im Quellcode 13 wird heapq verwendet, um die Top-sechs-Sätze mit den höchsten Punkt-
zahlen abzurufen.
1 def Generieren_Zusammenfassung (satz_wert) :
2 zusammenfassung_saetze = heapq.nlargest(7, satz_wert, key=satz_wert.get)
3 zusammenfassung = ’ ’.join(zusammenfassung_saetze)
4 return zusammenfassung

Quellcode 13: Die vewendete nlargest Funktion dient zum Abrufen sechs Sätzen mit dem
höchsten Gewicht.

4.3 TextRank Algorithmus

TextRank ist ein unbeaufsichtigter graphbasierter Algorithmus, bei dem Sätze basierend
auf ihrer Beziehung ausgewählt werdene. Dieses Model organisiert ein Dokument in ei-
nem Diagramm,in dem die Eckpunkte des Diagramms jeden Satz in einem Dokument
darstellen. Eine Kante zeigt an, dass die beiden Sätze, die verknüpften Scheitelpunkten
entsprechen, gemeinsamen Inhalt haben. Der Ranking-Prozess basiert auf der folgenden
Hauptteil 13

Formel:
X w
W (vi ) = (1 − d) + d ∗ P ij W (vi ) (4)
wjk
vj ∈In(vi )
vk ∈Out(vj )

d ist ein Dämpfungsfaktor, der zwischen 0 und 1 eingestellt werden kann . W (vi ) gibt den
dem Scheitelpunkt vi zugewiesenen Wichtigkeitswert an. In(Vi ) steht für die Menge der
Scheitelpunkte, die auf vi zeigen (Vorgänger). Out(Vj bezeichnet die Menge von Eckpunk-
ten, auf die der Eckpunkt zeigt (Nachfolger). wij wird verwendet, um anzuzeigen, dass
die Kantenverbindung zwischen zwei Knoten unterschiedliche Wichtigkeitsgrade hat [15].

4.3.1 Überschau

Der erste Schritt wäre, den Text in einzelne Sätze aufzuteilen. Im nächsten Schritt wird ei-
ne Vektordarstellung für jeden Satz erstellt. Ähnlichkeiten zwischen Satzvektoren werden
dann berechnet und in einer Matrix gespeichert. Die Ähnlichkeitsmatrix bildet anschlie-
ßend einen Graphen mit Sätzen als Eckpunkten und Ähnlichkeitswerten als Kanten ab.
Schließlich bildet eine bestimmte Anzahl von hochrangigen Sätzen die endgültige Zusam-
menfassung.

Abbildung 3: Prozessübersicht der Textzusammenfassung mit TextRank Algorithmus

4.4 Implementieren von TextRank Algorithmus in Python


1 import re
2 import nltk
3 import numpy as np
4 import pandas as pd
5 import networkx as nx
6 import matplotlib.pyplot as plt
7 from nltk.tokenize import sent_tokenize
8 nltk.download(’punkt’) # one time execution
9 stoppwoerter = open(’venv/vnstopword.txt’,encoding=’utf-16’)
10 from sklearn.metrics.pairwise import cosine_similarity

Quellcode 14: Importieren von nötigen Bibliotheken und Module für Textrank-Modell
Hauptteil 14

4.4.1 Satztokenisierung und Datenbereinigung

In Bezug auf den Inhalt sind Stoppwörter, Satzzeichen und Zahlen irrelevant und man
kann diese filtern (siehe Quellcode 15).
1 text = "Theo CNN, ngày 20/11 có th^ e coi là b´c ngoăt d^e bà Emily Murphy, ng`i d´ng d`^ a
˙
u GSA, da ra quy´^ et dinh này. S´^ o ph^
an cu^
oc chi´^ en pháp lý cua T^
ong th´^
ong Trump c
˙ ˙ ˙
àng tr n^
en b´^at dinh khi chi´^ en dich cua ^ ong thua hoăc huy 9 vu ki^ en trong m^
ot ngà
˙ ˙ ˙ ˙ ˙ ˙
y..."
2 def daten_bereinigung(x):
3 x = x.lower()
4 x = ’ ’.join([word for word in x.split(’ ’) if word not in stoppwoerter])
5 x = re.sub(r’\w*\d+\w*’, ’’, x)
6 x = x.replace(’/’, ’’)
7 return x
8 sauberer_text = daten_bereinigung(text)
9 print(sauberer_text)
10 saetze = sent_tokenize(sauberer_text)
11 --->"theo cnn, ngày có th^ e coi là b´c ngoăt d^e bà emily murphy, ng`i d´ng d`^ au gsa, d
˙
a ra quy´^ et dinh này.’, ’s´^o ph^an cu^oc chi´^en pháp lý cua t^ong th´^
ong trump càng
˙ ˙ ˙
tr n^en b´^at dinh khi chi´^ en dich cua ^ ong thua hoăc huy vu ki^ en trong m^
ot ngày..."
˙ ˙ ˙ ˙ ˙ ˙
Quellcode 15: Verwendete Funktion zur Entfernung von Stoppwörter, Satzzeichen und
Zahlen

4.4.2 Erstellung von Satzvektoren

1 word_embeddings = {}
2 f = open(’venv/baomoi.vn.model.txt’, encoding=’utf-8’)
3 for line in f:
4 values = line.split()
5 word = values[0]
6 coefs = np.asarray(values[1:], dtype=’float32’)
7 word_embeddings[word] = coefs
8 f.close()
9 satzvektoren = []
10 for i in saetze:
11 if len(i) != 0:
12 x = sum([word_embeddings.get(w, np.zeros((300,))) for w in i.split()])/(len(i.
split())+0.003)
13 else:
14 x = np.zeros((300,))
15 satzvektoren.append(x)

Quellcode 16: Verwendete Funktion dient zum Abrufen von den Vektoren für die
konstituierenden Wörter in einem Satz, sowie zur Ermittlung den Mittelwert dieser
Vektoren. Aus Zeile 2 werden die Vektoren für vietnamesiche Wörter geladen.
Hauptteil 15

4.4.3 Erstellung von Ähnlichkeitsmatrix

Der nächste Schritt (siehe Quellcode 17) besteht darin, Ähnlichkeiten zwischen den Sätzen
durch Implementieren von cosine − similarity in der sklearn − Bibliothek zu finden.
1 sim_mat = np.zeros([len(saetze), len(saetze)])
2 for i in range(len(saetze)):
3 for j in range(len(saetze)):
4 if i != j:
5 sim_mat[i][j] = cosine_similarity(satzvektoren[i].reshape(1,300), satzvektoren[j
].reshape(1,300))[0,0]
6 --->[[0. 0.43008049 0.25405677 0.33175016 0.46212236 0.63527145
7 0.45245713 0.29547794]
8 [0.43008049 0. 0.38990612 0.32580904 0.51192785 0.41966858
9 0.48007809 0.59375623]..]

Quellcode 17: Funktion zur Berechnung der Ähnlichkeitswerte von Sätzen miteinander.
Als Ergebnis aus Zeile 6 ist der Ähnlichkeitswert zwischen Satz 0 und Satz 1 0.43.

4.4.4 Erstellung von Graph und Anwenden von PageRank - Algorithmus

Der PageRank-Algorithmus berechnet eine Rangfolge der Sätzen in einem Graph basie-
rend auf den Ähnlichkeitswerte [15] ( siehe Quellcode 18).
1 nx_graph = nx.from_numpy_array(sim_mat)
2 werte = nx.pagerank(nx_graph)
3 --->{0: 0.12258470295746621, 1: 0.13368468490251, 2: 0.10032258087617767, 3:
0.11183995826276552, 4: 0.15037568859165995, 5: 0.12942409022829252, 6:
0.14116815496252558, 7: 0.11060013921860261}

Quellcode 18: Konvertierung von die Ähnlichkeitsmatrix simm at im Quellcode17 in einen


Graphen: Aus dem Beisieltext im Quellcode 15, Satz 0 als Knote 0 hat einen Wert von
0.122

Abbildung 4: Visualisierung der Satzbeziehungen vom Beispielsatz im Quellcode 15


5 ABTRAKTIVE METHODE 16

4.4.5 Extraktzusammenfassung

Schließlich werden die Top-N-Sätze basierend auf ihren Rankings extrahiert.


1 rangfolge_saetze = sorted(((werte[i],s) for i,s in enumerate(saetze)), reverse=True)
2 for i in range(3):
3 print(rangfolge_saetze[i][1])

Quellcode 19: Funktion zur Auflistung sechs Sätzen im Quellcode 15 mit dem höchsten
Gewicht

5 Abtraktive Methode

Dies ist eine fortgeschrittenere Methode, die besteht darin, die wichtigen Abschnitte zu
identifizieren, den Kontext zu interpretieren und auf neue Weise zu reproduzieren. Dies
stellt sicher, dass die Kerninformationen durch den kürzestmöglichen Text vermittelt wer-
den. Die zusammenfassenden Sätze werden nicht aus dem Originaltext extrahiert.

5.1 Transfer Learning

Eine der größten Herausforderungen von der Verarbeitung natürlicher Sprachen ist das
Datenproblem. Es gibt Millionen von Datensätzen im Internet, aber sie sind nicht alle
gleich. Jede Komponente wird nur für einen bestimmten Zweck verwendet, muss bei der
Bearbeitung der Aufgabe ein entsprechender Datensatz extrahiert werden. Folglich gibt
es nur eine begrenzte Menge an Daten. Deep-Learning-Modelle benötigen jedoch große
Datenmengen, um gute Ergebnisse zu erzielen. Daraus ergibt sich ein Dilemma: Wie
wird die riesige Menge an Daten genutzt, um bestimmte Aufgabe zu lösen. Das ist die
Grundlage für die Geburt einer neuen Technologie: Transfer Learning. Transfer Learning
ermöglicht es, die generischsten Modelle mit Hilfe großer Datensätze aus dem Internet
zu entwickeln (Pre-Training) und dann für eine bestimmte neue Aufgabe zu übertragen
(Fine-Tuning).
Das Google-Team hat im Jahr 2019 ein Modell veröffentlicht und es hat das Potenzial,
der nächste große Meilenstein im NLP zu werden. Das Modell nennt sich Text-to-Text
Transfer Transformer (T5) [16].

5.2 Das Modell: Google T5

T5 steht als Abkürzung für: Text-to-Text Transfer Transformer, ist ein Encoder-Decoder-
Modell. Es ermöglicht, dasselbe Modell, dieselbe Zielsetzung(Text to Text), dasselbe Trai-
ningsverfahren und denselben Dekodierungsprozess für die verschiedenen Aufgaben durch
5 ABTRAKTIVE METHODE 17

einfaches Anpassen des Präfixes zu verwenden. Um beispielsweise T5 für eine Zusammen-


fassung zu verwenden, wird dem Quellartikel summarize : hinzugefügt.
Dieses Modell wurde auf dem Collossal Clean Crawled Corpus (C4) [16] vortrainiert.
Das C4-Dataset ist nicht nur ein neues Open-Source-Pre-Training-Dataset von Google,
sondern eine reine Version von Common Crawl, die nach Bereinigung und Deduplizierung
der Daten 800 GB ergibt. Der Bereinigungsprozess umfasst das Verwerfen unvollständiger
Sätze, das Löschen unerwünschter Inhalte und die Deduplizierung. Durch diesen Reini-
gungsprozess können bei nachgelagerten Aufgaben bessere Ergebnisse erzielt werden.

Abbildung 5: Diagramm Aufgaben des Text-zu-Text-Frameworks. für die Übersetzung


(grün), die sprachliche Akzeptanz (rot), die Satzähnlichkeit (gelb) und die Dokumenten-
zusammenfassung (blau). Bildquelle [16]

5.3 Implementieren von T5 für Dokument in englischer Sprache


in Python
1 #Importanforderungen
2 from transformers import T5Tokenizer, T5Config, T5ForConditionalGeneration
3 #Text zum Zusammenfassen
4 original_text="With the novel coronavirus mutating into more infectious strains, the
government has urged Vietnamese expatriates not to travel to Vietnam for Lunar New
Year.It is normally a time for family reunions, but the Ministries of Health,
National Defense and Public Security agree it is necessary to encourage Vietnamese
overseas to comply with pandemic prevention regulations in their host countries."
5 # Instanziierung des Modells und des Tokenizers
6 my_model = T5ForConditionalGeneration.from_pretrained(’t5-small’)
7 tokenizer = T5Tokenizer.from_pretrained(’t5-small’)
8 #Verkettung des Wortes "summarize:" im Originaltext
9 text = "summarize:" + original_text
10 #Codiere den eingegebenen Text
11 input_ids=tokenizer.encode(text, return_tensors=’pt’, max_length=512,truncation=True)
12 #Generieren von Zusammenfassungskennungen
13 summary_ids = my_model.generate(input_ids)
14 #dekodiere den Tensor und die Zusammenfassung als Ausgabe
5 ABTRAKTIVE METHODE 18

15 t5_summary = tokenizer.decode(summary_ids[0])
16 print(t5_summary)
17 --> the government urges expatriates not to travel to Vietnam for Lunar New Year

Quellcode 20: Zusammenfassung mit T5-Transformatoren. Das zusammengefasste


Ergebnis im Quellcode 20 ist nicht Teil des Originaltextes.

5.4 Fine-Turning das mT5-Modell für die Zusammenfassung


der deutschen und vietnamesichen Dokument

Während das T5-Modell nur in englischem Text trainiert ist und daher nur für eng-
lischsprachige Aufgaben verwendet werden kann, ist das mT5-Modell eine mehrsprachige
Variante des ursprünglichen T5-Modells . Das MT5-Modell basiert eng auf der Architek-
tur und der Trainingsmethode des T5, ist jedoch auf einer mehrsprachigen Variante des
C4-Datensatzes trainiert [17]. Es behält alle Vorteile des T5 bei, unterstützt aber auch
insgesamt 101 verschiedene Sprachen.

5.4.1 Datensatz

WikiLingua ist ein großer, mehrsprachiger Datensatz zur Evaluierung von sprachübergreifenden
Zusammenfassungssystemen. Artikel werden in 18 Sprachen aus WikiHow extrahiert und
zusammengefasst, einer hochwertigen, interaktiven Plattform für Artikel zu einer Reihe
von Themen, die von menschlichen Autoren geschrieben wurden [18].

Abbildung 6: Statistik für WikiLingua. Num. parallel entspricht der Anzahl der Artikel
mit einem Parallelartikel im Englisch.
5 ABTRAKTIVE METHODE 19

Der Datensatz für jede Sprache ist als Nested Dictionary gespeichert. Nested Dictio-
nary bedeutet ein Dictionary in einem Dictionary, wobei ist der Schlüssel die URL des
entsprechenden WikiHow-Artikels und der Wert selbst ein Wörterbuch ist. Dieses innere
Wörterbuch hat Abschnittsnamen als Schlüssel und ein Wörterbuch (mit document und
summary) als Werte. Für andere Sprachen als Englisch enthält das innerste Wörterbuch
zusätzliche Schlüssel englishsectionname und englishurl, die den entsprechenden Ab-
schnittsnamen und die URL für den entsprechenden parallelen englischen Artikel darstel-
len.

Abbildung 7: Darstellung von WikiLingua Datensatz für vietnamesiche Sprache mit Da-
taFrame von Pandas .

5.4.2 Überschau

Die Gewichte des vortrainierten BERT-Modells haben bereits eine große Menge an Daten
kodiert. Daher nimmt das Training eines fein abgestimmten Modells viel weniger Zeit in
Anspruch, nur 2-4 Epochen Training sind für die Feinabstimmung erforderlich.

Abbildung 8: Prozessübersicht des Fine-Tuning Modell MT5 für Textzusammenfassung


5 ABTRAKTIVE METHODE 20

5.4.3 Implementierungsdetails

Die Tokenlänge von 512 wird als Input Target in das MT5-Modell gegeben. Daraus er-
gibt sich dann einen Output für Textzusammenfassung mit einer Tokenlänge von 150.
Des Weiteren wurden zwei Epochen implementiert, die mögliches Over-fitting verringern
sollen. Da sonst, das gelernte Modell zu sehr an die Trainingsdaten angepasst ist und
somit neue Daten schlechter generalisiert. Dies drückt sich dann in den Validierungs- und
Testdaten aus. Daraus wird das Modell generalisiert besser.Für das Trainieren des Mo-
dells wurde der ADAM-Optimizer [19] ausgewähl. Sowohl für das Training als auch für
die Validierung wird eine Batch-Größe von 4 verwendet, und dieser Modus kann in etwa
vier Stunden auf Google Colab Pro trainiert werden.
1 args_dict = dict(
2 output_dir="",
3 model_name_or_path=’google/mt5-base’,
4 tokenizer_name_or_path=’google/mt5-base’,
5 max_input_length=512,
6 max_output_length=150,
7 freeze_encoder=False,
8 freeze_embeds=False,
9 learning_rate=3e-4,
10 weight_decay=0.0,
11 adam_epsilon=1e-8,
12 warmup_steps=0,
13 train_batch_size=4,
14 eval_batch_size=4,
15 num_train_epochs=2,
16 gradient_accumulation_steps=8,
17 n_gpu=1,
18 resume_from_checkpoint=None,
19 val_check_interval = 0.05,
20 n_val=1000,
21 n_train=-1,
22 n_test=-1,
23 early_stop_callback=False,
24 fp_16=False,
25 opt_level=’O1’,
26 max_grad_norm=1.0,
27 seed=42,
28 )

Quellcode 21: Training Argumente definieren.


6 RESULTATE 21

6 Resultate

Die Hauptmethode zur Bestimmung der Genauigkeit des Textzusammenfassungsmodells


basiert auf der inneren Bedeutung des Absatzes. Hier wird die ROUGE-Methode (Svore
et al., 2007) verwendet, um die Genauigkeit des Modells zu bewerten. Die ROUGE-n-
Bewertung einer Zusammenfassung wird wie folgt bestimmt:
P P
C∈RSS gramn ∈C Countmatch (gramn )
P P (5)
C∈RSS gramn ∈C Count(gramn )

wobei Countmatch (gramn ) die maximale Anzahl von n-Gramm in der Zusammenfassung
und Referenzzusammenfassung ist, ist Count(gramn ) die Anzahl von n-Gramm in der
Referenzzusammenfassung enthalten. Es gibt viele verschiedene ROUGE-Scores, wie die
ROUGE-1-Bewertung, die die Überlappung von Unigramm zwischen der generierten und
der Referenzzusammenfassung berechnet. Die ROUE-L kalkuliert die Punktzahlen auf
Satzebene berechnet werden. In dieser Metrik werden neue Zeilen ignoriert und die längste
gemeinsame Folge (Longest Common Subsequence, LCS) zwischen zwei Textstücken be-
rechnet.

Modell Deutsch Vietnamesisch English


TF - IDF 0.34 0.27 0.45
TextRank 0.48 0.33 0.64
T5 / MT5 0.52 0.46 0.69

Tabelle 1: ROUGE-F1-Ergebnisse auf dem Test-Datensatz

Beim Lesen des Inhalts ist die Qualität von TextRank unter Verwendung der Zusam-
menfassung besser als TF-IDF. Der gelesene Text ist in Bezug auf Inhalt und Bedeutung
fließend. Einige Sätze mit relevanteren Informationen wurden jedoch aufgrund ihrer ge-
ringen Wichtigkeit nicht ausgewählt. Da die Länge des Zusammenfassungstextes begrenzt
war, wurden Sätze mit hohem Informationsgehalt nicht berücksichtigt. Lange Sätze wer-
den oft vorrangig extrahiert, da die Ähnlichkeitsberechnung eher Ähnlichkeiten im Ver-
gleich zu anderen Sätzen aufweist. Dies ist auch ein Nachteil des TextRank-Algorithmus.
Dadurch wird die Qualität des zusammenfassenden Textes teilweise reduziert. Außer-
dem wurden die Sätze aufgrund der Satzextraktion nicht verändert, sodass es Verbin-
dungswörter, Beziehungen und Wörter gibt, die keine große Bedeutung im Satz haben.
Diese Wörter nehmen einen großen Teil des Textes ein. Dies führt auch zu einer teilweisen
Reduzierung des Ähnlichkeitsmaßes. Das T5-Modell liefert bessere Ergebnisse, allerdings
für deutschen und vietnamesischen Text ist die Rouge-Bewertung niedrig. Der Grund
dafür ist, dass die Quantität und Textqualität dieser beiden Sprachen für die Tranings-
daten immer noch recht begrenzt ist.
6 RESULTATE 22

Abbildung 9: Beispiel für Zusammenfassungen in Englisch aus dem Wikihow mit TF-
IDF, TexRank und T5 Modelle. Jedes Beispiel besteht aus dem Zuschnittartikel, der
Referenzusammenfassung und den von drei Modellen generierten Zusammenfassungen.

Abbildung 10: Beispiel für Zusammenfassungen in Deutsch aus dem Wikihow mit TF-
IDF, TexRank und mT5 Modelle. Jedes Beispiel besteht aus dem Zuschnittartikel, der
Referenzusammenfassung und den von drei Modellen generierten Zusammenfassungen.
7 WEBAPPLIKATION 23

Abbildung 11: Beispiel für Zusammenfassungen in Vietnamesisch aus dem Wikihow mit
TF-IDF, TexRank und mT5 Modelle. Jedes Beispiel besteht aus dem Zuschnittartikel, der
Referenzusammenfassung und den von drei Modellen generierten Zusammenfassungen.

7 Webapplikation

Die Struktur des Projekts besteht aus vier Teilen : die Implementierung von Python, das
HTML-Template und das Anwendung-Setup von Flask. Ein HTML-Auswahlfeld wird mit
einer Liste von Optionen erstellt. Der Benutzer klickt, um eine der Optionen basierend
auf der Anforderung auszuwählen. Mit der POST-Anfrage wird der Input zu dem ent-
prechenden Python File geschickt und gearbeitet. Das lässt sich die Webanwendung den
Output, hier ist die Textzusammenfassung, zeigen.

Abbildung 12: Übersicht der Webapplikation. Die Webseite hat ein Eingabefeld, drei
Radiobuttons für drei Sprachen,von denen der Anwender einen auswählen kann, und
einen Submit-Button.
8 ZUSAMMENFASSUNG UND AUSBLICK 24

8 Zusammenfassung und Ausblick

Um eine Zusammenfassung zu erstellen, werden drei automatischen Methoden in die-


sem Projekt vorgestellt: der TF-IDF(Term Frequency Inverse Document Frequency)-, der
Textrank-Algorithmus und das T5-Modell. Basierend auf dem Finden der Informationsbe-
ziehungen, die in den Sätzen im Text enthalten sind, berechnen die TF-IDF und Textrank-
Algorithmus die Wichtigkeit jedes Satzes im Text. Was bedeutet es für das System, ein
automatisches Zusammenfassungsdokument mit hoher Präzision zu erstellen. Während
die beiden extraktive Methode alte traditionelle Methode sind, ist die abstrakte Zusam-
menfassung mit T5 eine neue Methode, mit der neue Sätze generiert werden, die den
Volltext besser darstellen können. Bei der Entwicklung der Anwendung wurde eigens eine
Webapplikation gestaltet, jedoch dient sie lediglich zu Präsentationszwecken und um eine
bessere Übersicht zu erhalten.
Alle Versuchsergebnisse zeigen, dass drei Methode gut funktionieren können und der
Ansatz für Dokumente ohne die tiefen Kenntnisse der Verarbeitung natürlicher Sprache
möglich ist. Allerdings basieren die beiden extraktiven genannten Methoden nicht auf der
Semantik oder Grammatik des Textes, sondern besteht darin, Sätze zu extrahieren. Die
Folge davon ist, dass die Sätze beim Zusammensetzen sprachlich nicht natürlich sind. Dies
verringert teilweise die Qualität des Zusammenfassungstextes.
Die durchschnittliche Zusammenfassungszeit beträgt nicht mehr als fünf Sekunden pro
Text. Verglichen mit der TextRank -Methode liefert die TF-IDF -Methode viel schnellere
Ergebnisse. Der Grund dafür ist, dass der TextRank-Algorithmus rekursiv den gesamten
Text berechnet. Je länger der Text, desto länger die Zeit. Dies ist der Nachteil des Algo-
rithmus. Somit ist diese Zusammenfassungsmethode für Arten von Nachrichten und kurze
Inhaltsdokumente geeignet.
25

Literatur
[1] Gupta, V., Lehal, G. S. (2010). A survey of text summarization extractive techniques.
Journal of emerging technologies in web intelligence, 2(3), 258-268.

[2] Stanley – Bootstrap Freelancer Template


https://templatemag.com/stanley-bootstrap-freelancer-template/

[3] Hengartner, U. (2019). Searching-Tool für Compliance. HMD Praxis der Wirtschafts-
informatik, 56(5), 947-963.

[4] Christian Wartena : Vorverarbeitung von Texten mit Python und NLTK
https://textmining.wp.hs-hannover.de/Preprocessing.html

[5] Le, V. B., Besacier, L. (2009). Automatic speech recognition for under-resourced
languages: application to Vietnamese language. IEEE Transactions on Audio, Speech,
and Language Processing, 17(8), 1471-1482.

[6] Oomen-Welke, I. (2008). Deutsch und andere Sprachen im Vergleich. Deutsch als
Zweitsprache, 33-48.

[7] Vu, T., Nguyen, D. Q., Nguyen, D. Q., Dras, M., Johnson, M. (2018). Vncorenlp: A
vietnamese natural language processing toolkit. arXiv preprint arXiv:1801.01331.

[8] Bruandet, M. F., Chevallet, J. P., Thuy, D. T. B., Quoc, H. B. An approach to


Vietnamese Information Retrieval.

[9] Van-Duyet Le : vietnamese-stopwords


https://github.com/stopwords/vietnamese-stopwords

[10] Porter, M. F. (2001). Snowball: A language for stemming algorithms

[11] Harris, Z. (1991). Theory of language and information: a mathematical approach.

[12] Word vectors for 157 languages


https://fasttext.cc/docs/en/crawl-vectors.html

[13] Ferreira, R., de Souza Cabral, L., Lins, R. D., e Silva, G. P., Freitas, F., Cavalcanti,
G. D., ... Favaro, L. (2013). Assessing sentence scoring techniques for extractive text
summarization. Expert systems with applications, 40(14), 5755-5764.

[14] Andhale, N., Bewoor, L. A. (2016, August). An overview of text summarization


techniques. In 2016 international conference on computing communication control
and automation (ICCUBEA) (pp. 1-7). IEEE.
LITERATUR 26

[15] Mihalcea, R., Tarau, P. (2004, July). Textrank: Bringing order into text. In Procee-
dings of the 2004 conference on empirical methods in natural language processing
(pp. 404-411).

[16] Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., ... Liu, P. J.
(2019). Exploring the limits of transfer learning with a unified text-to-text transfor-
mer. arXiv preprint arXiv:1910.10683.

[17] Xue, L., Constant, N., Roberts, A., Kale, M., Al-Rfou, R., Siddhant, A., ... Raffel,
C. (2020). mT5: A massively multilingual pre-trained text-to-text transformer. arXiv
preprint arXiv:2010.11934.

[18] Ladhak, F., Durmus, E., Cardie, C., McKeown, K. (2020). WikiLingua: A New
Benchmark Dataset for Cross-Lingual Abstractive Summarization. arXiv preprint
arXiv:2010.03093.

[19] Kingma, D. P., and Ba, J. (2014). Adam: A method for stochastic optimization.
arXiv preprint arXiv:1412.6980.