Wörterliste in PowerPoint

Wörterliste in PowerPoint

Möchten Sie eine Word Cloud in eine PowerPoint Präsentation einfügen, brauchen Sie als Basis eine Wörterliste. Die meisten Tools erzeugen so eine Wörterliste aus einem Text, den man über Copy & Paste einfügt. Wenn Sie das mit PowerPoint machen wollen, funktioniert es nicht. Die Texte sind in Shapes gespeichert, die sich so nicht kopieren und einfügen lassen.

Ein Trick das zu umgehen ist, die Präsentation als PDF-Datei auszudrucken, die PDF zu öffnen, den gesamten Text zu markieren und zu kopieren. Wenn Sie den Text jetzt in ein Word Cloud Tool einfügen, funktioniert es eine Wörterliste zu generieren.

In der Summe ist das aber ganz schön aufwändig. Und weil sich Folien gerne auch ändern, müssen Sie den Vorgang immer wiederholen.

Auch ohne eine Word Cloud ist eine Wörterliste interessant. Sie sehen auf einen Blick welche Wörter in der Präsentation vorkommen und welche Häufigkeit sie haben. Das erweitert die normale Funktion zum reinen Zählen der Wörter enorm.

PowerPoint stellt so eine Funktion nicht zur Verfügung. Wie lässt sich das trotzdem umsetzen?

Mit VBA (Visual Basic for Applications) gibt es fast alle Möglichkeiten, eine Microsoft Office Anwendungen zu erweitern.

Um eine Wörterlisten-Funktion umzusetzen, braucht es drei Dinge:

  • Einen Ausgangspunkt, der den selbst-programmierten Code startet
  • Einen Dialog, der Einstellungen entgegennimmt und die Wörterliste ausgibt
  • Den VBA-Code, der die Logik für Wörterliste enthält

Ausgangspunkt: Ribbon Leiste

Wie kann ein Anwender die Wörterliste nun am besten öffnen? Eine gute Möglichkeit ist, einen Button in der Ribbon Leiste zu platzieren.

Ich zeige Ihnen hier die Variante einer präsentationsspezifischen Ribbon Leiste. Das geht am besten über ein zusätzliches Tool, den Office RibbonX Editor.

  • Office RibbonX Editor
  • Eigenes Icon in der Ribbon-Leiste von PowerPoint

Der angegebene Callback ShowWodListCountForm muss mit dem gleichen Namen in einem Modul im VBA-Code hinterlegt sein. Als Parameter braucht die Sub eine Variable vom Typ IRibbonControl.

Sub ShowWordListCountForm(control As IRibbonControl)
  WordListCountForm.Show
End Sub 

Im Rumpf der Prozedur stehen die Befehle zum Anzeigen des Dialogs.

Dialog: Einstellungen und Ausgabe

Den Aufbau des Dialogfenster lässt gestalten Sie natürlich nach Ihren eigenen Vorlieben. Ich habe für mich dieses Design entschieden und mir zusätzliche Einstellungsoptionen überlegt.

Dialog Wörterliste Einstellmöglichkeiten und Ausgabebereich
Dialog für die Wörterliste Einstellmöglichkeiten und Ausgabebereich

Einmal möchte ich auswählen, aus welchen Folien die Wörterliste generiert werden soll. Das hat Vorteile, gerade wenn Sie eine Word Cloud für bestimmte Kapitel erstellen wollen. Umgesetzt habe ich es mit einer Listbox. Eine Listbox lässt auch Mehrfachauswahl zu. Was benötigt wird, ist nur eine Liste, welche Folien in der Präsentation vorhanden sind.

  ListBoxSlides.Clear
  ListBoxSlides.AddItem "Alle Folien"
  ListBoxSlides.Selected(0) = True
  For i = 1 To ActivePresentation.Slides.Count
    ListBoxSlides.AddItem "Folie " & ActivePresentation.Slides(i).SlideNumber
  Next

Stoppwörter

Es auch Einstellmöglichkeiten geben, Stoppwörter ein- und auszublenden. Nach Wikipedia sind Stoppwörter Wörter, die früher bei Suchmaschinen bei einer Volltextindexierung nicht beachtet wurden. Sie treten i. d. R. häufig auf und haben eine untergeordnete oder keine Relevanz für die Erfassung des Dokumentinhalts.

Beispiele sind: aber, alle, als, der, die, das, ein usw.

Das ist generell interessant, damit können Sie besser erkennen, welche relevanteren Wörter Sie bereits in Ihrer Präsentation verwenden.

Gerade wenn Sie die Wörterliste für Word Clouds einsetzen möchten, lässt sich der Fokus so einfacher auf Ihre Hauptthemen richten.

Stoppwörter liegen in verschiedenen Listen im Web bereit. Ich verwende die Liste von makelefy: https://gist.github.com/makelefy/f5ff045c08f8982d130ccd4c5b616019

Ähnliche Wörter zusammenfassen

Die Stoppwörter-Liste enthält auch verschiedene Formen von Wörtern mit gleichem Wortstamm, z. B. dies, diesem, diesen, dieser, dieses. Deswegen ist der Umfang auch ~1000 Wörter groß.

In der Informationsgewinnung bezeichnet man diese Zurückführung auf einen gemeinsamen Wortstamm als Stemming. Die Grundidee geht auf Julie Beth Lovins zurück, die bereits 1968 den ersten Stemming-Algorithmus veröffentlichte. Mittlerweile gibt es für viele Sprachen und Programmsprachen Umsetzungen.

Einen interessanten Vergleich von Adaptionen finden Sie bei Nicky Reinert.

Für den Fall dieser Wörterliste reicht mir aber eine sehr vereinfachte Form der Zusammenfassung.

Soll ein Wort hinzugefügt werden, wird zuerst geprüft, ob es bereits ein Wort gibt das bis auf die letzten 1 oder 2 Buchstaben identisch zum neuen Wort ist (dies <-> diesen). Wenn ja wird weiter geprüft, welches das kürzere Wort ist. Dieses kürzere Wort bleibt in der Wörterliste erhalten.

Im Code erfolgt diese Prüfung innerhalb der Sub AddWord(word As String).

      For i = LBound(WordList(), 2) To UBound(WordList(), 2) - 1
        'Array-Wort is länger
        If (Len(WordList(IWORD, i)) - Len(word) <= 2) And (Len(WordList(IWORD, i)) - Len(word) > 0) And (LCase(Left$(WordList(IWORD, i), Len(word))) = LCase(word)) Then
          WordList(IWORD, i) = word 'Array auf kürzeres Wort anpassen
          WordList(ICOUNT, i) = WordList(ICOUNT, i) + 1
          Exit Sub
        End If
        'neues Wort ist länger
        If (Len(word) - Len(WordList(IWORD, i)) <= 2) And (Len(word) - Len(WordList(IWORD, i)) >= 0) And (LCase(Left$(word, Len(WordList(IWORD, i)))) = LCase(WordList(IWORD, i))) Then
          WordList(ICOUNT, i) = WordList(ICOUNT, i) + 1 'nur hochzählen
          Exit Sub
        End If
      Next

Was jetzt noch im Dialog fehlt ist die Wörterliste selbst. Sie ist ebenfalls eine Listbox.

Ereignisse im VBA-Code

Sobald der Ribbon Leisten Callback den Dialog anzeigt, passiert für den Anwender erst einmal nichts.

UserForm_Activate führt aber Vorbereitungen aus. Die Stoppwörter-Liste wird geladen und die Folien-Auswahlmöglichkeiten werden in die Listbox eingetragen.

Jetzt wartet alles auf die nächste Benutzerinteraktion. Das betrifft in erster Linie die Einstellmöglichkeiten. Sind diese für den Benutzer passend, reicht ein Click auf den Button Wörterliste erzeugen, um das Ereignis CommandButton3_Click auszulösen.

Die Wörterliste speichere ich in einem zwei-dimensionalen Array aus Strings. Es gibt auch andere Möglichkeiten, wie eine Collection oder ein Dictionary. Für diesen einfachen Fall ist ein Array ausreichend. Da die Array-Größe anfangs noch nicht bekannt ist, wird sie bei jedem neuen Wort vergrößert. Das funktioniert bei Arrays, ohne Löschen des Inhalts, nur mit dem letzten Wert. Deswegen ist die zweite Dimension der Index (Zeilen) und die erste Dimension die Werte (Spalten).

(Spalte 0)(Spalte 1)
WortHäufigkeit
(Zeile 1)  PowerPoint5
(Zeile 2)  Wörterliste3

Ein Klick auf den Button Kopieren kopiert dieses Array im CSV-Format in die Zwischenablage. So dass Sie es auch außerhalb von PowerPoint – z. B. für Word Clouds – nutzen können.

Wörter erkennen

Dann beginnt ein Algorithmus alle Folien der Präsentation zu durchlaufen. Ist eine Folie oder alle vom Benutzer markiert, werden alle Shapes dieser Folie untersucht. Wird ein Textfeld gefunden, wird der gesamte Text an die Prozedur AddWords übergeben und weiter untersucht.

Der Code von AddWords räumt ein wenig vom Text auf, so dass nur Wörter übrigbleiben. Zahlen, Sonderzeichen und Steuerzeichen werden entfernt.

Die Funktion Split teilt den übrig gebliebenen Text und erzeugt daraus einen Array. Trennzeichen ist das Leerzeichen.

Jetzt ist es durch das Array einfach, den Text weiter Wort für Wort zu untersuchen. Das macht die Prozedur AddWord.

Dort wird entschieden, ob das Wort in die Wörterliste aufgenommen wird oder nicht. Je nach den eingestellten Vorgaben, führt der Code verschiedene Prüfungen durch.

Ich möchte z. B. nur Wörter anerkennen, die länger als 2 Buchstaben sind. Gibt es ein Wort bereits in der Wörterliste, wird die Häufigkeit um 1 erhöht.

Ist auf diese Weise der Text der gesamten Präsentation gefunden und in die Wörterliste überführt, sortiert die Funktion das Array entsprechend der Einstellung und gibt es in der Listbox aus.

Was genau passiert finden Sie im VBA-Quellcode in den Bemerkungen erklärt.

Dauerhaft in PowerPoint einbinden

Damit die Funktion für jede andere Präsentation auch zur Verfügung steht, speichern Sie die Datei als PowerPoint Add-in (.ppam) ab. PowerPoint schlägt beim Speichern das Microsoft Office Add-in Verzeichnis vor. Am einfachsten ist es, dieses beizubehalten.

Brauchen Sie die Funktion Wörterliste nur ab und zu ist es am besten, nur eine Verknüpfung zum gerade gespeicherten Add-in an einer passenden Stelle zu erstellen. Es reicht dann ein Doppelklick und die Funktion steht für Sie bereit.

Möchten Sie die Funktion dauerhaft in PowerPoint einbinden, fügen Sie das Add-in über Datei | Optionen | Add Ins hinzu.

PowerPoint Wörterliste als Add-in hinzufügen
PowerPoint Wörterliste als Add-in hinzufügen

Ein erster Test

Für einen ersten Test können Sie meine Beispiel-Präsentation des Excel-Tools „Paarweiser Vergleich“ downloaden und ausprobieren. In der Präsentation sind alle drei Punkte umgesetzt: Ribbon Leiste, Dialog und VBA-Code.

  • Beispiel für die eigene PowerPoint Wörterliste
  • Word Cloud erstellt mit der PowerPoint Wörterliste

Auf der letzten Folie finden Sie auch die Word Cloud, die aus der Präsentation mit Hilfe der Wörterliste erzeugt wurde.

Jetzt aber viel Freude beim Wörter zählen!

Download

Links

Wikipedia Artikel zu Stoppwort: https://de.wikipedia.org/wiki/Stoppwort

Wikipedia Artikel zu Stemming: https://de.wikipedia.org/wiki/Stemming

Beitrag zum Stemming auf nickyreinert.de: https://nickyreinert.de/blog/2020/12/09/einfuehrung-in-stemming-und-lemmatisierung-deutscher-texte-mit-python/#more-4837

Download Office RibbonX Editor: https://github.com/fernandreu/office-ribbonx-editor

Stoppwörterliste auf github: https://gist.github.com/makelefy/f5ff045c08f8982d130ccd4c5b616019

Mehr zum Thema Word Cloud auf meinem Blog

Kommentar verfassen