Sprungtypen.tex 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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 dies
  23. gemacht werden, 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 ein inhaltlicher
  28. Zweifachsprung gemacht werden soll 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.
  35. der 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
  41. $\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$ den Knoten $v' \in T(v)$
  42. als Ziel des Zweifachsprungs.
  43. \end{enumerate}
  44. Konkret könnte also ein inhaltlicher Zweifachsprung sowie wie in
  45. \cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
  46. Der Algorithmus bekommt einen Startknoten $v \in V_T$ und
  47. einen $q \in \mathbb{N}$ als Parameter. $q$ ist ein Parameter der
  48. für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt
  49. die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen
  50. $q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.
  51. In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt und alle
  52. erreichbaren Knoten in $reachableNodes$ mit der Anzahl der Pfade, durch die sie
  53. erreicht werden können, gespeichert.
  54. In \cref{alg:l6} wird \cref{step:c2} durchgeführt. Ab hier gilt
  55. \[ |T| = \begin{cases}q &\text{falls } |reachableNodes|\geq q\\
  56. |reachableNodes| &\text{sonst }\end{cases}\]
  57. Bei der Wahl der Datenstruktur von $T$ ist zu beachten, dass man in
  58. \cref{alg:21} über Indizes auf Elemente aus $T$ zugreifen können muss.
  59. In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt, das
  60. von $v' \in T(v)$ auf die relative Häufigkeit bzgl. aller Pfade von $v$ zu
  61. Knoten aus den Top-$q$ abbildet.
  62. In allen folgenden Zeilen wird \cref{step:c3} durchgeführt. In \cref{alg:15}
  63. bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit einer Wahrscheinlichkeit,
  64. die seiner relativen Häufigkeit am Anteil der Pfaden der Länge 2 von $v$ nach
  65. $v'$ über einen beliebigen Wortknoten entspricht ausgewählt und schließlich
  66. zurückgegeben.
  67. \begin{algorithm}
  68. \caption{Inhaltlicher Zweifachsprung}
  69. \label{alg:DYCOS-content-multihop}
  70. \begin{algorithmic}[1]
  71. \Procedure{InhaltlicherZweifachsprung}{Knoten $v \in V_T$, $q \in \mathbb{N}$}
  72. \State $erreichbareKnoten \gets$ leeres assoziatives Array\label{alg:l2}
  73. \ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
  74. \ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
  75. \If{$!erreichbareKnoten.\Call{hasKey}{x}$}
  76. \State $erreichbareKnoten[x] \gets 0$
  77. \EndIf
  78. \State $erreichbareKnoten[x] \gets erreichbareKnoten[x] + 1$
  79. \EndFor
  80. \EndFor\label{alg:l5}
  81. \State \label{alg:l6} $T \gets \Call{max}{erreichbareKnoten, q}$
  82. \\
  83. \State \label{alg:l8} $s \gets 0$
  84. \ForAll{Knoten $x \in T$}
  85. \State $s \gets s + erreichbareKnoten[x]$
  86. \EndFor
  87. \State $relativeHaeufigkeit \gets $ leeres assoziatives Array
  88. \ForAll{Knoten $x \in T$}
  89. \State $relativeHaeufigkeit \gets \frac{erreichbareKnoten[x]}{s}$
  90. \EndFor\label{alg:l13}
  91. \\
  92. \State \label{alg:15} $random \gets \Call{random}{0, 1}$
  93. \State $r \gets 0.0$
  94. \State $i \gets 0$
  95. \While{$s < random$}
  96. \State $r \gets r + relativeHaeufigkeit[i]$
  97. \State $i \gets i + 1$
  98. \EndWhile
  99. \State $v \gets T[i-1]$ \label{alg:21}
  100. \State \Return $v$ \label{alg:22}
  101. \EndProcedure
  102. \end{algorithmic}
  103. \end{algorithm}