Wikifunctions:Status-Updates/2024-10-02
◀ | ![]() ![]() |
▶ |
Fokusthema: Essen

Wie wir vor zwei Wochen besprochen haben, führen wir zwei Fokusthemen ein. Ein Fokusthema betrifft Modellartikel und eines manuell geschriebene Artikel. Wir freuen uns auf deine Beiträge zu einem Fokusthema für Modellartikel, aber dieses Mal möchten wir unser ausgewähltes Fokusthema für manuell geschriebene Artikel besprechen: Essen.
Warum Essen? Artikel über Essen und Trinken in den verschiedenen Sprachversionen der Wikipedia weisen eine enorme Vielfalt an Darstellungen auf. Einige Artikel behandeln Kultur, andere Geschichte; einige Artikel behandeln Ernährung, andere die Zubereitung.

Manche haben Infoboxen, viele nicht. Man könnte meinen, dass man bei Lebensmitteln problemlos Infoboxen mit Nährwerten einfügen kann, aber viele Lebensmittel werden auf so unterschiedliche Weise zubereitet – und sind in so vielen verschiedenen Varianten erhältlich –, dass es schwierig ist, strukturierte Daten über das Lebensmittel, wie etwa Nährwerte, auszudrücken. Kurz gesagt, es ist im Grunde unmöglich, eine Vorlage für Artikel über Essen und Trinken zu erstellen.

Essen und Trinken haben außerdem die interessante Eigenschaft, dass sie, vielleicht mehr als jeder andere Themenbereich, kulturelle Unterschiede in den verschiedenen Artikeln der Sprachversionen von Wikipedia aufweisen. Die wenigen Artikel, die wir überprüft und zwischen den Sprachen verglichen haben, hatten teilweise völlig unterschiedliche Inhalte. Und obwohl es viele bekannte (und wahrscheinlich noch mehr weniger bekannte) kontroverse Fragen zu Lebensmitteln gibt, sind die Debatten in diesem Bereich im Allgemeinen weniger hitzig als die zu Themen wie Politik, Geographie, Geschichte oder Religion.
Wikidata hat Datenobjekte zu etwa 31.000 Lebensmitteln und Getränken, von denen 26.000 Seitenlinks haben. Es gibt elf Themen mit mehr als 200 Seitenlinks, was einen Hinweis auf ihre globale Bedeutung gibt: Kaffee (243), Milch (242), Tee (240), Brot (239), Nahrung (228), Bier (221), Apfel (220), Wein (216), Reis (213), Banane (209) und Honig (203) (Abfrage).
Das Diagramm zeigt, wie viele Lebensmittel wie viele Seitenlinks haben (beachte die logarithmische Skala auf der Y-Achse).

326 Sprachversionen der Wikipedia enthalten Artikel über Lebensmittel und Getränke (Abfrage), was die universelle Bedeutung von Nahrungsmitteln zeigt. 114 Sprachen haben einen Artikel über ein Gericht oder Getränk, den es in keiner anderen Sprachversion gibt, was zeigt, wie viel Wissen über den Globus verstreut und nicht über Sprachgrenzen hinweg verfügbar ist. Dazu gehören zwei unserer Fokussprachen, Bengalisch mit sechs Lebensmitteln und Malayalam mit acht (Abfrage).
Du könntest annehmen, dass das Thema Essen in der englischsprachigen Wikipedia sehr umfassend behandelt wird. Allerdings sind 12.500 Lebensmittel und Getränke, zu denen es Artikel in der Wikipedia gibt, nicht mit einem Artikel in der englischsprachigen Wikipedia vertreten (Abfrage). Das heißt, fast die Hälfte der Lebensmittel, zu denen es einen Artikel in der Wikipedia gibt, sind nicht auf Englisch vertreten. Alle unsere fünf Fokussprachen haben Artikel über Lebensmittel, die in der englischsprachigen Wikipedia nicht beschrieben werden (Abfrage). Und 225 Sprachversionen haben Artikel über Lebensmittel und Getränke, die in der englischsprachigen Wikipedia nicht behandelt werden (Abfrage).
Eine Aspekt ist, dass einige dieser Lücken und fehlenden Artikel auf unterschiedliche Weisen zurückzuführen sein könnten, wie Lebensmittel und Getränke in den Artikeln verschiedener Sprachen aufgeteilt werden: In einer Sprache könnten wir sechs Artikel über sechs verschiedene Arten eines regionalen Gerichts haben, das in einer anderen Sprache von einem einzigen Artikel abgedeckt wird. Aber das sind tatsächlich einige der Unterschiede, die wir mit der Abstrakten Wikipedia im Laufe der Zeit erforschen und herausfinden möchten.
Ich hoffe, du hast eine Kostprobe von der großen Vielfalt der Darstellung von Lebensmitteln in der Wikipedia bekommen und davon, wie viel Wissen wir möglicherweise freisetzen können, wenn wir allen über Sprachbarrieren hinweg die Möglichkeit geben, zu dieser einzigartigen und erstaunlichen Kieselsteinsuppe beizutragen, die Wikipedia ist.
Freiwilligentreffen am 7. Oktober
Nächste Woche, am Montag, 7. Oktober 2024, um 19:30 MESZ, findet unser monatliches Freiwilligentreffen statt. Sofern es nicht viele Fragen gibt, werden wir unserer üblichen Agenda folgen, Neuigkeiten zu den bevorstehenden Plänen und letzten Aktivitäten geben, viel Zeit und Raum für deine Fragen haben und gemeinsam eine Funktion erstellen. Wir freuen uns darauf, dich am Montag zu sehen!
Funktion der Woche: Produkt einer Liste natürlicher Zahlen
Letzte Woche haben wir über das Multiplizieren von Zahlen miteinander gesprochen und darüber, wie Wikifunctions Large Language Models bei dieser speziellen Aufgabe mühelos schlägt. Diese Woche folgen wir dieser Richtung, indem wir eine von der Community vorgeschlagene Funktion auswählen: Die Berechnung von Z13558.
Ein Produkt ist das Ergebnis einer Multiplikation. Das Produkt von 2 und 3 ist 6, d. h. 2 multipliziert mit 3 ist 6. Die Funktion, die wir uns diese Woche ansehen, kann mit einer beliebigen Anzahl von Zahlen umgehen. Wie macht sie das? Wir können in Wikifunctions keine Argumente hinzufügen und entfernen!
Der Trick besteht darin, dass sie tatsächlich nicht eine beliebige Anzahl von Argumenten annimmt, sondern ein einziges Argument: eine Liste. Genauer gesagt eine typisierte Liste, eine Liste natürlicher Zahlen. Das bedeutet, dass der Abschnitt Probiere diese Funktion aus auf der Funktionsseite etwas seltsam aussieht: Anstatt dir eines oder mehrere Felder zur Eingabe eines Werts anzuzeigen, wird nur der Name des Arguments (Liste natürlicher Zahlen) und eine große +-Schaltfläche angezeigt.
Nun musst du auf die großen +-Schaltfläche klicken. Sobald du das getan hast, hast du die Möglichkeit, eine Zahl einzugeben. Wenn du eine weitere Zahl hinzufügen möchtest, klickst du einfach erneut auf die +-Schaltfläche. Wenn du eine Nummer aus der Liste entfernen möchtest, kannst du auf die drei Punkte neben dem Text-Objekt klicken, gefolgt von der Zahl, und dann die Option “Objekt löschen” auswählen. Manche Leute nennen die drei Punkte übrigens das Fleischbällchen-Menüsymbol.
Probiere ein wenig mit dieser Funktion herum, um weitere Elemente zu einer Liste hinzuzufügen und sie zu entfernen. Das ist eine gute Fähigkeit, da alle Listen in Wikifunctions mit diesem Ablauf arbeiten.
Diese Funktion hat fünf Tests und acht Implementierungen. Die Tests decken eine Reihe interessanter Fälle wirklich gut ab:
- Das Produkt einer einzelnen Zahl wie beispielsweise 9 ist die Zahl selbst, d. h. 9.
- Das Produkt einer leeren Liste, d. h. einer Liste ohne Zahlen, ist 1. Du fragst dich vielleicht, warum es 1 ist und nicht etwa 0? Der Grund, warum Mathematiker das Produkt der leeren Liste als 1 definieren, ist, dass 1 das Identitätselement der Multiplikationsoperation ist. Die Summe einer leeren Liste von Zahlen ist übrigens nicht 1, sondern 0 – auch hier, weil dies das Identitätselement der Additionsoperation ist. Das ist alles ein bisschen verwirrend. Aber das Wichtige hier ist: Die Tests sagen dir, was du bei den Randfällen erwarten kannst, und sind eine wirklich gute Form der Dokumentation.
- Das Produkt zweier Zahlen ist das Ergebnis der Multiplikation der beiden Zahlen, d. h. 11×9 ist 99.
- Der nächste Test prüft das Produkt einer etwas längeren Liste von Zahlen, fünf Zahlen: 2, 3, 5, 7 und 11, und ergibt 2310.
- Und der letzte Test, den wir derzeit haben, prüft das Produkt aller Primzahlen unter 30: Das sind zehn Zahlen, 2, 3, 5, 7, 11, 13, 17, 19, 23 und 29. Das Ergebnis ist 6.469.693.230. Wir können sehen, dass die ersten fünf Zahlen dieselben fünf Zahlen wie im vorherigen Test sind.
Wir haben acht Implementierungen für diese Funktion – ziemlich viele! Ich fand es tatsächlich sehr lehrreich und interessant, die verschiedenen Implementierungen sowohl innerhalb derselben Sprache als auch sprachübergreifend zu vergleichen.
- Die erste Implementierung in Python beginnt damit, dass eine Variable auf 1 gesetzt wird, dann wird jeder Wert im Argument durchgegangen und dann die Variable so aktualisiert, dass sie selbst mit dem Wert aus dem Argument multipliziert wird, und schließlich wird das Ergebnis zurückgegeben
- Die erste Implementierung in JavaScript macht genau dasselbe, weist aber im Vergleich zur obigen Python-Implementierung einige interessante Unterschiede in der Syntax auf
- Die erste Komposition wendet die Reduzierungsfunktion auf die Multiplikationsfunktion und einen Startwert von 1 an. Die Reduzierungsfunktion ist die zweite Hälfte des berühmten MapReduce-Programmiermusters, dem wir eine zukünftige Funktion der Woche widmen werden.
- Die zweite Komposition ist rekursiv, d. h. sie ruft sich unter bestimmten Bedingungen selbst auf. Wenn die Argumentliste ein Element hat, gibt sie dieses Element zurück. Wenn sie keines hat, gibt sie 1 zurück. Andernfalls multipliziert sie die erste Zahl der Liste mit dem Produkt des Restes der Liste - und berechnet das Produkt des Restes der Liste, indem sie die Produktfunktion selbst erneut aufruft. Da die Argumentliste mit jedem Aufruf kürzer wird, wissen wir, dass die Rekursion an einem bestimmten Punkt enden wird.
- Die dritte Komposition ist eine Variation der ersten Komposition oben: Sie ruft ebenfalls die Reduzierungsfunktion auf, verwendet aber nicht 1, sondern die erste Zahl in der Liste als Startwert und reduziert dann den Rest der Liste durch Multiplikation. Dazu muss sie zunächst prüfen, ob die Liste leer ist, und gibt in diesem Fall direkt 1 zurück.
- Die vierte (und vorerst letzte) Komposition prüft zuerst, ob die Liste leer ist, und gibt in diesem Fall 1 zurück und wendet andernfalls die Funktion rechts falten mit Multiplikation auf die Liste an. Falten und reduzieren sind zwei sehr ähnliche Funktionen, die manchmal sogar synonym verwendet werden. In Wikifunctions ist die Funktion links falten dasselbe wie die Reduzierungsfunktion, mit dem Unterschied, dass die Reduzierungsfunktion einen Startwert als Argument erhält, während links falten mit dem ersten Wert der Argumentliste beginnt – weshalb sie nicht mit einer leeren Liste umgehen kann und dies im Voraus behandelt werden muss. Und links falten ist wie rechts falten, aber mit umgedrehten Listen.
- Die zweite Implementierung in Python verwendet Pythons Reduzierungsfunktion und Multiplikationsoperator, im Grunde dasselbe wie die erste Komposition, aber in Python
- Die zweite Implementierung in JavaScript verwendet JavaScripts Array-Reduzierungsmethode, aber da die Sprache keine eingebaute Multiplikationsfunktion hat, wird eine Lambda-Funktion verwendet, um die Multiplikation auszudrücken.
Wir laden dich ein, mit der Funktion herumzuexperimentieren, insbesondere mit dem Ablauf für typisierte Listen. Und danke an 99of9 für den Vorschlag der Funktion als Funktion der Woche! Wenn du eigene Vorschläge machen möchtest, kannst du gerne selbst eine Funktion vorschlagen.