Verschlagworten mit reinem Python

  Andreas Räumer   Lesezeit: 3 Minuten  🗪 1 Kommentar

Andreas erklärt die Details seiner Wettbewerbslösung.

verschlagworten mit reinem python

Im Mai startete GNU/Linux.ch einen Programmierwettbewerb. Dabei ging es darum, die vielen Artikel auf GNU/Linux.ch mit Schlagworten bzw. Tags zu versehen. Als ich die Aufgabe gelesen habe, dachte ich zuerst, dass hierfür eine komplizierte Lösung nötig wäre, um geeignete Ergebnisse zu erzielen. Deshalb habe ich überlegt, ob es auch einen einfachen Weg gibt.

Daraufhin habe ich angefangen, meine Lösung zu entwickeln. Ohne zusätzliche Bibliotheken, ohne Pauken und Trompeten, nur mit reinem Python.

Grobe Funktionsweise

Hier die grobe Funktionsweise erklärt: Jeder Artikel wird einzeln nacheinander bearbeitet. Zuerst wird der eigentliche Text aus dem HTML extrahiert, damit keine HTML spezifischen Buchstaben oder Zeichen in der Auswertung landen. Links werden an dieser Stelle herausgefiltert und für später aufgehoben. Im nächsten Schritt wird der Text in Wörter aufgeteilt und jedes Wort einzeln nach bestimmten Kriterien bewertet. Zum Schluss werden die Wörter mit den höchsten Bewertungen als Tags vorgeschlagen.

Die Bewertungskriterien

Die Bewertungskriterien sind das Herz meiner Lösung. Jedes Wort bekommt eine Basis-Bewertung, die im weiteren Verlauf entweder aufgewertet oder abgewertet wird. Das Haupt-Kriterium ist die Worthäufigkeit. Wenn ein Wort bereits bewertet wurde, wird es erneut bewertet und die Ergebnisse addiert. Die meisten Schlagwörter sind Nomen und enthalten Großbuchstaben. Deshalb ist es wichtig, Wörter, die Großbuchstaben enthalten, entsprechend der Anzahl an Großbuchstaben stark aufzuwerten. Ein weiteres bedeutsames Kriterium ist die Ausschlussliste. In dieser Liste stehen sehr häufig vorkommende, aber unbedeutende Wörter (z.B. der, die, das). Diese Wörter werden komplett ignoriert. Wenn ein Wort im Titel enthalten ist, wird es ebenfalls deutlich aufgewertet. Wenn ein Wort kürzer ist als 3 Buchstaben, wird es entsprechend der Anzahl an Buchstaben abgewertet. Die Links, die am Anfang extrahiert wurden, werden jetzt bestehende Wörter aufwerten. Links werden nur dazu genutzt, um andere Wörter aus dem Artikel aufzuwerten, aber nicht, um neue Wörter hinzuzufügen.

Fazit

Insgesamt bin ich zufrieden mit den Resultaten. Das Projekt hat mir Spaß gemacht und ich konnte viel dabei lernen. Das Besondere an meiner Lösung ist, dass ich außer Python keine weiteren Abhängigkeiten oder Bibliotheken einsetze. Deshalb freut es mich besonders, den Wettbewerb gewonnen zu haben. Denn ich hätte nicht gedacht, dass ich mit diesen einfachen Mitteln so gut im Wettbewerb abschneiden würde.

Wer das Script selbst ausprobieren möchte, kann das gerne tun. Den Code gibt es hier: https://git.sp-codes.de/OneNewDev/Tagger. Dort findet ihr auch detailliertere Beschreibungen zur Funktionsweise.

Dank der Redaktion

Dank der Mithilfe von Andreas, Pauline und vielen anderen aus der Community, können die Artikel bei GNU/Linux.ch jetzt optimal durchsucht werden. Ein Dank geht auch an Tim, der die Suchfunktion um die Tags erweitert hat. Probiert es aus und findet, was euch interessiert.

Tags

Programmierwettbewerb, Python, Tags, Verschlagworten, Schlagwort

UbIx
Geschrieben von UbIx am 28. Juni 2022 um 22:18

Danke für die Tolle Erklärung Andreas. Auch wenn es sich simpel und einfach ließt, muss man erst mal auf die Kriterien kommen.