Zum Inhalt springen

Bessere Zusammenfassungen per KI – Chain of Density Prompting und Cluster-Analyse [Update]

Ich nutze KI-Tools wie ChatGPT und Claude gerne, um Artikel und längere Texte zusammenzufassen – vielleicht hast Du das auch schon getan – aber sind wir mal ehrlich: KI-Zusammenfassungen können echt schlecht sein und wichtige Informationen auslassen.

Eine neue Prompting-Technik namens „Chain of Density“ versucht dieses Problem zu lösen, indem sie die KI auffordert, die Dichte der Zusammenfassung in mehreren Durchläufen immer weiter zu erhöhen. Eine jüngst veröffentlichte Forschungsarbeit mit dem Titel „From Sparse to Dense: GPT-4 Summarization with Chain of Density Prompting“ zeigt, dass dies zu einer stark komprimierten, aber dennoch lesbaren Ausgabe führt, die tatsächlich noch die wichtigsten Informationen und Aussagen enthält.

Die Auswertung der Forscherinnen und Forscher von Salesforce AI, dem MIT und der Columbia University aus dem Fachbereich Computer Science & Biomedical Informatics zeigt, dass nach dem vierten Durchlauf die Zusammenfassung sogar besser wird, als die eines Menschen:

In dem Paper gibt es auch noch ein Beispiel, anhand dessen man die Schritte der Iterationen sehr schön nachvollziehen kann. Die hinzugefügten Informationen wurden dabei jeweils grün eingefärbt:

Abbildung 2: Chain of Density (CoD) Aufforderung und Beispielausgabe. Bei jedem Schritt werden 1-3 zusätzliche Details (Entitäten)
der vorherigen Zusammenfassung hinzugefügt, ohne dass diese länger wird. Um Platz für neue Entitäten zu schaffen, werden bestehende Inhalte umgeschrieben (z. B.,
Komprimierung, Verschmelzung). Die Hälfte der Annotatoren (2/4) bevorzugt die vorletzte Zusammenfassung, die anderen die letzte.

Bei jedem Schritt werden 1-3 zusätzliche Details (Entitäten) der vorherigen Zusammenfassung hinzugefügt, ohne dass diese länger wird. Um Platz für neue Entitäten zu schaffen, werden bestehende Inhalte umgeschrieben (z. B. durch Komprimierung oder Verschmelzung).

Hier der originale Prompt aus dem Paper:

You will ask me for an article. Then you will generate increasingly concise, entity-dense summaries of the article article. 

Repeat the following 2 steps 5 times. 

Step 1. Identify 1-3 informative entities (";" delimited) from the article which are missing from the previously generated summary. 
Step 2. Write a new, denser summary of identical length which covers every entity and detail from the previous summary plus the missing entities. 

A missing entity is:
- relevant to the main story, 
- specific yet concise (5 words or fewer), 
- novel (not in the previous summary), 
- faithful (present in the article), 
- anywhere (can be located anywhere in the article).

Guidelines:

- The first summary should be long (4-5 sentences, ~80 words) yet highly non-specific, containing little information beyond the entities marked as missing. Use overly verbose language and fillers (e.g., "this article discusses") to reach ~80 words.
- Make every word count: rewrite the previous summary to improve flow and make space for additional entities.
- Make space with fusion, compression, and removal of uninformative phrases like "the article discusses".
- The summaries should become highly dense and concise yet self-contained, i.e., easily understood without the article. 
- Missing entities can appear anywhere in the new summary.
- Never drop entities from the previous summary. If space cannot be made, add fewer new entities. 

Remember, use the exact same number of words for each summary.
Answer in JSON. The JSON should be a list (length 5) of dictionaries whose keys are "Missing_Entities" and "Denser_Summary".

Update: Original Prompt löst bing Suche aus

Dank des Hinweises eines Lesers (Danke Felix) musste ich feststellen, dass GPT-4 mit dem Originalprompt aus dem Paper nicht mehr zurecht kommt und direkt eine Bing-Suche nach irgendeinem Artikel startet, bevor man die Chance bekommt, einen Artikel zu übergeben.

Daher habe ich den Prompt heute angepasst und mit der aktuellen GPT-4 Turbo Version getestet:

I will provide an article. Then you will generate an increasingly concise, entity-dense summary of the article.

To do that, repeat the following two steps 5 times after your first summary. 

Step 1. Identify 1-3 informative entities (";" delimited) from the article which are missing from the previously generated summary.

Step 2. Write a new, denser summary of identical length which covers every entity and detail from the previous summary plus the missing entities.

A missing entity is:
- relevant to the main story
- specific yet concise (5 words or fewer)
- novel (not in the previous summary)
- faithful (present in the article)
- anywhere (can be located anywhere in the article)

Guidelines:
- The first summary should be long (4-5 sentences, ~80 words) yet highly non-specific, containing little information beyond the entities marked as missing. Use overly verbose language and fillers (e.g., "this article discusses") to reach ~80 words
- Make every word count: rewrite the previous summary to improve flow and make space for additional entities.
- Make space with fusion, compression, and removal of uninformative phrases like "the article discusses".
- The summaries should become highly dense and concise yet self-contained, i.e., easily understood without the article. - Missing entities can appear anywhere in the new summary.
- Never drop entities from the previous summary. If space cannot be made, add fewer new entities.

Remember, use the exact same number of words for each summary. Answer in JSON. The JSON should be a list (length 5) of dictionaries whose keys are "Missing_Entities" and "Denser_Summary".

Last step: After you have completed the fifth interation, translate the final denser summary to well written German without adding or removing information from the summary.

Please respond with READY, if you have read and understood that.

Bessere Ergebnisse habe ich jedoch erhalten, in dem ich die Zusammenfassung mittels DeepL übersetzt habe und das Ergebnis anschließend mittels DeepL Write nochmal verbessern ließ.

Wichtig: Je nachdem wie lang der zusammen zu fassende Text ist und wieviele Sachinformationen und Kernaussagen enthalten sind, muss man die Anzahl der Sätze und die Zahl der Wörter verändern, um ein zufriedenstellendes Ergebnis zu erhalten.

KI-Forscherin Lilian Do Khac hat sich in Ihrem Beitrag „Maschinenerstellte Zusammenfassung von Texten mit Aleph Alpha Luminous über R“ bei adesso das Problem der automatischen Zusammenfassung noch ein wenig intensiver angesehen, insgesondere im Hinblick auf eine nachvollziehbare KI sowie der Bestimmung der wichtigsten Aussagen eines längeren Textes bei beschränkten Kontextlänge und kommt zu interessanten Schlüssen. Insbesondere im zweiten Teil des Beitrags liefert Sie praktische Empfehlungen für die Spezifizierung des Umfangs der Zusammenfassung und empfiehlt bei langen Texten eine Cluster-Analyse als Vorverarbeitungsschritt.

Dabei kritisert Do Khac den Ansatz des Chain of Density Promptings und zeigt den Ansatz von Isaac Tham aus „Summarization Podcast Transcripts and Long Texts Better with NLP and AI“, welcher Entitäten trennschärfer analysiert.

Hier wird das Eingabedokument gechunkt und jeder Chunk mittels einer Cluster-Analyse geclustert. Dies ist sinnvoll, da es vorkommen kann, dass Themen mehrfach im Text auftauchen. Anschließend wird jedes Cluster einzeln aggregiert. Mit dem Ergebnis kann man später viel anfangen. Der Qualitätsbegriff dürfte hier gehaltvoller sein als in der Methodik davor, weil wir zusätzlich explizit nachweisen können, was woher kommt. Dem würde ich aus Sicht der Trustworthy AI eine höhere Qualität zuschreiben.

Lilian Do Khac

Isaac Tham erklärt in seinem Artikel die Probleme mit bestehenden Lösungen wie folgt:

Die klassische Methode, lange Texte zusammenzufassen, ist die rekursive Zusammenfassung, bei der der lange Text in kürzere Abschnitte aufgeteilt wird, die in das Kontextfenster des LLM passen. Jeder Abschnitt wird zusammengefasst, und die Zusammenfassungen werden zusammengefügt und dann durch GPT-3 geleitet, um weiter zusammengefasst zu werden. Dieser Vorgang wird so lange wiederholt, bis man eine Zusammenfassung in der gewünschten Länge erhält.

Der größte Nachteil ist jedoch, dass bestehende Implementierungen, z. B. LangChain’s summarize chain mit map_reduce, den Text ohne Rücksicht auf den logischen und strukturellen Fluss des Textes in Chunks aufteilen.

Isaac Tham

Wenn der Artikel zum Beispiel 1000 Wörter lang ist, würde eine Chunk-Größe von 200 bedeuten, dass wir 5 Chunks erhalten würden. Was ist, wenn der Autor mehrere Hauptpunkte hat, von denen der erste die ersten 250 Wörter einnimmt? Die letzten 50 Wörter würden in den zweiten Chunk mit dem Text des nächsten Punktes des Autors eingefügt, und wenn wir diesen Chunk durch die GPT-3-Zusammenfassung laufen lassen, würden potenziell wichtige Informationen des ersten Punktes ausgelassen werden. Außerdem können einige wichtige Punkte länger sein als andere, und es gibt keine Möglichkeit, dies von vornherein zu wissen.

Eine andere Methode ist die „Verfeinerungs“-Methode, bei der jeder Textabschnitt zusammen mit einer Zusammenfassung der vorherigen Abschnitte durch den LLM geleitet wird, der die Zusammenfassung schrittweise verfeinert, je mehr er vom Text sieht (siehe die Aufforderung hier). Die sequentielle Natur des Prozesses bedeutet jedoch, dass er nicht parallelisiert werden kann und lineare Zeit benötigt, viel länger als eine rekursive Methode, die logarithmische Zeit benötigt. Außerdem legt die Intuition nahe, dass die Bedeutung der ersten Teile in der endgültigen Zusammenfassung überrepräsentiert sein wird. Bei Podcast-Transkripten, bei denen die ersten Minuten Werbung sind, die für den Rest des Podcasts völlig irrelevant ist, ist dies ein Stolperstein. Aus diesem Grund wird diese Methode nicht häufig verwendet.

Selbst wenn fortschrittlichere Sprachmodelle mit längeren Kontextfenstern auf den Markt kommen, wird dies für viele Anwendungsfälle der Zusammenfassung (ganze Bücher) immer noch völlig unzureichend sein, so dass ein gewisses Chunking und eine rekursive Zusammenfassung unvermeidlich sind.

Wenn beim Zusammenfassen eines Textes die wichtigsten Punkte oder die Struktur des Textes nicht richtig erkannt werden, dann wird die Zusammenfassung wahrscheinlich nicht das aussagen, was der Autor wirklich meinte.

Eine bessere Lösung sei es demnach, die Zusammenfassung und die Themenmodellierung zusammen in einem Algorithmus zu bearbeiten.

Here, we split the summary outputs from one step of the recursive summarization into chunks to be fed into the next step.

Um dies zu erreichen, werden die Chunks semantisch in Themen geclustert und die Themen in der nächste Iteration erst zusammengefasst.

Der Artikel erklärt außerdem, wie das in Python mit Hilfe dreier Pakete umsetzen wurde:

  1. scipy für die Kosinus-Distanz-Metrik
  2. networkx für den Algorithmus zur Erkennung der Louvain-Community
  3. langchain als Paket mit Hilfsfunktionen, mit denen man LLMs wie OpenAIs GPT-3 aufrufen kann

Das GitHub-Repository mit dem Jupyter-Notebook und den Daten findest du unter: https://github.com/thamsuppp/llm_summary_medium

Darin enthalten sind selbstverständlich auch die notwendigen Prompts, um hervorragende Zusammenfassungen deiner Texte zu erstellen!

Das Programm erzeugt semantisch kohärente Themen indem du kleine Textabschnitte semantisch einbettest und den Text nach semantischer Ähnlichkeit aufteilst. Es sorgt außerdem für die Gewinnung von Titeln und Zusammenfassungen aus Chunks, was jedoch eine Anpassung der Prompts anstelle der standardmäßigen LangChain-Zusammenfassungskette erfordert. Die Kalibrierung des Algorithmus zur Erkennung der Louvain-Community wurde dort ebenfalls veröffentlicht, konkret die Hyperparameter wie Auflösung und Proximity-Bonus, die sicher stellen, dass die generierten Themencluster plausibel sind.

Kai Spriestersbach

Kai Spriestersbach

Kai Spriestersbach ist erfolgreicher Unternehmer und digitaler Stratege mit einem Master-Abschluss in Web Science. Er ist Inhaber von AFAIK und WebmasterPro und verfügt über mehr als 20 Jahre Erfahrung im Aufbau und der Optimierung von webbasierten Geschäftsmodellen. Als einer der erfahrensten Search Marketing Experten im deutschsprachigen Raum hat er mehr als 25 Vorträge auf SEO- und Online-Marketing-Konferenzen in Deutschland und Österreich gehalten. In den letzten Jahren hat er sich intensiv mit Large Language Models beschäftigt und sich als Experte für die Textgenerierung mit Hilfe künstlicher Intelligenz etabliert. Seine Karriere begann er mit einer Ausbildung zum Mediengestalter (IHK), bevor er den Bachelor of Science (B.Sc) in E-Commerce absolvierte. Anschließend erwarb er den Master of Science (M.Sc) in Web Science und forscht aktuell an der RPTU im Bereich angewandter generativer KI.

×