📚 The CoCalc Library - books, templates and other resources
cocalc-examples / martinthoma-latex-examples / publications / Proseminar-Netzwerkanalyse / Sprungtypen.tex
132935 viewsLicense: OTHER
\subsection{Sprungtypen}\label{sec:sprungtypen}1Die beiden bereits definierten Sprungtypen, der strukturelle Sprung sowie der2inhaltliche Zweifachsprung werden im Folgenden erklärt.3\goodbreak4Der strukturelle Sprung entspricht einer zufälligen Wahl eines Nachbarknotens,5wie es in \cref{alg:DYCOS-structural-hop} gezeigt wird.6\begin{algorithm}[H]7\begin{algorithmic}[1]8\Procedure{SturkturellerSprung}{Knoten $v$, Anzahl $q$}9\State $n \gets v.\Call{NeighborCount}{}$ \Comment{Wähle aus der Liste der Nachbarknoten}10\State $r \gets \Call{RandomInt}{0, n-1}$ \Comment{einen zufällig aus}11\State $v \gets v.\Call{Next}{r}$ \Comment{Gehe zu diesem Knoten}12\State \Return $v$13\EndProcedure14\end{algorithmic}15\caption{Struktureller Sprung}16\label{alg:DYCOS-structural-hop}17\end{algorithm}1819Bei inhaltlichen Zweifachsprüngen ist jedoch nicht sinnvoll so strikt nach der20Definition vorzugehen, also direkt von einem strukturellem Knoten $v \in V_t$21zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen und von diesem22wieder zu einem verbundenem strukturellem Knoten $v' \in V_t$. Würde dies23gemacht werden, wäre zu befürchten, dass aufgrund von Homonymen die Qualität der24Klassifizierung verringert wird. So hat \enquote{Brücke} im Deutschen viele25Bedeutungen. Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der26objektorientierten Programmierung oder ein Teil des Gehirns.2728Deshalb wird für jeden Knoten $v$, von dem aus ein inhaltlicher29Zweifachsprung gemacht werden soll folgende Textanalyse durchgeführt:30\begin{enumerate}[label=C\arabic*,ref=C\arabic*]31\item \label{step:c1} Gehe alle in $v$ startenden Random Walks der Länge $2$ durch32und erstelle eine Liste $L$ der erreichbaren Knoten $v'$. Speichere33außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar34sind.35\item \label{step:c2} Betrachte im Folgenden nur die Top-$q$ Knoten bzgl.36der Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$37eine zu wählende Konstante des DYCOS-Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den38CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.}39Diese Knotenmenge heiße im Folgenden $T(v)$ und $p(v, v')$ sei die40Anzahl der Pfade von $v$ über einen Wortknoten nach $v'$.41\item \label{step:c3} Wähle mit Wahrscheinlichkeit42$\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$ den Knoten $v' \in T(v)$43als Ziel des Zweifachsprungs.44\end{enumerate}4546Konkret könnte also ein inhaltlicher Zweifachsprung sowie wie in47\cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.48Der Algorithmus bekommt einen Startknoten $v \in V_T$ und49einen $q \in \mathbb{N}$ als Parameter. $q$ ist ein Parameter der50für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt51die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen52$q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.5354In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt und alle55erreichbaren Knoten in $reachableNodes$ mit der Anzahl der Pfade, durch die sie56erreicht werden können, gespeichert.5758In \cref{alg:l6} wird \cref{step:c2} durchgeführt. Ab hier gilt59\[ |T| = \begin{cases}q &\text{falls } |reachableNodes|\geq q\\60|reachableNodes| &\text{sonst }\end{cases}\]6162Bei der Wahl der Datenstruktur von $T$ ist zu beachten, dass man in63\cref{alg:21} über Indizes auf Elemente aus $T$ zugreifen können muss.6465In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt, das66von $v' \in T(v)$ auf die relative Häufigkeit bzgl. aller Pfade von $v$ zu67Knoten aus den Top-$q$ abbildet.6869In allen folgenden Zeilen wird \cref{step:c3} durchgeführt. In \cref{alg:15}70bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit einer Wahrscheinlichkeit,71die seiner relativen Häufigkeit am Anteil der Pfaden der Länge 2 von $v$ nach72$v'$ über einen beliebigen Wortknoten entspricht ausgewählt und schließlich73zurückgegeben.7475\begin{algorithm}76\caption{Inhaltlicher Zweifachsprung}77\label{alg:DYCOS-content-multihop}78\begin{algorithmic}[1]79\Procedure{InhaltlicherZweifachsprung}{Knoten $v \in V_T$, $q \in \mathbb{N}$}80\State $erreichbareKnoten \gets$ leeres assoziatives Array\label{alg:l2}81\ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}82\ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}83\If{$!erreichbareKnoten.\Call{hasKey}{x}$}84\State $erreichbareKnoten[x] \gets 0$85\EndIf86\State $erreichbareKnoten[x] \gets erreichbareKnoten[x] + 1$87\EndFor88\EndFor\label{alg:l5}89\State \label{alg:l6} $T \gets \Call{max}{erreichbareKnoten, q}$90\\91\State \label{alg:l8} $s \gets 0$92\ForAll{Knoten $x \in T$}93\State $s \gets s + erreichbareKnoten[x]$94\EndFor95\State $relativeHaeufigkeit \gets $ leeres assoziatives Array96\ForAll{Knoten $x \in T$}97\State $relativeHaeufigkeit \gets \frac{erreichbareKnoten[x]}{s}$98\EndFor\label{alg:l13}99\\100\State \label{alg:15} $random \gets \Call{random}{0, 1}$101\State $r \gets 0.0$102\State $i \gets 0$103\While{$s < random$}104\State $r \gets r + relativeHaeufigkeit[i]$105\State $i \gets i + 1$106\EndWhile107108\State $v \gets T[i-1]$ \label{alg:21}109\State \Return $v$ \label{alg:22}110\EndProcedure111\end{algorithmic}112\end{algorithm}113114115