Wettbewerb: GNU/Linux.ch Verschlagworten

Mi, 4. Mai 2022, Ralf Hersel

Während der letzten zwei Jahre hat die Community bei GNU/Linux.ch über 2200 Artikel zu technischen und gesellschaftlichen Themen rund um Freie Software und Freie Gesellschaft geschrieben. Uns ist es sehr wichtig, dass dieser Schatz möglichst zugänglich ist und erhalten bleibt. Vor Kurzem haben wir die Suchfunktion verbessert, um die Artikel einfacher finden zu können. Damit die Beiträge zu einem bestimmten Thema noch besser gefunden werden können, möchten wir die Artikel verschlagworten, indem wir Tags verwenden.

Bei über 2200 Artikeln ist es eine fast unlösbare Aufgabe, diese von Hand nachträglich mit Tags zu versehen. Da muss ein Automatismus ran, der die Texte programmatisch verschlagwortet. Und damit sind wir bei der Aufgabe für diesen Wettbewerb. Bevor ihr in die Tasten haut, und ich erkläre was zu tun ist, möchtet ihr sicher wissen, was es zu gewinnen gibt:

Die Teilnahme am Wettbewerb lohnt sich dieses Mal besonders, weil wir im Mai auch unser zweijähriges Jubiläum feiern. Am 15. Mai 2020 hat Lioh unseren allerersten Artikel geschrieben. Aus diesem Anlass gibt es als Preis für diesen Wettbewerb, ein CutiePi Tablet zu gewinnen.

"Powered by a 8-inch multi-touch screen, a 5000 mAh battery, and the Raspberry Pi Compute Module 4, CutiePi is everything you need to start working on the Raspberry Pi."

Die Aufgabe

Es steht eine Auswahl von 20 GNU/Linux.ch-Artikeln in Form von Dateien in Verzeichnissen zur Verfügung. Der Name dieser Verzeichnisse entspricht dem URL-Namen des Artikels. In jedem Verzeichnis gibt es eine Datei 'index.txt', in der sich der HTML-Inhalt des Artikels (ohne Titel) befindet. Nun gilt es, die Texte pro Artikel zu verschlagworten. So sehen die Input-Daten aus:

├── data
│   ├── ausblick-auf-kde-plasma-5-23-verbessertes-breeze-theme
│   │   └── index.txt
│   ├── aus-feedreader-wird-newsflash
│   │   └── index.txt
│   ├── auslieferung-des-volla-phones-fuer-november-geplant
│   │   └── index.txt
│   ├── autosave-320f77ed720ec9dd09e35e4ebee5235d
│   │   └── index.txt
│   ├── background-remover
│   │   └── index.txt
...

Der Inhalt einer 'index.txt'-Datei sieht zum Beispiel so aus:

<p><strong>Di, 25. Januar 2022, Lioh Möller</strong></p>
<p>In einer aktuellen Folge des Kindermagazins <em>Kurzwelle </em>stellen die Reporterinnen Emma und Karla das Buch <em>Ada und Zangemann</em> vor.</p>
<p><img src="https://gnulinux.ch/bl-content/uploads/pages/12e10403994953c1b67e490c85b0fcb6/Kurzwelle.jpg" alt="" style="display: block; margin-left: auto; margin-right: auto;"></p>
<p>Auch wir haben das Märchen über Software, Skateboards und Himbeereis bereits <a href="https://gnulinux.ch/ada-zangemann-ein-weihnachtsgeschenk" title="Ada &amp; Zangemann" target="_blank" rel="noopener">vorgestellt </a>und viele Erwachsene finden ebenfalls Gefallen daran. Doch was passt besser, als dass sich Kinder mit dem Buch von Matthias Kirschner auseinandersetzen.</p>
<p>In der kurzen <a href="https://kurzwelle.podigee.io/781-buchtipp-ada-und-zangemann" title="Kindermagazin Kurzwelle mit Ada und Zangemann" target="_blank" rel="noopener">Episode</a> des Magazins werden Teile des Buchs vorgelesen und ein klarer Lesetipp ausgesprochen.</p>
<p>Bildquelle: Kindermagazin Kurzwelle<br>Verlag: <a href="https://oreilly.de/produkt/ada-und-zangemann/" title="Ada und Zangemann im Verlag" target="_blank" rel="noopener">https://oreilly.de/produkt/ada-und-zangemann/</a></p>

Das Ergebnis

Jetzt müssen für diesen Inhalt die relevanten Schlagwörter (tags) gefunden werden. Diese sollen in einer JSON-Datei 'tags.json' gesammelt werden. Diese kann so aussehen:

{
    "b-oops-neue-version-erschienen": [
        "Begriff",
        "Effekten",
        "Linux",
        "Mac"
    ],
    "background-remover": [
        "Foto",
        "Hintergrund",
        "Arbeit",
        "GIMP",
        "CPU"
    ],
    "backuppy-backups-auf-die-einfache-art": [
        "Backup",
        "Programm",
        "Vorschläge"
    ],
...
}

Die Struktur der JSON-Datei ist einfach: der Key enthält den URL-Namen des Artikels, z.B. 'background-remover', während der Value eine Liste der Tags enthält, z.B. ["Foto","Hintergrund","Arbeit","GIMP", "CPU"].

Das Datei-Handling ist relativ einfach; die Schwierigkeit liegt darin, die relevanten Schlagworte (Tags) herauszufinden. Pro Artikel soll mindestens ein, maximal fünf Schlagworte gefunden werden, wobei der Titel sinnvollerweise auch einbezogen werden sollte. Achtung: Autosave-Artikel dürfen nicht berücksichtigt werden.

Wir sind uns bewusst, dass dieser Programmierwettbewerb nicht einfach ist. Es ist daher möglich, dass niemand den Preis gewinnen wird, weil a) niemand teilnimmt, oder b) die Lösungen zu schlecht sind. In diesem Fall wird es eine Wiederholung des Wettbewerbs geben.

Falls es euch gelingt, eine gute Lösung zu finden, sind wir sehr froh und werden den Vorschlag implementieren. Damit befördern wir die Community-Beiträge auf GNU/Linux.ch auf ein neues Level, in dem eure Artikel die Zeiten überdauern werden.

Lösungen einreichen

Lösungsvorschläge können bis zum 31. Mai 2022 eingereicht werden, und zwar per E-Mail an kontakt@gnulinux.ch. Dieses Mal akzeptieren wir nur Einreichungen in Form von Python-Programmen mit aussagekräftiger Dokumentation. Das Einbinden von beliebigen Bibliotheken ist erlaubt, solange diese unter einer freien Lizenz stehen und kostenfrei verwendet werden können (falls jemand auf die Idee kommt, GPT-3 zu verwenden). Wer das Problem unbedingt mit Rust, Go, Haskell, Brainfuck oder Shell-Skript lösen möchte, kann das machen, wird aber wahrscheinlich von der Teilnahme ausgeschlossen. Mir ist es zu viel, mich in x-verschiedene Programmiersprachen einzuarbeiten. Wer das Problem rein theoretisch lösen möchte, ist willkommen und kann eine Dokumentation einreichen, die sich auch praktisch umsetzen lässt.

Es gibt maximal eine Gewinnerin, bzw. einen Gewinner. An diesem Wettbewerb können alle teilnehmen, also auch Mitglieder der GNU/Linux.ch-Gruppen RED und CORE. Falls ihr Fragen zum Wettbewerb habt, stellt diese bitte in den Kommentaren zu diesem Artikel.

Viel Spass beim Grübeln und Gewinnen!

Tags

Wettbewerb, Tags, Schlagwort