2014-01-12 17:20:36 +01:00
|
|
|
\subsection{Sprungtypen}\label{sec:sprungtypen}
|
2014-01-11 19:27:50 +01:00
|
|
|
Die beiden bereits definierten Sprungtypen, der strukturelle Sprung
|
|
|
|
sowie der inhaltliche Mehrfachsprung werden im folgenden erklärt.
|
2014-01-12 15:19:53 +01:00
|
|
|
\goodbreak
|
2014-01-11 19:27:50 +01:00
|
|
|
Der strukturelle Sprung entspricht einer zufälligen Wahl eines
|
2014-01-12 15:19:53 +01:00
|
|
|
Nachbarknotens, wie es in \cref{alg:DYCOS-structural-hop}
|
|
|
|
gezeigt wird.
|
|
|
|
\begin{algorithm}[H]
|
|
|
|
\begin{algorithmic}[1]
|
|
|
|
\Procedure{SturkturellerSprung}{Knoten $v$, Anzahl $q$}
|
|
|
|
\State $n \gets v.\Call{NeighborCount}{}$ \Comment{Wähle aus der Liste der Nachbarknoten}
|
|
|
|
\State $r \gets \Call{RandomInt}{0, n-1}$ \Comment{einen zufällig aus}
|
|
|
|
\State $v \gets v.\Call{Next}{r}$ \Comment{Gehe zu diesem Knoten}
|
|
|
|
\State \Return $v$
|
|
|
|
\EndProcedure
|
|
|
|
\end{algorithmic}
|
|
|
|
\caption{Struktureller Sprung}
|
|
|
|
\label{alg:DYCOS-structural-hop}
|
|
|
|
\end{algorithm}
|
2014-01-11 19:27:50 +01:00
|
|
|
|
2014-01-18 18:20:40 +01:00
|
|
|
Bei inhaltlichen Mehrfachsprüngen ist jedoch nicht sinnvoll so strikt
|
2014-01-12 15:19:53 +01:00
|
|
|
nach der Definition vorzugehen, also
|
|
|
|
direkt von einem strukturellem Knoten
|
|
|
|
$v \in V_t$ zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen
|
2014-01-12 18:14:47 +01:00
|
|
|
und von diesem wieder zu einem verbundenem strukturellem Knoten
|
2014-01-12 15:19:53 +01:00
|
|
|
$v' \in V_t$. Würde man dies machen, wäre zu befürchten, dass
|
2014-01-11 19:27:50 +01:00
|
|
|
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.
|
|
|
|
|
|
|
|
Deshalb wird für jeden Knoten $v$, von dem aus man einen inhaltlichen
|
2014-01-18 18:20:40 +01:00
|
|
|
Mehrfachsprung machen will folgende Textanalyse durchgeführt:
|
|
|
|
\begin{enumerate}[label=C\arabic*,ref=C\arabic*]
|
|
|
|
\item \label{step:c1} Gehe alle in $v$ startenden Random Walks der Länge $2$ durch
|
|
|
|
und erstelle eine Liste $L$ der erreichbaren Knoten $v'$. Speichere
|
2014-01-11 19:27:50 +01:00
|
|
|
außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar sind.
|
2014-01-18 18:20:40 +01:00
|
|
|
\item \label{step:c2} Betrachte im folgenden nur die Top-$q$ Knoten bzgl. der
|
|
|
|
Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$
|
|
|
|
eine zu wählende Konstante des DYCOS-Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den
|
|
|
|
CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.}
|
|
|
|
Diese Knotenmenge heiße im Folgenden $T(v)$ und $p(v, v')$
|
|
|
|
sei die Anzahl der Pfade von $v$ über einen Wortknoten nach $v'$.
|
|
|
|
\item \label{step:c3} Wähle mit Wahrscheinlichkeit $\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$
|
|
|
|
den Knoten $v' \in T(v)$ als Ziel des Mehrfachsprungs.
|
2014-01-11 19:27:50 +01:00
|
|
|
\end{enumerate}
|
|
|
|
|
2014-01-18 18:20:40 +01:00
|
|
|
Konkret könnte also ein inhaltlicher Mehrfachsprung sowie wie in
|
2014-01-12 18:14:47 +01:00
|
|
|
\cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
|
2014-01-18 18:20:40 +01:00
|
|
|
Der Algorithmus bekommt einen Startknoten $v \in V_T$ und
|
|
|
|
einen $q \in \mathbb{N}$ als Parameter. $q$ ist ein Parameter der
|
|
|
|
für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt
|
|
|
|
die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen
|
|
|
|
$q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.
|
|
|
|
|
|
|
|
In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt.
|
|
|
|
In \cref{alg:l6} wird \cref{step:c2} durchgeführt. Bei der
|
|
|
|
Wahl der Datenstruktur $M_H$ ist zu beachten, dass man in
|
|
|
|
\cref{alg:21} über Indizes auf Elemente aus $M_H$ zugreifen können muss.
|
|
|
|
|
|
|
|
In \cref{alg:l8} bis \cref{alg:l13} wird ein Wörterbuch erstellt,
|
|
|
|
das von $v' \in T(v)$ auf die relative
|
|
|
|
Häufigkeit bzgl. aller Pfade von $v$ zu Knoten aus den Top-$q$ abbildet.
|
|
|
|
|
|
|
|
In \cref{alg:15} bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit
|
|
|
|
einer Wahrscheinlichkeit, die seiner relativen Häufigkeit am Anteil
|
|
|
|
der Pfaden der Länge 2 von $v$ nach $v'$ über einen beliebigen
|
|
|
|
Wortknoten entspricht ausgewählt und schließlich zurückgegeben.
|
2014-01-11 19:27:50 +01:00
|
|
|
|
2014-01-12 15:19:53 +01:00
|
|
|
\begin{algorithm}
|
|
|
|
\caption{Inhaltlicher Mehrfachsprung}
|
|
|
|
\label{alg:DYCOS-content-multihop}
|
2014-01-11 19:27:50 +01:00
|
|
|
\begin{algorithmic}[1]
|
2014-01-18 18:20:40 +01:00
|
|
|
\Procedure{InhaltlicherMehrfachsprung}{Knoten $v \in V_T$, $q \in \mathbb{N}$}
|
|
|
|
\State $reachableNodes \gets$ defaultdict\label{alg:l2}
|
2014-01-11 19:27:50 +01:00
|
|
|
\ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
|
|
|
|
\ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
|
|
|
|
\State $reachableNodes[x] \gets reachableNodes[x] + 1$
|
|
|
|
\EndFor
|
2014-01-18 18:20:40 +01:00
|
|
|
\EndFor\label{alg:l5}
|
|
|
|
\State \label{alg:l6} $M_H \gets \Call{max}{reachableNodes, q}$ \Comment{Also: $|M_H| = q$, falls $|reachableNodes|\geq q$}
|
|
|
|
\\
|
|
|
|
\State \label{alg:l8} $s \gets 0$
|
2014-01-11 19:27:50 +01:00
|
|
|
\ForAll{Knoten $x$ in $M_H$}
|
|
|
|
\State $s \gets s + reachableNodes[x]$
|
|
|
|
\EndFor
|
|
|
|
\State $relativeFrequency \gets $ Dictionary
|
|
|
|
\ForAll{Knoten $x$ in $M_H$}
|
|
|
|
\State $relativeFrequency \gets \frac{reachableNodes[x]}{s}$
|
2014-01-18 18:20:40 +01:00
|
|
|
\EndFor\label{alg:l13}
|
|
|
|
\\
|
|
|
|
\State \label{alg:15} $random \gets \Call{random}{0, 1}$
|
2014-01-12 15:19:53 +01:00
|
|
|
\State $r \gets 0.0$
|
2014-01-11 19:27:50 +01:00
|
|
|
\State $i \gets 0$
|
|
|
|
\While{$s < random$}
|
2014-01-12 15:19:53 +01:00
|
|
|
\State $r \gets r + relativeFrequency[i]$
|
2014-01-11 19:27:50 +01:00
|
|
|
\State $i \gets i + 1$
|
|
|
|
\EndWhile
|
|
|
|
|
2014-01-18 18:20:40 +01:00
|
|
|
\State $v \gets M_H[i-1]$ \label{alg:21}
|
|
|
|
\State \Return $v$ \label{alg:22}
|
2014-01-11 19:27:50 +01:00
|
|
|
\EndProcedure
|
|
|
|
\end{algorithmic}
|
|
|
|
\end{algorithm}
|