Ratgeber · Engine & Algorithmus

TextRank-Algorithmus erklärt: Wie PageRank Sätze ranken kann

TextRank ist der wohl bekannteste extraktive Summarization-Algorithmus. Er stammt aus 2004, basiert auf Brin und Pages PageRank und kommt mit einer Handvoll mathematischer Schritte aus. Wer den Algorithmus versteht, weiß auch, warum extraktive Tools deterministisch und nicht halluzinieren.

8 Min Lesezeit 1.793 Wörter 5 FAQs
Mateusz Viola
Mateusz ViolaBetreiber & TextRank-Engine
Geprüft am

PageRank, kurz aufgefrischt

Brin und Page haben 1998 in ihrem berühmten Stanford-Paper PageRank beschrieben: Webseiten sind Knoten in einem gerichteten Graph, Hyperlinks sind Kanten. Eine Seite ist wichtig, wenn viele wichtige Seiten auf sie verlinken. Mathematisch ist das ein Fixpunkt-Problem, gelöst durch die Iteration

PR(A) = (1 - d) + d * Summe(PR(T_i) / C(T_i))

mit Damping-Faktor d = 0.85, Linkzielen T_i und ausgehenden Kanten C(T_i). Die Iteration konvergiert garantiert, weil die Adjazenzmatrix stochastisch ist und Perron-Frobenius greift. Konkret heißt das: Egal mit welchen Startwerten man beginnt, nach 30 bis 50 Iterationen steht das Ergebnis fest.

Mihalcea und Tarau hatten 2004 die elegante Idee, das gleiche Konstrukt auf Texte zu übertragen, statt auf Webseiten.

Sätze als Knoten, Similarity als Kanten

Im EMNLP-Paper von 2004 schlagen die beiden vor: Jeder Satz im Text wird ein Knoten im Graph. Statt Hyperlinks zwischen Seiten gibt es Ähnlichkeiten zwischen Sätzen. Zwei Sätze, die viele gemeinsame Wörter haben, bekommen eine Kante mit hohem Gewicht. Zwei thematisch unverbundene Sätze bekommen entweder keine Kante oder eine sehr schwache.

Die Mihalcea-Tarau-Similarity-Formel ist überraschend simpel:

sim(S_i, S_j) = |gemeinsame Wörter| / (log|S_i| + log|S_j|)

Der Nenner mit dem Logarithmus normalisiert für Satzlängen, damit lange Sätze nicht automatisch eine hohe Ähnlichkeit zu allen anderen bekommen. Stopwörter werden vorher gefiltert, sonst dominieren der, die, das jede Ähnlichkeitsberechnung im Deutschen.

S1 S2 S3 S4 S5 0.42 0.67 0.28 0.55 0.40
Beispiel-Graph mit fünf Sätzen. Kantenstärke und Zahlen zeigen die Mihalcea-Tarau-Similarity, dickere Kanten bedeuten höhere Ähnlichkeit.

Die Iteration im Detail

Sobald der Graph steht, läuft die PageRank-Iteration darüber. Initialisiert wird jeder Knoten mit einem Startwert, typisch 1.0 oder 1/n. Dann wird in jeder Runde der neue Score eines Knotens aus den Scores aller Nachbarn berechnet, gewichtet mit der jeweiligen Kantenstärke. Die Formel sieht für TextRank so aus:

WS(V_i) = (1 - d) + d * Summe(w_ji / Summe(w_jk) * WS(V_j))

Der Term w_ji / Summe(w_jk) normalisiert die ausgehenden Kantengewichte pro Knoten. Wer das mit PageRank vergleicht, sieht die Verwandtschaft sofort. Konvergenz tritt ein, wenn sich die Scores zwischen zwei Iterationen um weniger als ein definiertes Epsilon ändern, typisch 0.0001. In der Praxis sind 30 bis 50 Iterationen üblich, manche Implementierungen begrenzen hart auf 100.

Wichtig: Die Iteration konvergiert auch in zyklischen Graphen, weil der Damping-Faktor von 0.85 die “Zufallsspr”unge” garantiert. Ohne Damping würden isolierte Komponenten zu Senken werden und der Algorithmus liefert keine sinnvollen Ergebnisse mehr.

Auswahl der Top-N Sätze

Nach der Konvergenz hat jeder Satz einen Score zwischen 0 und 1. Jetzt kommt der zweite Entscheidungspunkt: Wie viele Sätze sollen in die Zusammenfassung? Üblich sind zwei Strategien.

Prozent-basiert: Bei einem Reduktionsziel von 30 Prozent werden die obersten 30 Prozent aller Sätze nach Score ausgewählt. Das skaliert mit der Textlänge.

Fest-N: Es werden immer genau N Sätze ausgewählt, zum Beispiel die Top-5. Das ist für Snippets oder Teaser sinnvoll, weniger für ganze Artikel.

Auf text-zusammenfassen.de wird die prozent-basierte Variante verwendet, weil sie sich natürlicher an die Textlänge anpasst. Ein 200-Wörter-Text bekommt 3 Sätze, ein 2000-Wörter-Text 10 bis 12.

Reihenfolge: Score-sortiert oder Original?

Eine Frage, die im Original-Paper nur kurz angerissen wird: In welcher Reihenfolge sollen die ausgewählten Sätze ausgegeben werden? Score-sortiert wirkt zunächst attraktiv, ist aber für die Leseflüssigkeit fatal. Die Top-Sätze stammen oft aus der Mitte oder dem Ende eines Textes, ihre Aussage ergibt nur im Kontext der vorigen Sätze Sinn. Wer sie umsortiert, baut sprachliche Sprünge ein.

Empfohlen wird daher: Top-N nach Score auswählen, dann nach Original-Position sortieren. Genau dieser Ansatz steht auch im EMNLP-Paper und ist heute Standard in jeder ernsthaften Implementierung von TextRank.

Was den Algorithmus stark macht

TextRank hat drei Eigenschaften, die ihn auch 2026 noch relevant machen. Erstens ist er deterministisch: Gleicher Input liefert gleichen Output, jedes Mal. Das ist für rechtliche und wissenschaftliche Kontexte unverzichtbar. Zweitens läuft er komplett im Browser, ohne Daten an einen Server zu schicken. Das ist für DSGVO-konforme Tools die einzig saubere Lösung. Drittens braucht er keine Trainingsdaten, keine GPU, keine API-Kosten. Eine TextRank-Implementierung in JavaScript ist etwa 200 Zeilen Code und läuft in Millisekunden.

Die Schwächen sind genauso klar: Synonyme erkennt der Algorithmus nicht (kein Wortvektor-Wissen). Ironie und Negation werden nicht verstanden. Bei sehr heterogenen Texten, etwa einem Sammelband mit verschiedenen Autoren, mischt TextRank die Themen, weil der Graph alle Sätze gleich behandelt.

Konvergenz-Beweis und Random-Walk-Interpretation

Die mathematische Sicherheit, dass die Iteration konvergiert, kommt nicht aus dem Algorithmus selbst, sondern aus der Theorie der Markov-Ketten. Die Übergangsmatrix der TextRank-Iteration ist nach Normierung eine stochastische Matrix. Mit dem Damping-Faktor 0.85 wird sie zusätzlich primitiv, das heißt: Es gibt keine isolierten Komponenten mehr, weil der Random Walker mit 15 Prozent Wahrscheinlichkeit zu jedem Knoten springen kann. Das Perron-Frobenius-Theorem garantiert dann einen eindeutigen Eigenvektor mit positivem Eigenwert, der genau dem Score-Vektor entspricht. In der Praxis wird die Iteration nicht über die Eigenwert-Zerlegung gelöst (das wäre zu teuer), sondern über die Power Iteration, die dieselbe Konvergenzgeschwindigkeit hat.

Anschaulich kann man sich den Vorgang so vorstellen: Ein Zufallswanderer startet an irgendeinem Satz im Graph. Mit 85 Prozent Wahrscheinlichkeit wandert er zu einem Nachbar-Satz, wobei die Wahl proportional zur Kantenstärke ist. Mit 15 Prozent Wahrscheinlichkeit springt er zu einem zufälligen anderen Satz. Lässt man diesen Wanderer unendlich lange laufen, ergibt sich für jeden Satz eine Wahrscheinlichkeit, in der er sich aufhält. Diese stationären Wahrscheinlichkeiten sind die TextRank-Scores. Sätze, in denen der Wanderer oft ist, gelten als wichtig.

Algorithmische Komplexität in der Praxis

Für einen Text mit n Sätzen ist die Aufbauphase O(n im Quadrat), weil jedes Satzpaar verglichen werden muss. Die PageRank-Iteration ist pro Schritt O(n im Quadrat), weil jeder Knoten alle anderen anschaut. Bei k Iterationen ergibt das O(k mal n im Quadrat). Für typische Werte (k = 50, n = 100) sind das 500.000 Operationen, in JavaScript unter 10 Millisekunden. Bei n = 1000 wären es 50 Millionen, immer noch unter einer Sekunde.

Die teure Phase ist meist nicht die Iteration, sondern die Tokenisierung und Stopwort-Filterung im Vorlauf. Wer eine schnelle Implementierung will, sollte hier optimieren: Tokens cachen, Stopwortliste als Set statt Array, Lowercase einmal vorab. Erst danach lohnt sich Mikrooptimierung der Iteration selbst.

Erweiterungen: Position, Headline, Hybrid-Scores

In produktiven Tools wird selten der pure TextRank-Algorithmus eingesetzt, sondern eine Hybrid-Variante mit zusätzlichen Heuristiken. Beliebte Erweiterungen sind:

Position-Bonus: Sätze am Anfang eines Textes bekommen einen kleinen Score-Aufschlag, weil Einleitungen oft das Thema setzen. Ein Bonus von 10 bis 20 Prozent auf den ersten und letzten Satz pro Absatz ist eine bewährte Konfiguration.

Headline-Match: Sätze, die Schlüsselwörter aus dem Titel oder den Überschriften enthalten, bekommen Bonus. Das hat Edmundson schon 1969 gemacht, ist heute noch nützlich.

Cue-Phrases: Bestimmte Phrasen (“zusammenfassend”, “wichtig ist”, “wir zeigen, dass”) deuten auf Schlüsselsätze. Eine kurze Liste reicht oft.

Length-Filter: Sätze unter 5 Wörtern oder über 50 Wörtern werden ausgeschlossen. Sehr kurze Sätze haben zu wenig Inhalt, sehr lange sind oft Aufzählungen.

Auf text-zusammenfassen.de werden diese Heuristiken bewusst zurückhaltend eingesetzt, weil sie dem extraktiven Determinismus entgegenstehen. Eine Implementierung mit zu vielen Heuristiken wird schnell intransparent, “warum hat der Algorithmus diesen Satz gewählt” lässt sich dann nicht mehr klar beantworten. Pure TextRank-Scores sind reproduzierbar, hybridisierte Varianten weniger.

Vergleich mit klassischen Verfahren

Vor TextRank gab es zwei dominante extraktive Verfahren: Luhn (1958) und Edmundson (1969). Beide arbeiten nicht graphbasiert.

Luhn zählt Wortfrequenzen, identifiziert “wichtige Wörter” (häufig im Text, aber nicht zu häufig), und wählt Sätze nach der Dichte solcher Wörter aus. Sehr einfach, aber empfindlich gegen lange Sätze und Wiederholungen.

Edmundson kombiniert Wortfrequenzen mit Cue-Phrases (bestimmte Wendungen wie “in conclusion”), Title-Words und Position. Das ist robuster als Luhn, hängt aber stark von der Qualität der Cue-Phrase-Liste ab.

TextRank löst beide Probleme über die Graph-Struktur. Wichtige Sätze sind nicht mehr “Sätze mit vielen wichtigen Wörtern”, sondern “Sätze, die zu vielen anderen wichtigen Sätzen ähnlich sind”. Das ist konzeptionell eleganter und liefert auf DUC-Daten messbar bessere Resultate (ROUGE-1 um 0.36 vs. 0.28 für Luhn). Trotzdem werden Luhn und Edmundson in Hybrid-Systemen heute noch eingesetzt, weil sie schnell und deterministisch sind.

Implementierungsdetails: Was im Code wirklich passiert

Wer eine TextRank-Implementierung in JavaScript schreibt, durchläuft fünf konkrete Phasen. Die Tokenisierung zerlegt den Eingabe-Text in Sätze über einen Splitter (typisch ein Regex auf Satzzeichen wie Punkt, Frage- und Ausrufezeichen plus Folge-Leerzeichen). Wichtig ist die Behandlung von Abkürzungen (“z. B.”, “Dr.”, “etc.”) und Ordnungszahlen (“1. Januar”), die nicht als Satzgrenzen gelten dürfen. Die Stopwort-Filterung läuft auf Wort-Ebene, jeder Satz wird zu einer Menge nicht-Stopwörter reduziert. Die Similarity-Matrix wird als zweidimensionales Array gespeichert, oft als typisierter Float32Array für Performance. Die Iteration läuft synchron oder asynchron, abhängig von der Implementation. Bei sehr großen Texten kann ein WebWorker sinnvoll sein, damit der Main-Thread nicht blockiert.

Die Auswahl der Top-N Sätze nutzt eine Heap-Datenstruktur oder einen einfachen Sort-Algorithmus. Bei n unter 1000 ist der Performance-Unterschied vernachlässigbar. Die finale Re-Sortierung in Original-Reihenfolge ist trivial, weil jeder Satz seinen ursprünglichen Index trägt.

TextRank für Keyword-Extraktion

Eine oft übersehene Anwendung des Algorithmus ist die Extraktion von Schlüsselbegriffen. Mihalcea und Tarau zeigen im selben EMNLP-Paper, dass TextRank nicht nur für Sätze, sondern auch für Wörter funktioniert. Der Aufbau ist analog: Wörter werden Knoten, syntaktische Co-Occurrence wird zur Kante. Wörter, die in einem Fenster von zwei bis fünf Wörtern oft zusammen vorkommen, sind verbunden. Die PageRank-Iteration läuft, am Ende werden die Top-N Wörter als Schlüsselbegriffe ausgegeben.

Diese Variante ist die Grundlage vieler SEO-Tools, die “Topical Keywords” aus Texten extrahieren. Auf text-zusammenfassen.de ist sie nicht primär eingebunden, könnte aber als Erweiterung angeboten werden: Neben der Zusammenfassung könnte das Tool auch die wichtigsten Schlüsselbegriffe des Originaltexts zeigen, was als Lese-Hilfe oder Indexierungs-Hilfe nützlich ist.

Was hängenbleibt

TextRank ist PageRank für Sätze: ein Graph aus Ähnlichkeiten, eine Iteration mit Damping-Faktor 0.85, eine Auswahl der Top-N Knoten. Das ganze 2004 publiziert, heute noch der Goldstandard für extraktive Zusammenfassung im Browser. Wer Determinismus, Privacy und Null-Kosten braucht, fährt mit dem Algorithmus gut. Wer Synonyme und stilistische Glättung will, muss in Richtung BERT, BART oder GPT wechseln.

FAQ

Häufige Fragen

Wieso ist der Damping-Faktor genau 0.85?

Der Wert 0.85 stammt aus dem Original-PageRank-Paper von Brin und Page (1998). Er wurde empirisch bestimmt: Bei einem Damping-Faktor um 0.85 konvergiert die Iteration in den meisten Graphen nach etwa 30 bis 50 Schritten, gleichzeitig bleibt das Ergebnis robust gegen einzelne Ausreißer im Graph. Mihalcea und Tarau haben den Wert für TextRank übernommen, weil sich in ihren Experimenten auf DUC-Daten keine signifikante Verbesserung durch andere Werte zeigte. Praktisch heißt das: Mit einer Wahrscheinlichkeit von 85 Prozent folgt der Random Walker einer Kante, mit 15 Prozent springt er zu einem zufälligen Knoten.

Warum wird die Original-Reihenfolge der Sätze beibehalten?

Wer Sätze nach Score-Reihenfolge sortiert, verliert die Erzähllogik. Ein Text hat normalerweise eine Einleitung, Argumente und einen Schluss. Wenn der drittwichtigste Satz aus dem Schlussabschnitt vor dem wichtigsten aus der Einleitung steht, klingt die Zusammenfassung zerhackt. Mihalcea und Tarau empfehlen im EMNLP-Paper explizit, die Reihenfolge zu erhalten. Auf text-zusammenfassen.de wird genauso vorgegangen: Erst werden die Top-N Sätze nach Score ausgewählt, dann nach ihrer ursprünglichen Position im Text sortiert ausgegeben.

Was passiert mit Stopwörtern wie der, die, das?

Stopwörter werden vor der Similarity-Berechnung herausgefiltert. Würde man sie mitzählen, hätten zwei beliebige deutsche Sätze immer eine hohe Ähnlichkeit, weil sie alle die, der, und, ist enthalten. Auf text-zusammenfassen.de wird eine deutsche Stopwortliste mit etwa 230 Einträgen verwendet, gepflegt nach NLTK-Standard. Die Wahl der Stopwortliste hat spürbaren Einfluss auf das Ergebnis: Wer englische Texte mit deutscher Stopwortliste verarbeitet, bekommt schlechtere Resultate, weil die englischen Stopwörter wie the und of mitzählen.

Funktioniert TextRank auch für sehr kurze Texte?

Unter etwa 5 Sätzen wird der Algorithmus instabil. Der Graph hat zu wenige Knoten, die Iteration konvergiert sofort, alle Sätze bekommen ähnliche Scores. Zwischen 5 und 15 Sätzen funktioniert TextRank, liefert aber wenig Mehrwert gegenüber einer simplen Vorauswahl. Sein eigentlicher Sweet Spot liegt bei 20 bis 200 Sätzen, also einem typischen Artikel oder Kapitel. Über 500 Sätze hinaus wird die Similarity-Matrix mit n-quadrierten Einträgen groß, der Algorithmus bleibt aber korrekt.

Wieso braucht TextRank kein Machine Learning?

TextRank ist ein graphbasiertes Verfahren ohne Trainingsphase. Anders als BERT oder GPT lernt der Algorithmus nichts aus Daten. Er verwendet eine fest definierte Similarity-Funktion und eine fest definierte Iterationsvorschrift. Das hat Vor- und Nachteile: Vorteil ist Determinismus, Privacy, Null-Trainingsdaten-Bedarf und Reproduzierbarkeit. Nachteil ist die Sprachabhängigkeit über die Stopwortliste und die fehlende Semantik. Synonyme erkennt TextRank nicht.

Anzeige

Quellen

Worauf dieser Ratgeber sich stützt

Verwandte Ratgeber

Weiterlesen

Veröffentlicht · zuletzt geprüft
Verantwortlich: Mateusz Viola
Anzeige
Anzeige
Anzeige
Anzeige