Wettbewerb: GNU/Linux.ch Verschlagworten

  Ralf Hersel   Lesezeit: 7 Minuten  🗪 9 Kommentare

Gesucht ist ein Verfahren, um alle bisherigen Artikel bei uns mit Tags zu versehen.

wettbewerb: gnu/linux.ch verschlagworten

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, GNU, Artikel, JSON-Datei, URL-Namen, Linux, Datei

Alex
Geschrieben von Alex am 4. Mai 2022 um 10:59

Den möglichen Gewinn jetzt einmal dahingestellt, finde ich, dass das ein richtig interessantes Problem ist. Und die/eine Lösung wird praktischen Nutzen haben.

Allerdings ist es auch ziemlich speziell, man müsste also im Grunde genommen eine maßgeschneiderte Lösung für euch bauen... Ich glaube das wird nicht mit einem Mal einreichen getan sein. Da werden schon ein paar Mails hin- und herfließen müssen.

Ich schaue es mir bei Gelegenheit trotzdem mal an :)

tux.
Geschrieben von tux. am 4. Mai 2022 um 16:02

Man wird sehen, ob meine eine Mail reicht ... ;-)

Alex
Geschrieben von Alex am 4. Mai 2022 um 11:30

Ironischerweise scheint in eurem Datensatz der Artikel zu BeautifulSoup kaputt zu sein?

Ralf Hersel
Geschrieben von Ralf Hersel am 4. Mai 2022 um 11:57

Ups, das stimmt. Das ist ein Artikel aus dem Entwurf, der noch nicht fertig geschrieben war. Einfach ignorieren.

Robert
Geschrieben von Robert am 4. Mai 2022 um 18:34

Achtung: Autosave-Artikel dürfen nicht berücksichtigt werden.

Verstehe ich das richtig, dass diese Artikel ganz ignoriert werden sollen? Oder nur bei der Berücksichtigung des Titels?

cybercow
Geschrieben von cybercow am 7. Mai 2022 um 16:22

Ich habe angefangen an der Aufgabe für den Wettbewerb zu arbeiten. Da das hier ein Deutschsprachiges Magazin ist, in deutscher Sprache. Jetzt komm ich mir aber doch komisch vor weil es für mich total ungewohnt ist. Wie seht ihr das? Bevorzugt ihr deutschsprachige Kommentare und Benennungen bei den Einreichungen oder sagt ihr, lieber englisch weil das in der IT so üblich ist?

Lioh
Geschrieben von Lioh am 7. Mai 2022 um 16:58

Du meinst im Code? Da ist beides okay.

Johannes
Geschrieben von Johannes am 28. Mai 2022 um 23:33

Vielleicht ein bisschen knapp kurz vor Abgabefrist. Aber was meint Ihr mit Autosave-Artikeln? Vielen Dank :)

Ralf Hersel
Geschrieben von Ralf Hersel am 29. Mai 2022 um 14:07

In den Beispielen ist ein Artikel, dessen Name mit 'autosave' beginnt. Den kannst Du ignorieren, weil es ein unfertiger Artikel ist.