Benutzer:Jah/Hauptautoren

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

In MediaWiki gibt es bislang keine Möglichkeit, die Hauptautoren eines Artikels und die Autoren einzelner Textabschnitte zu bestimmen, es sei denn, man durchwühlt die komplette Versionsgeschichte und merkt sich die einzelnen Beiträge. Diese Prozedur kann man jedoch auch automatisieren. Dazu habe ich ein Perl-Script geschrieben, das auf dieser Seite beschrieben wird.

Installation[Bearbeiten | Quelltext bearbeiten]

hier kann man das Programm herunterladen. Bitte speichern unter dem Dateinamen hauptautoren. Es benötigt noch ein Hilfsprogramm, das die Versionsgeschichte einer Seite herunterladen kann. Dieses speichert man unter dem Namen loadhistory.

Bedienung[Bearbeiten | Quelltext bearbeiten]

Manueller Aufruf[Bearbeiten | Quelltext bearbeiten]

Es wird davon ausgegangen, dass sich beide Skripte im aktuellen Verzeichnis befinden. (Man kann die Pfade in den Skripten aber relativ einfach anpassen.) Die einfachste Form der Benutzung ist dann:

./hauptautoren Artikelname

Es wird ein Unterverzeichnis histcache angelegt, in dem die Versionen gespeichert werden. Man sollte darauf achten, dass genügend Speicher im Dateisystem frei ist. Die Versionen werden zwar komprimiert, dennoch kommen schnell viele MB zusammen.

Nachdem die Versionsgeschichte geladen ist, wird sie vom hauptautoren-Skript analysiert. Die Textstellen werden gefärbt und dadurch ihren Autoren zugeordnet. Dieser gefärbe Wikiquelltext wird zum Wikipedia-Server gesendet und zur Vorschau gebracht. Das Ergebnis wird noch etwas verarbeitet. Hauptsächlich wird das Bearbeiten-Fenster entfernt und eine Kurzstatistik mit den Hauptautoren über dem Artikel und eine detailliertere Statistik unter dem Artikel hinzugefügt. Die Seite wird gespeichert als Artikelname.html

Bilder, Tabellen und Weblinks, die möglicherweise auf der Seite vorhanden sind, werden z.Z. nicht eingefärbt. Setzt man die Variable $mkImg in hauptautoren auf 1, wird auch ein Bild der Versionsgeschichte erzeugt (horizontale Koordinate proportional zur Versionsnummer). Es wird als hf.png gespeichert und in die html-Seite eingebunden.

Man kann in der Kommandozeile auch ein anderes Wiki angeben:

./hauptautoren -w anderes.wiki.org Artikelname

Wenn man das Programm ein zweites Mal für die selbe Seite aufruft, wird die Versionsgeschichte nicht noch einmal komplett geladen, sondern es wird nur überprüft, ob es neuere Versionen gibt, die dann ggf. heruntergeladen werden. Die Analyse der Versionsgeschichte wird nicht komplett wiederholt, sondern der letzte Zwischenstand wird weiterverwendet, so dass die HTML-Seite relativ schnell erzeugt wird.

Aufruf als CGI-Programm[Bearbeiten | Quelltext bearbeiten]

Funktioniert momentan nicht.


Beispiele[Bearbeiten | Quelltext bearbeiten]

Beispielseiten (mit einer älteren Version erstellt, ohne die Kurzstatistik in der Kopfzeile): Benutzer:Jah/Hauptautoren/Lorentz-Transformation und Benutzer:Jah/Hauptautoren/Stern (mit Bild der Versionsgeschichte)

Funktionsweise[Bearbeiten | Quelltext bearbeiten]

Grob gesagt: Der Text wird in überlappende 5-Wort-Sequenzen aufgeteilt, und dann wird bestimmt, in welcher Version die jeweilige Sequenz das erste mal auftrat und dem entsprechenden Autor zugeordnet.

Genauer (und für Nicht-Programmierer evtl. unverständlich): Die Sequenzen werden in Hashes gespeichert. Dem Schlüssel (fünf durch Leerzeichen getrennte Wörter) wird ein Array von 5 Versionsnummern als Wert zugeordnet. Die höchste dieser Versionsnummern zeigt an, in welcher Version die Sequenz das erste mal auftrat. Wenn die anderen Nummern kleiner sind, bedeutet das, dass das jeweilige Wort auch Bestandteil einer anderen Sequenz ist (oder einmal war), die schon zu einem früheren Zeitpunkt auftrat.

Der Algorithmus ist am einfachsten anhand eines Beispiels erklärt. Angenommen Benutzer A legt einen Artikel an und Benutzer B verändert ihn in einer zweiten Bearbeitung:

0. Version (Benutzer A): Wikipedia ist eine freie Enzyklopädie.
1. Version (Benutzer B): Die Wikipedia ist eine freie Enzyklopädie.

0. Version bearbeiten

@woerter = ("Wikipedia", "ist", "eine", "freie", "Enzyklopädie")
Array @id mit der aktuellen Versionsnummer füllen: @id = (0, 0, 0, 0, 0)
Es ist noch keine Sequenz definiert, also bleibt @id so.
Da @woerter aus fünf Wörtern besteht, gibt es genau eine Sequenz: $id{"Wikipedia ist eine freie Enzyklopädie"} = [0, 0, 0, 0 ,0]

1. Version bearbeiten

@woerter = ("Die", "Wikipedia", "ist", "eine", "freie", "Enzyklopädie")
Array @id mit der aktuellen Versionsnummer füllen: @id = (1, 1, 1, 1, 1, 1)
Eine Sequenz ist bereits definiert und wird an Position 1 bis 5 erkannt; @id wird geändert: @id = (1, 0, 0, 0, 0, 0)
Zur alten Sequenz $id{"Wikipedia ist eine freie Enzyklopädie"} = [0, 0, 0, 0 ,0] kommt eine neue hinzu: $id{"Die Wikipedia ist eine freie"} = [1, 0, 0, 0 ,0]

Zum Schluss wird @id ausgewertet: einmal 1: Benutzer B hat ein Wort beigetragen; 5 mal 0: Benutzer A hat 5 Wörter beigetragen.

Der Hash %id kann von Version zu Version nur wachsen. Deshalb könnte man ihn bei Integration eines solchen Algorithmus' in die MediaWiki-Software nach jeder Bearbeitung eines Artikels aktualisieren und zwischenspeichern, so dass man nicht bei jeder Auswertung die komplette Versionsgeschichte analysieren müsste.

Bedeutung der Hauptautoren in der GFDL[Bearbeiten | Quelltext bearbeiten]

Die GFDL verlangt bei der Weitergabe eines modifizierten, unter der GFDL veröffentlichten Textes, dass auf der Titelseite fünf Hauptautoren der Vorversion angegeben werden (oder weniger, falls die Vorversion weniger Autoren hatte). Gleiches gilt für die Verbindung mehrerer unter der GFDL stehender Texte. Um die Hauptautoren leichter bestimmen zu können, mag das auf dieser Seite vorgestellte Programm nützlich sein. Die GFDL schreibt nicht vor, wie sie zu ermitteln sind. Es ist allerdings ratsam, sich nicht alleine auf eine automatisch generierte Autorenliste zu verlassen.

Mit der Angabe der Hauptautoren der Vorversion(en) sind die Bedingungen der GFDL allerdings noch nicht erfüllt. Insbesondere müssen die kompletten Versionsgeschichten übernommen bzw. bei mehr als einer Vorversion vereinigt/verbunden werden. (In der GFDL steht: combine.)

Siehe auch[Bearbeiten | Quelltext bearbeiten]