\chapter{Anforderungen}
\label{ch:anforderungen}

Im Folgenden werden die Anforderungen aufgeführt, die an \nom{WikiWord}, das System zur automatischen Extraktion eines multilingualen Thesaurus aus der Wikipedia, gestellt werden.

\section{Aufgaben}
\label{sec:aufgaben}

WikiWord soll in der Lage sein, auf Basis des Wikipedia-Korpus die folgenden Informationen effizient zu liefern:

\begin{enumerate}
\item
Eine Liste der Konzepte (Bedeutungen) die zu einem Term (Bezeichnung, Wort, Phrase) einer bestimmten Sprache gehören, mit Ranking nach Häufigkeit/Wahrscheinlichkeit. \index{Bedeutung} \index{Ranking} \index{Konzept}
\item
Eine Liste aller Terme (Bezeichnungen, Wörter, Phrasen) für ein Konzept in einer gegebenen Sprache, mit Ranking nach Häufigkeit/Wahrscheinlichkeit.
\index{Bezeichnung} \index{Ranking} \index{Term}
\item
Übersetzungen eines Terms aus einer Sprache in eine andere, gegebenenfalls getrennt für unterschiedliche Bedeutungen. Das ergibt sich aus einer Kombination der beiden vorausgegangenen Punkte: a) Finden aller möglichen Bedeutungen eines Terms in einer Sprache, b) Anzeige aller Bedeutungen mit jeweils allen möglichen Bezeichnungen in einer anderen Sprache.
\item
Über- \bzw untergeordnete Konzepte zu einem gegebenen Konzept, wobei diese Subsumtionsrelation \nom{azyklisch} sein soll.
\item
Eine grobe, sprachunabhängige Klassifikation von Konzepten, also Zuordnung eines von einigen wenigen \emph{fest vorgegebenen} Typen (\zB Person, Ort, Zeit, etc).
\item
Die \nom{semantische Verwandtheit}\index{semantische Verwandtheit} (\lingo{Semantic Relatedness, SR}) zwischen zwei gegebenen Konzepten.
\item
Eine Zuweisung einer Bedeutung (Konzept) zu jeweils einem Term in einer Menge von Termen (Disambiguierung\index{Disambiguierung} im Kontext).
\item 
Eine Glosse (Definitionssatz) zu (möglichst) jedem Konzept. 
\end{enumerate}

\section{Rahmenbedingungen}
\begin{enumerate}
\item Als Eingabe soll ausschließlich der Wiki-Text (\rr{ch:wikitext}) von den Seiten der Wikipedia dienen, wie er in den Wikipedia XML-Dumps enthalten ist \qq{MW:XML}{WM:DOWNLOAD}. Zur Verarbeitung soll nur ein Minimum von sprach- und Wikipedia-spezifischem Wissen benötigt werden.

\item Die Extraktion der gewünschten Daten sowie ihre Verarbeitung und Überführung in die für die Nutzung gewünschte Form soll hinreichend effizient sein: das Verfahren muss auf eine Datenbasis von mehreren Millionen Dateien anwendbar sein und in annehmbarer Zeit terminieren. Anzustreben ist dabei ein in Bezug auf die Anzahl der im Korpus enthaltenen Links subquadratischer Zeit- und Platzaufwand.

\item Die Daten sollen zur weiteren Nutzung in einem relationalen Datenbanksystem abgelegt werden, in einer Form, die eine effiziente Abfrage bezüglich der intendierten Datennutzung erlaubt.

\item Die erzeugten Daten sollen in bestehende Thesaurus- oder Wörterbuchsysteme integrierbar sein.

\item Das Softwaresystem soll leicht anzupassen und zu erweitern sein. Insbesondere soll die Software ohne Schwierigkeiten an Änderungen der Konventionen einzelner Wikipedias, an der Wiki-Text-Syntax oder an dem für die Dumps verwendeten XML Format angepasst werden können.

\item Das Softwaresystem soll auf verschiedenen Betriebssystemen lauffähig \bzw leicht portierbar sein.
\end{enumerate}


\chapter{Plattform}
\label{sec:platform}

WikiWord, das System zur Extraktion eines multilingualen Thesaurus, soll leistungsfähig, flexibel und portierbar sein. In Hinblick darauf sind vor allem zwei Dinge als Basis für die Implementation auszuwählen: Die Programmiersprache (und Laufzeitumgebung) sowie die Persistenzplattform zur Datenspeicherung. In Hinblick auf die Weiterverwendbarkeit der Daten muss eine für die Weiternutzung durch Dritte geeignete externe Darstellung gefunden werden.

\section{Laufzeitumgebung: Java}
Als Programmiersprache und Laufzeitumgebung wurde \textbf{Java} gewählt, unter anderem aus folgenden Gründen:
\begin{itemize}
 \item Java verbindet gute Performanz mit einem hohen Grad an Abstraktion und Modularität.
 \item Java bietet eine große Auswahl frei verfügbarer Bibliotheken.
 \item Java ist im akademischen Umfeld weit verbreitet wegen seiner guten Lesbarkeit und wohldefinierten Semantik.
\end{itemize}

\section{Datenbank: MySQL}
Als internes Speichersystem wurde ein relationales Datenbanksystem gewählt, nämlich \textbf{MySQL} \q{MYSQL}:
\begin{itemize}
 \item Die zu speichernden Daten sind relationaler Natur.
 \item Ein relationales Datenbanksystem bietet effizienten Zugriff auch bei sehr großen Datenmengen.
 \item Die Nutzung eines Datenbanksystems vermeidet zusätzlichen Programmieraufwand für die Persistenzlogik.
 \item MySQL ist freie Software und läuft auf allen verbreiteten Betriebssystemen.
 \item MySQL ist für den Umgang mit sehr großen Datenmengen wohl erprobt und gilt als verhältnismäßig performant.
\end{itemize}

Die Anbindung von MySQL an die Java-Anwendung erfolgt über Javas Standard Datenbankschnittstelle, JDBC \q{JDBC}, und wird durch eine Datenzugriffsschicht (DAO) gekapselt (siehe \rr{sec:DAO}).

\section{Austauschformat: SKOS}
Als Datenformat für den Austausch und die Weiterverwendung des erstellten Thesaurus wurde SKOS \qq{W3C:SKOS}{Miles2005sko} gewählt, insbesondere aus den folgenden Gründen \qqq{GregorowiczKramer2006}{assem2006cts}{skosth2005}:
\begin{itemize}
 \item SKOS ist ein vorgeschlagener W3C-Standard und baut auf den wohlbekannten Standards XML, RDF und OWL auf.
 \item SKOS wurde für die Repräsentation von Thesauri und Wissensnetzen entworfen und eignet sich daher sehr gut für die vorliegenden Daten.
 \item SKOS ist (im Gegensatz zu dem ISO-Modellen \q{ISO:2788}) konzeptorientiert und passt daher gut zu dem verwendeten Datenmodell.
 \item SKOS wird von einer Vielzahl von Systemen zur Sprach- und Wissensverarbeitung unterstützt.
\end{itemize}

