suit: Worthäufigkeit in aus einem Fließtext bestimmen

Beitrag lesen

Du willst vermutlich aus einem Fließtext eine Tagwolke erstellen oder Keywords automatisch ermitteln.

Ich hab' bereits etwas entsprechendes geschrieben - in den letzten Monate ist die Sache gewachsen.

Allein für die Generierung der x häufigsten bzw. wichtigsten Wörter in einem Fließtext sind bereits 7 KiB an PHP (etwa 200 Zeilen) entstanden (natürlich mit Kommentaren). Die komplette Klasse mit allen notigen Files hat etwa 25 KiB - wenn dein Vorhaben also ähnlich flexibel sein soll, helfen dir möglicherweise folgende Überlegungen weiter. Wenn man damit erstmal beginnt, stößt man eben unweigerlich auf sehr viele Dinge die beachtet werden müssen:

  • HTML entfernen - mit strip_tags() geht das nicht, das muss schlauer gemacht werden - je nach Anforderung müssen z.B. bestimmte Attribute (title) behalten werden und in die Wortliste aufgenommen werden.

  • Stopwords müssen möglicherweise entfernt werden, allerdings muss dabei beachtet werden, ob es sich tatsächlich um ein Stopword der definierten Sprache handelt oder nicht. "die" ist in deutscher Sprache in Stopword, <span lang="en">die</span> in einem deutschsprachigen Text allerdings nicht.

  • Möglicherweise müssen bestimmte Dinge gewichtet werden - ein "<p><strong>foo</strong></p>" muss bei gleicher Häufigkeit weiter vorne in der Liste stehen als ein "<p>bar</p>"

  • zusammengehörige Dinge wie ein Datum muss ggf. als Wort betrachtet werden (in verschiedenen Formaten, jeweils wieder sprachabhängig).