Sprungtypen.tex 5.6 KB

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