Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132935 views
License: OTHER
1
\subsection{Sprungtypen}\label{sec:sprungtypen}
2
Die beiden bereits definierten Sprungtypen, der strukturelle Sprung sowie der
3
inhaltliche Zweifachsprung werden im Folgenden erklärt.
4
\goodbreak
5
Der strukturelle Sprung entspricht einer zufälligen Wahl eines Nachbarknotens,
6
wie es in \cref{alg:DYCOS-structural-hop} gezeigt wird.
7
\begin{algorithm}[H]
8
\begin{algorithmic}[1]
9
\Procedure{SturkturellerSprung}{Knoten $v$, Anzahl $q$}
10
\State $n \gets v.\Call{NeighborCount}{}$ \Comment{Wähle aus der Liste der Nachbarknoten}
11
\State $r \gets \Call{RandomInt}{0, n-1}$ \Comment{einen zufällig aus}
12
\State $v \gets v.\Call{Next}{r}$ \Comment{Gehe zu diesem Knoten}
13
\State \Return $v$
14
\EndProcedure
15
\end{algorithmic}
16
\caption{Struktureller Sprung}
17
\label{alg:DYCOS-structural-hop}
18
\end{algorithm}
19
20
Bei inhaltlichen Zweifachsprüngen ist jedoch nicht sinnvoll so strikt nach der
21
Definition vorzugehen, also direkt von einem strukturellem Knoten $v \in V_t$
22
zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen und von diesem
23
wieder zu einem verbundenem strukturellem Knoten $v' \in V_t$. Würde dies
24
gemacht werden, wäre zu befürchten, dass aufgrund von Homonymen die Qualität der
25
Klassifizierung verringert wird. So hat \enquote{Brücke} im Deutschen viele
26
Bedeutungen. Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der
27
objektorientierten Programmierung oder ein Teil des Gehirns.
28
29
Deshalb wird für jeden Knoten $v$, von dem aus ein inhaltlicher
30
Zweifachsprung gemacht werden soll folgende Textanalyse durchgeführt:
31
\begin{enumerate}[label=C\arabic*,ref=C\arabic*]
32
\item \label{step:c1} Gehe alle in $v$ startenden Random Walks der Länge $2$ durch
33
und erstelle eine Liste $L$ der erreichbaren Knoten $v'$. Speichere
34
außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar
35
sind.
36
\item \label{step:c2} Betrachte im Folgenden nur die Top-$q$ Knoten bzgl.
37
der Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$
38
eine zu wählende Konstante des DYCOS-Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den
39
CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.}
40
Diese Knotenmenge heiße im Folgenden $T(v)$ und $p(v, v')$ sei die
41
Anzahl der Pfade von $v$ über einen Wortknoten nach $v'$.
42
\item \label{step:c3} Wähle mit Wahrscheinlichkeit
43
$\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$ den Knoten $v' \in T(v)$
44
als Ziel des Zweifachsprungs.
45
\end{enumerate}
46
47
Konkret könnte also ein inhaltlicher Zweifachsprung sowie wie in
48
\cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
49
Der Algorithmus bekommt einen Startknoten $v \in V_T$ und
50
einen $q \in \mathbb{N}$ als Parameter. $q$ ist ein Parameter der
51
für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt
52
die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen
53
$q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.
54
55
In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt und alle
56
erreichbaren Knoten in $reachableNodes$ mit der Anzahl der Pfade, durch die sie
57
erreicht werden können, gespeichert.
58
59
In \cref{alg:l6} wird \cref{step:c2} durchgeführt. Ab hier gilt
60
\[ |T| = \begin{cases}q &\text{falls } |reachableNodes|\geq q\\
61
|reachableNodes| &\text{sonst }\end{cases}\]
62
63
Bei der Wahl der Datenstruktur von $T$ ist zu beachten, dass man in
64
\cref{alg:21} über Indizes auf Elemente aus $T$ zugreifen können muss.
65
66
In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt, das
67
von $v' \in T(v)$ auf die relative Häufigkeit bzgl. aller Pfade von $v$ zu
68
Knoten aus den Top-$q$ abbildet.
69
70
In allen folgenden Zeilen wird \cref{step:c3} durchgeführt. In \cref{alg:15}
71
bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit einer Wahrscheinlichkeit,
72
die seiner relativen Häufigkeit am Anteil der Pfaden der Länge 2 von $v$ nach
73
$v'$ über einen beliebigen Wortknoten entspricht ausgewählt und schließlich
74
zurückgegeben.
75
76
\begin{algorithm}
77
\caption{Inhaltlicher Zweifachsprung}
78
\label{alg:DYCOS-content-multihop}
79
\begin{algorithmic}[1]
80
\Procedure{InhaltlicherZweifachsprung}{Knoten $v \in V_T$, $q \in \mathbb{N}$}
81
\State $erreichbareKnoten \gets$ leeres assoziatives Array\label{alg:l2}
82
\ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
83
\ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
84
\If{$!erreichbareKnoten.\Call{hasKey}{x}$}
85
\State $erreichbareKnoten[x] \gets 0$
86
\EndIf
87
\State $erreichbareKnoten[x] \gets erreichbareKnoten[x] + 1$
88
\EndFor
89
\EndFor\label{alg:l5}
90
\State \label{alg:l6} $T \gets \Call{max}{erreichbareKnoten, q}$
91
\\
92
\State \label{alg:l8} $s \gets 0$
93
\ForAll{Knoten $x \in T$}
94
\State $s \gets s + erreichbareKnoten[x]$
95
\EndFor
96
\State $relativeHaeufigkeit \gets $ leeres assoziatives Array
97
\ForAll{Knoten $x \in T$}
98
\State $relativeHaeufigkeit \gets \frac{erreichbareKnoten[x]}{s}$
99
\EndFor\label{alg:l13}
100
\\
101
\State \label{alg:15} $random \gets \Call{random}{0, 1}$
102
\State $r \gets 0.0$
103
\State $i \gets 0$
104
\While{$s < random$}
105
\State $r \gets r + relativeHaeufigkeit[i]$
106
\State $i \gets i + 1$
107
\EndWhile
108
109
\State $v \gets T[i-1]$ \label{alg:21}
110
\State \Return $v$ \label{alg:22}
111
\EndProcedure
112
\end{algorithmic}
113
\end{algorithm}
114
115