Sprungtypen.tex 4.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 direkt
  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 folgendes Clusteranalyse durchgeführt:
  32. \begin{enumerate}[label=C\arabic*),ref=C\arabic*]
  33. \item[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[C2] Betrachte im folgenden nur die Top-$q$ Knoten, wobei $q \in \mathbb{N}$
  37. eine zu wählende Konstante des Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den
  38. CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.} \label{list:aggregate.2}
  39. \item[C3] Wähle mit Wahrscheinlichkeit $\frac{\Call{Anzahl}{v'}}{\sum_{w \in L} \Call{Anzahl}{v'}}$
  40. den Knoten $v'$ als Ziel des Mehrfachsprungs.
  41. \end{enumerate}
  42. Konkret könnte also ein Inhaltlicher Mehrfachsprung sowie wie in
  43. \cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
  44. \begin{algorithm}
  45. \caption{Inhaltlicher Mehrfachsprung}
  46. \label{alg:DYCOS-content-multihop}
  47. \begin{algorithmic}[1]
  48. \Procedure{InhaltlicherMehrfachsprung}{Knoten $v$}
  49. \State \textit{//Alle Knoten bestimmen, die von $v$ aus über Pfade der Länge 2 erreichbar sind}
  50. \State \textit{//Zusätzlich wird für diese Knoten die Anzahl der Pfade der Länge 2 bestimmt,}
  51. \State \textit{//durch die sie erreichbar sind}
  52. \State $reachableNodes \gets$ defaultdict
  53. \ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
  54. \ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
  55. \State $reachableNodes[x] \gets reachableNodes[x] + 1$
  56. \EndFor
  57. \EndFor
  58. \State \textit{//Im folgenden wird davon ausgegangen, dass man über Indizes wahlfrei auf}
  59. \State \textit{//Elemente aus $M_H$ zugreifen kann. Dies muss bei der konkreten Wahl}
  60. \State \textit{//der Datenstruktur berücksichtigt werden.}
  61. \State $M_H \gets \Call{max}{reachableNodes, q}$ \Comment{Also: $|M_H| = q$, falls $|reachableNodes|\geq q$}
  62. \State \textit{//Dictionary mit relativen Häufigkeiten erzeugen}
  63. \State $s \gets 0$
  64. \ForAll{Knoten $x$ in $M_H$}
  65. \State $s \gets s + reachableNodes[x]$
  66. \EndFor
  67. \State $relativeFrequency \gets $ Dictionary
  68. \ForAll{Knoten $x$ in $M_H$}
  69. \State $relativeFrequency \gets \frac{reachableNodes[x]}{s}$
  70. \EndFor
  71. \State \textit{//Wähle Knoten $i$ mit einer Wahrscheinlichkeit entsprechend seiner relativen}
  72. \State \textit{//Häufigkeit an Pfaden der Länge 2}
  73. \State $random \gets \Call{random}{0, 1}$
  74. \State $r \gets 0.0$
  75. \State $i \gets 0$
  76. \While{$s < random$}
  77. \State $r \gets r + relativeFrequency[i]$
  78. \State $i \gets i + 1$
  79. \EndWhile
  80. \State $v \gets M_H[i-1]$
  81. \State \Return $v$
  82. \EndProcedure
  83. \end{algorithmic}
  84. \end{algorithm}