1 Visualisierung der thematischen Verwandtschaft zwischen allen Autoren des Wikis Wer ist mit wem thematisch verwand? We
389 68 304KB
1 Visualisierung der thematischen Verwandtschaft zwischen allen Autoren des Wikis Wer ist mit wem thematisch verwand? Welche User haben also auf der Ebene des gesamten Wikis mit welchen anderen Usern zusammen Artikel verfasst? Um diese Frage zu beantworten stellt meine Mediawiki Extension mit Hilfe von GraphViz1 die Wiki-global auftretenden Relationen dar. Die Ausgabe eignet sich u.A. für die Startseite, eine einzelne (Spezial-)Seite oder eine eigene TAB-Seite. Letzteres hätte den Vorteil, dass die Information stets in Aktionsnähe des Wiki-Benutzers wäre. GraphViz bietet leider nur eine statische Ausgabe des Graphen, allerdings habe ich mich dennoch für GraphViz entschieden, weil es das einzige ’Framework’ ist , welches möglichst viele der folgenden Anforderungen an den Graphen erfüllt: • Es muss eine Darstellung eines zusammenhangslosen Graphen möglich sein. Nicht jeder Autor steht mit einem anderen Autor in Relation. Es können einzelne Autoren oder Autorengruppen von anderen Gruppen oder Autoren unabhängig sein. • Es soll eine Ausdrucksmöglichkeit für die Nähe der Knoten existieren. Thematisch näher verwandte Autoren sollen vom Betrachter identifiziert werden können. • Es soll eine Ausdruckmöglichkeit für die Anzahl der gesamten Editierungen eines Autors im Wiki geben. Damit kann der Betrachter Autoren, die nur selten Beiträge schreiben erkennen. • Platzsparende Darstellung des Graphen. • Die Abbildung soll die Übersichtlichkeit fördern und nicht verschlechtern. Überschneidungen der Kanten sollen minimiert werden können, da solche nicht der Übersichtlichkeit beitragen. • Skalierbarkeit des Graphen. Ein Graph mit vielen Knoten und Kanten darf nicht unübersichtlich werden. GraphViz erfüllt alle Anforderungen.
T he king
Vister
Inkognito
ViktorDite
Dummy
MiniMind
DummyUser MoreMind
Abbildung 1: Beispielhafte GraphViz-Darstellung von Relationen
1
http://www.graphviz.org/
1
1.1 Generierung der Eingabedaten Die Eingabedaten für GraphViz1 werden aus der Tabelle ’revision’ in der Datenbank ausgelesen. Die ’revision’ Tabelle enthält die Änderungen aller Artikel im Wiki. Dazu gehört auch das Anlegen einer neuen Seite. Jeder neu angelegten oder geänderten Seite sind Benutzer mit ihrer ID und ihrem Namen zugeordnet. Die Tabelle enthält zudem die Länge der Änderung, den Kommentar, Zeitstempel und die Information ob die Änderung ggf. nur geringfügig war. Es ist zudem möglich, durch einen Parameter festzulegen, ab welcher Anzahl an geänderten Wörtern eine Änderung unter die Klasse der thematischen Nähe fällt – ab wann also eine Änderung den Counter erhöht. Die SQL-Query liest zu jeder (Artikel-)Seite die Benutzer, die darin editiert haben und deren ID aus. Da die thematische Verwandschaft sich durch die Anzahl der Editierungen an verschiedenen und nicht an gleichen Artikeln definiert, werden die Daten »distinct« ausgelesen. »distinct« liest nur die unterschiedlichen Elemente aus und verringert dadurch auch die Anzahl der Treffer an Artikeln mit nur einem einzigen Autor. Ferner wird abgefragt ob es sich um eine geringfügige Änderung (minor edit) handelt oder nicht. Geringfügige Änderungen werden nicht betrachtet, da sie in den meisten Fällen nur eine Formatierung korrigieren und somit keine Relation des Editors mit dem Autor darstellen. Aus dem Ergebnis der Query wird ein mehrdimensionales Array erzeugt, so dass zu jeder Seite (Hauptindex des Arrays) jeweils ein Unterarray mit allen Autoren zugeordnet wird, die diese Seite editiert haben (Abb. 2). Es werden also pro Seite die User, die gemeinsam daran gearbeitet haben, in n-Tupeln gesammelt. GraphViz würde zur Gestaltung des Graphes an sich, durchaus mit einer sich leicht aus dem Array erzeugbaren Adjazenzliste auskommen. Allerdings bietet die Grammatik keine Möglichkeit zur automatischen Zählung mehrfach vorkommender Relationen. Um die Relationen jedoch korrekt auszuwerten, müssen nun alle n-Tupel auf 2er Tupel (’Autorenpärchen’) a