Sprungtypen.tex 5.7 KB

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