From 89c438ee52c3ac87219cf288c92e4264dffbc955 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 29 Dec 2013 19:06:20 +0100 Subject: [PATCH] DYCOS-Algorithmus genauer beschrieben --- documents/DYCOS/.gitignore | 2 + documents/DYCOS/DYCOS-Algorithmus.tex | 63 ++++++++++++++++------ documents/DYCOS/Einleitung.tex | 15 +++--- documents/DYCOS/Experimentelle-Analyse.tex | 13 ++++- documents/DYCOS/abstract.tex | 12 ++--- documents/DYCOS/mystyle.sty | 5 ++ 6 files changed, 80 insertions(+), 30 deletions(-) create mode 100644 documents/DYCOS/.gitignore diff --git a/documents/DYCOS/.gitignore b/documents/DYCOS/.gitignore new file mode 100644 index 0000000..9c55812 --- /dev/null +++ b/documents/DYCOS/.gitignore @@ -0,0 +1,2 @@ +data/cora +data/dblp diff --git a/documents/DYCOS/DYCOS-Algorithmus.tex b/documents/DYCOS/DYCOS-Algorithmus.tex index e3fb0de..f3a5ff2 100644 --- a/documents/DYCOS/DYCOS-Algorithmus.tex +++ b/documents/DYCOS/DYCOS-Algorithmus.tex @@ -4,14 +4,20 @@ algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt wurde. Er klassifiziert Knoten, indem mehrfach Random Walks startend bei dem zu klassifizierenden Knoten gemacht werden und die Labels -der besuchten Knoten gezählt werden. Der DYCOS-Algorithmus nimmt -jedoch nicht einfach den Graphen für dieses Verfahren, sondern -eine Erweiterung. +der besuchten Knoten gezählt werden. Das Label, das am häufigsten +vorgekommen ist, wird zur Klassifizierung verwendet. +Der DYCOS-Algorithmus nimmt jedoch nicht einfach den Graphen für +dieses Verfahren, sondern erweitert ihn mit Hilfe der zur Verfügung +stehenden Texte. Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das -charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann, wird in -Abschnitt~\ref{sec:vokabularbestimmung} erläutert. Dann wird für -jedes Wort im Vokabular ein Wortknoten zum Graphen hinzugefügt. +charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann +und warum nicht einfach jedes Wort in das Vokabular aufgenommen wird, +wird in Abschnitt~\ref{sec:vokabularbestimmung} erläutert.\\ +Nach der Bestimmung des Vokabulars wird für +jedes Wort im Vokabular ein Wortknoten zum Graphen hinzugefügt. Alle +Knoten, die der Graph zuvor hatte, werden nun \enquote{Strukturknoten} +genannt. Ein Strukturknoten $v$ wird genau dann mit einem Wortknoten $w \in W_t$ verbunden, wenn $w$ in einem Text von $v$ vorkommt. @@ -22,18 +28,19 @@ verbunden, wenn $w$ in einem Text von $v$ vorkommt. \label{fig:erweiterter-graph} \end{figure} -Der DYCOS-Algorithmus betrachtet die Texte, die zu einem Knoten +Der DYCOS-Algorithmus betrachtet die Texte, die einem Knoten zugeornet sind, als eine Multimenge von Wörtern. Das heißt, zum einen wird nicht auf die Reihenfolge der Wörter geachtet, zum anderen wird bei Texten eines Knotens nicht zwischen verschiedenen Texten unterschieden. -Jedoch wird die Anzahl der vorkommen jedes Wortes berücksichtigt. +Jedoch wird die Anzahl der Vorkommen jedes Wortes berücksichtigt. \subsection{Datenstrukturen} Zusätzlich zu dem gerichteten Graphen $G_t = (V_t, E_t, V_{L,t})$ verwaltet der DYCOS-Algorithmus zwei weitere Datenstrukturen: \begin{itemize} - \item Für jeden Knoten $v \in V_t$ werden die vorkommenden Wörter + \item Für jeden Knoten $v \in V_t$ werden die vorkommenden Wörter, + die auch im Vokabular $W_t$ sind, und deren Anzahl gespeichert. Das könnte z.~B. über ein assoziatives Array geschehen. Wörter, die nicht in Texten von $v$ vorkommen, sind nicht im Array. Für @@ -57,7 +64,7 @@ des strukturellen $l$-Sprungs benötigt: \end{definition} Der strukturelle $l$-Sprung ist also ein Random Walk der Länge $l$ -im Graph $G_t$. Im Gegensatz dazu benötigt der inhaltliche $l$-Multisprung +im Graph $G_t$. Im Gegensatz dazu benötigt der inhaltliche $l$-Mehrfachsprung tatsächlich die Grapherweiterung: \begin{definition} @@ -65,7 +72,7 @@ tatsächlich die Grapherweiterung: um die Wortknoten $W_{t}$ erweiterte Graph. Dann heißt ein Random Walk der Länge $l$ in diesem Graphen - ein \textbf{inhaltlicher $l$-Multisprung}, wenn für den Random Walk + ein \textbf{inhaltlicher $l$-Mehrfachsprung}, wenn für den Random Walk in jedem der $l$ Schritte, startend von einem Knoten $v \in V_t$ eine Kante zu einem Wortknoten und von dem Wortknoten wieder zu einem Strukturknoten genommen wird. @@ -79,15 +86,37 @@ tatsächlich die Grapherweiterung: $p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs) \Ensure Klassifikation von $\N_t \setminus \T_t$\\ - \ForAll{Knoten $v$ in $\N_t \setminus \T_t$} + \Procedure{SturkturellerSprung}{Dictionary $d$, Startknoten $v$, Länge $l$} \For{$i$ von $1$ bis $l$} - \State $sprungTyp \gets \Call{random}{0.0, 1.0}$ - \If{$sprungTyp \leq p_s$} - \State Strukturellen $l$-Sprung ausführen + \State $v \gets v.\Call{Next}{}$ + \ForAll{Label $w$ in v.\Call{GetLabels}{}} + \State $d[w] = d[w] + 1$ + \EndFor + \EndFor + \EndProcedure + \\ + \Procedure{InhaltlicherMehrfachsprung}{Dictionary $d$, Startknoten $v$, Länge $l$} + \For{$i$ von $1$ bis $l$} + \State $v \gets v.\Call{Next}{}$ \Comment{TODO: Hier muss ein mehrfachsprung beschrieben werden!} + \ForAll{Label $w$ in v.\Call{GetLabels}{}} + \State $d[w] = d[w] + 1$ + \EndFor + \EndFor + \EndProcedure + \\ + + \ForAll{Knoten $v$ in $\N_t \setminus \T_t$} + \State $d \gets $ Dictionary, das für neue Einträge 0 annimmt + \For{$i$ von $1$ bis $r$} + \State $sprungTyp \gets \Call{random}{0, 1}$ + \If{$sprungTyp \leq p_S$} + \State \Call{SturkturellerSprung}{$v$, $l$} \Else - \State Inhaltlichen $l$-Sprung ausführen + \State \Call{InhaltlicherMehrfachsprung}{$v$, $l$} \EndIf \EndFor + \State $label \gets \Call{max}{d}$ + \State $v.\Call{SetLabel}{label}$ \EndFor \State \Return Labels für $\N_t \setminus \T_t$ \end{algorithmic} @@ -100,7 +129,7 @@ Es ist nicht sinnvoll, direkt von einem strukturellem Knoten $v \in \N_t$ zu einem mit $v$ verbundenen Wortknoten $w$ zu springen und von diesem wieder zu einem verbundenem strutkurellem Knoten $v' \in \N_t$. Würde man dies machen, wäre zu befürchten, dass -aufgrund von Polysemen die Qualität der Klassifizierung verringert +aufgrund von Homonymen die Qualität der Klassifizierung verringert wird. So hat \enquote{Brücke} im Deutschen viele Bedeutungen. Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der objektorientierten Programmierung oder ein Teil des Gehirns. diff --git a/documents/DYCOS/Einleitung.tex b/documents/DYCOS/Einleitung.tex index e2c9fe9..fff87a4 100644 --- a/documents/DYCOS/Einleitung.tex +++ b/documents/DYCOS/Einleitung.tex @@ -9,8 +9,8 @@ Häufig sind Labels nur teilweise vorhanden und es ist wünschenswert die fehlenden Labels zu ergänzen. \subsection{Problemstellung} -Wir haben einen Graphen, der teilweise gelabelt ist. Zustäzlich haben -wir zu einer Teilmenge der Knoten Texte. Gesucht sind nun Labels +Gegeben ist ein Graph, der teilweise gelabelt ist. Zustäzlich stehen +zu einer Teilmenge der Knoten Texte bereit. Gesucht sind nun Labels für alle Knoten, die bisher noch nicht gelabelt sind.\\ \begin{definition}[Knotenklassifierungsproblem]\label{def:Knotenklassifizierungsproblem} @@ -19,11 +19,11 @@ für alle Knoten, die bisher noch nicht gelabelt sind.\\ $E_t$ die Kantenmenge und $V_{L,t} \subseteq V_t$ die Menge der gelabelten Knoten jeweils zum Zeitpunkt $t$ bezeichne. Außerdem sei $L_t$ die Menge aller zum Zeitpunkt $t$ vergebenen - Labels und $f:V_{L,t} \rightarrow L_t$ die Funktion, die einen - Knoten auf sein Label abbildet. + Labels und $f:V_{L,t} \rightarrow \powerset(L_t)$ die Funktion, die einen + Knoten auf seine Labels abbildet. Weiter sei für jeden Knoten $v \in V$ eine (eventuell leere) - Textmenge gegeben. + Textmenge $T(v)$ gegeben. Gesucht sind nun Labels für $V_t \setminus V_{L,t}$, also $\tilde{f}: V_t \rightarrow L_t$ mit @@ -31,8 +31,11 @@ für alle Knoten, die bisher noch nicht gelabelt sind.\\ \end{definition} \subsection{Herausforderungen} -Die in Kapitel~\ref{sec:experimentelle-analyse} aufgeführen Netzwerke +Die Graphen, für die dieser Algorithmus konzipiert wurde, sind viele $\num{10000}$~Knoten groß und dynamisch. Das bedeutet, es kommen neue Knoten und eventuell auch neue Kanten hinzu bzw. Kanten oder Knoten werden entfernt. Außerdem stehen textuelle Inhalte zu den Knoten bereit, die bei der Klassifikation genutzt werden können. +Das bedeutet, es ist wünschenswert bei kleinen Modifikationen nicht +nochmals alles neu berechnen zu müssen, sondern basierend auf zuvor +berechneten Labels die Klassifizierung modifizieren zu können. diff --git a/documents/DYCOS/Experimentelle-Analyse.tex b/documents/DYCOS/Experimentelle-Analyse.tex index 16c392d..ebd82c4 100644 --- a/documents/DYCOS/Experimentelle-Analyse.tex +++ b/documents/DYCOS/Experimentelle-Analyse.tex @@ -1 +1,12 @@ -Wikipedia +\subsection{DBLP} +Im Folgenden wird die in \cite{aggarwal2011} durchgeführte +experimentelle Analyse des DYCOS-Algorithmus anhand des DBLP-Datensatzes +(\underline{d}ata\underline{b}ase systems and \underline{l}ogic \underline{p}rogramming) +der Universität Trier nachfolzogen. Dieser Datensatz beinhaltet +bibliographische Daten von Informatik-Publikationen. Der Datensatz +wird unter \href{http://dblp.uni-trier.de/xml/}{dblp.uni-trier.de/xml} +zur Verfügung gestellt. Die folgenden Informationen beziehen sich +auf den Datensatz vom 28.~Dezember~2013. + +http://dumps.wikimedia.org/enwiki/20131202/ +https://de.wikipedia.org/wiki/Hilfe:Download diff --git a/documents/DYCOS/abstract.tex b/documents/DYCOS/abstract.tex index 8bc7715..a92780a 100644 --- a/documents/DYCOS/abstract.tex +++ b/documents/DYCOS/abstract.tex @@ -1,8 +1,8 @@ -In dieser Arbeit wird der DYCOS-Algorithmus vorgestellt. Er -klassifiziert automatisch Knoten in Netzwerken, die bereits -teilweise gelabelt sind. Zur Klassifizierung kann er textuelle -Informationen, die den Knoten zugeordnet sind, nutzen. Er ist -auch für für viele $\num{10000}$ Knoten große, dynamische Netzwerke -geeignet.\\ +In dieser Arbeit wird der DYCOS-Algorithmus mit einer kleinen +Modifikation vorgestellt. Er klassifiziert automatisch Knoten in +Netzwerken, die bereits teilweise mit Labels versehen sind. Zur +Klassifizierung kann er textuelle Informationen, die den Knoten +zugeordnet sind, nutzen. Er ist auch für für viele $\num{10000}$ +Knoten große, dynamische Netzwerke geeignet.\\ \textbf{Keywords:} DYCOS, Label Propagation, Knotenklassifizierung diff --git a/documents/DYCOS/mystyle.sty b/documents/DYCOS/mystyle.sty index 360addc..0c92823 100644 --- a/documents/DYCOS/mystyle.sty +++ b/documents/DYCOS/mystyle.sty @@ -20,8 +20,13 @@ \def\M{\ensuremath{\mathcal{M}}} \def\N{\ensuremath{\mathcal{N}}} \def\T{\ensuremath{\mathcal{T}}} +\def\powerset{\ensuremath{\mathcal{P}}} \renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}} \renewcommand{\algorithmicforall}{\textbf{for each}} \renewcommand{\algorithmicprocedure}{\textbf{function}} +\renewcommand{\ALG@name}{Algorithmus} + +%Hyphenation +\hyphenation{Graph}