DYCOS-Algorithmus.tex 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. DYCOS (\underline{DY}namic \underline{C}lassification
  2. algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein
  3. Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt
  4. wurde.
  5. Sie im Folgenden die Notation wie in Definition~\ref{def:Knotenklassifizierungsproblem}.
  6. Der DYCOS-Algorithmus betrachtet Texte als eine Menge von Wörter,
  7. die Reihenfolge der Wörter im Text spielt also keine Rolle. Außerdem
  8. werden nicht alle Wörter benutzt, sondern nur solche die auch in
  9. einem festgelegtem Vokabular vorkommen. Wie dieses Vokabular bestimmt
  10. werden kann, wird in Abschnitt~\ref{sec:vokabularbestimmung} erklärt.
  11. Zusätzlich zu dem Netzwerk verwalltet der DYCOS-Algorithmus für jeden
  12. Knoten eine Liste von Wörtern. Diese Wörter stammen aus den Texten,
  13. die dem Knoten zugeordnet sind.
  14. Für jedes Wort des Vokabulars wird eine Liste von Knoten verwaltet,
  15. in deren Texten das Wort vorkommt.
  16. Ein $l$-Sprung ist ein ein Random Walk, bei dem $l$
  17. Knoten besucht werden, die nicht verschieden sein müssen. Ein
  18. $l$-Sprung heißt strukturell, wenn er ausschließlich die Kanten
  19. des Netzwerks für jeden der $l$ Schritte benutzt.
  20. Ein $l$-Sprung heißt inhaltlich, wenn er die Wörter benutzt.
  21. \begin{algorithm}[h]
  22. \begin{algorithmic}
  23. \Require \\$\G_t = (\N_t, \A_t, \T_t)$ (Netzwerk),\\
  24. $r$ (Anzahl der Random Walks),\\
  25. $l$ (Länge eines Random Walks),\\
  26. $p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs)
  27. \Ensure Klassifikation von $\N_t \setminus \T_t$\\
  28. \ForAll{Knoten $v$ in $\N_t \setminus \T_t$}
  29. \For{$i$ von $1$ bis $l$}
  30. \State $sprungTyp \gets \Call{random}{0.0, 1.0}$
  31. \If{$sprungTyp \leq p_s$}
  32. \State Strukturellen $l$-Sprung ausführen
  33. \Else
  34. \State Inhaltlichen $l$-Sprung ausführen
  35. \EndIf
  36. \EndFor
  37. \EndFor
  38. \State \Return Labels für $\N_t \setminus \T_t$
  39. \end{algorithmic}
  40. \caption{DYCOS-Algorithmus}
  41. \label{alg:DYCOS}
  42. \end{algorithm}
  43. \subsection{Vokabularbestimmung}\label{sec:vokabularbestimmung}
  44. Da die größe des Vokabulars die Datenmenge signifikant beeinflusst,
  45. liegt es in unserem Interesse so wenig Wörter wie möglich ins
  46. Vokabular aufzunehmen. Insbesondere sind Wörter nicht von Interesse,
  47. die in fast allen Texten vorkommen, wie im Deutschen z.~B.
  48. \enquote{und}, \enquote{mit} und die Pronomen.
  49. Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
  50. oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.
  51. Der Gini-Koeffizient ist ein statistisches Maß, das die Ungleichverteilung
  52. bewertet. Er ist immer im Intervall $[0,1]$, wobei $0$ einer
  53. Gleichverteilung entspricht und $1$ der größt möglichen Ungleichverteilung.
  54. Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit
  55. dem $i$-ten Label.
  56. \todo{darf ich hier im Nenner 1 addieren?}
  57. \begin{align}
  58. p_i(w) &:= \frac{n_i(w)}{\sum_{j=1}^{|\L_t|} n_j(w)} &\text{(Relative Häufigkeit des Wortes $w$)}\\
  59. G(w) &:= \sum_{j=1}^{|\L_t|} p_j(w)^2 &\text{(Gini-Koeffizient von $w$)}
  60. \end{align}
  61. In diesem Fall ist $G(w)=0$ nicht möglich, da zur Vokabularbestimmung
  62. nur Wörter betrachtet werden, die auch vorkommen.
  63. \begin{algorithm}[h]
  64. \begin{algorithmic}
  65. \Require \\
  66. $\T_t$ (Knoten mit Labels),\\
  67. $\L_t$ (Labels),\\
  68. $f:\T_t \rightarrow \L_t$ (Label-Funktion),\\
  69. $m$ (Gewünschte Vokabulargröße)
  70. \Ensure $\M_t$ (Vokabular)\\
  71. \State $S_t \gets \Call{Sample}{\T_t}$ \Comment{Wähle eine Teilmenge $S_t \subseteq \T_t$ aus}
  72. \State $\M_t \gets \bigcup_{v \in S_t} \Call{getText}{v}$
  73. \ForAll{Wort $w \in \M_t$}
  74. \State $w$.gini $\gets$
  75. \EndFor
  76. \State \Return $\M_t$
  77. \end{algorithmic}
  78. \caption{Vokabularbestimmung}
  79. \label{alg:vokabularbestimmung}
  80. \end{algorithm}