Vokabularbestimmung.tex 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. \subsection{Vokabularbestimmung}\label{sec:vokabularbestimmung}
  2. Da die Größe des Vokabulars die Datenmenge signifikant beeinflusst,
  3. liegt es in unserem Interesse so wenig Wörter wie möglich ins
  4. Vokabular aufzunehmen. Insbesondere sind Wörter nicht von Interesse,
  5. die in fast allen Texten vorkommen, wie im Deutschen z.~B.
  6. \enquote{und}, \enquote{mit} und die Pronomen. Es ist wünschenswert
  7. Wörter zu wählen, die die Texte möglichst stark voneinander Unterscheiden.
  8. Der DYCOS-Algorithmus wählt die Top-$m$ dieser Wörter als Vokabular,
  9. wobei $m \in \mathbb{N}$ eine Festzulegende Konstante ist. In \cite[S. 365]{aggarwal2011}
  10. wird der Einfluss von $m \in \Set{5,10, 15,20}$ auf die Klassifikationsgüte
  11. untersucht und festgestellt, dass die Klassifikationsgüte mit größerem
  12. $m$ sinkt, sie also für $m=5$ für den DBLP-Datensatz am höchsten ist.
  13. Für den CORA-Datensatz wurde mit $m \in \set{3,4,5,6}$ getestet und
  14. kein signifikanter Unterschied festgestellt.
  15. Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
  16. oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.
  17. Der Gini-Koeffizient ist ein statistisches Maß, das die Ungleichverteilung
  18. bewertet. Er ist immer im Intervall $[0,1]$, wobei $0$ einer
  19. Gleichverteilung entspricht und $1$ der größtmöglichen Ungleichverteilung.
  20. Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit
  21. der $i$-ten Knotenbeschriftung.
  22. \begin{align}
  23. p_i(w) &:= \frac{n_i(w)}{\sum_{j=1}^{|\L_t|} n_j(w)} &\text{(Relative Häufigkeit des Wortes $w$)}\\
  24. G(w) &:= \sum_{j=1}^{|\L_t|} p_j(w)^2 &\text{(Gini-Koeffizient von $w$)}
  25. \end{align}
  26. In diesem Fall ist $G(w)=0$ nicht möglich, da zur Vokabularbestimmung
  27. nur Wörter betrachtet werden, die auch vorkommen.
  28. Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann,
  29. ist als Pseudocode mit \cref{alg:vokabularbestimmung}
  30. gegeben. Dieser Algorithmus benötigt neben dem Speicher für den
  31. Graphen, die Texte sowie die $m$ Vokabeln noch $\mathcal{O}(|\text{Verschiedene Wörter in } S_t| \cdot (|\L_t| + 1))$
  32. Speicher. Die Average-Case Zeitkomplexität beträgt
  33. $\mathcal{O}(|\text{Wörter in } S_t|)$, wobei dazu die Vereinigung
  34. von Mengen $M,N$ in $\mathcal{O}(\min{|M|, |N|})$ sein muss.
  35. \begin{algorithm}
  36. \begin{algorithmic}[1]
  37. \Require \\
  38. $V_{L,t}$ (beschriftete Knoten),\\
  39. $\L_t$ (Beschriftungen),\\
  40. $f:V_{L,t} \rightarrow \L_t$ (Beschriftungsfunktion),\\
  41. $m$ (Gewünschte Vokabulargröße)
  42. \Ensure $\M_t$ (Vokabular)\\
  43. \State $S_t \gets \Call{Sample}{V_{L,t}}$ \Comment{Wähle eine Teilmenge $S_t \subseteq V_{L,t}$ aus}
  44. \State $\M_t \gets \bigcup_{v \in S_t} \Call{getTextAsSet}{v}$ \Comment{Menge aller Wörter}
  45. \State $cLabelWords \gets (|\L_t|+1) \times |\M_t|$-Array, mit 0en initialisiert\\
  46. \ForAll{$v \in V_{L,t}$} \Comment{Gehe jeden Text Wort für Wort durch}
  47. \State $i \gets \Call{getLabel}{v}$
  48. \ForAll{$(word, occurences) \in \Call{getTextAsMultiset}{v}$}
  49. \State $cLabelWords[i][word] \gets cLabelWords[i][word] + occurences$
  50. \State $cLabelWords[i][|\L_t|] \gets cLabelWords[i][|\L_t|] + occurences$
  51. \EndFor
  52. \EndFor
  53. \\
  54. \ForAll{Wort $w \in \M_t$}
  55. \State $p \gets $ Array aus $|\L_t|$ Zahlen in $[0, 1]$
  56. \ForAll{Label $i \in \L_t$}
  57. \State $p[i] \gets \frac{cLabelWords[i][w]}{cLabelWords[i][|\L_t|]}$
  58. \EndFor
  59. \State $w$.gini $\gets 0$
  60. \ForAll{$i \in 1, \dots, |\L_t|$}
  61. \State $w$.gini $\gets$ $w$.gini + $p[i]^2$
  62. \EndFor
  63. \EndFor
  64. \State $\M_t \gets \Call{SortDescendingByGini}{\M_t}$
  65. \State \Return $\Call{Top}{\M_t, m}$
  66. \end{algorithmic}
  67. \caption{Vokabularbestimmung}
  68. \label{alg:vokabularbestimmung}
  69. \end{algorithm}
  70. Die Menge $S_t$ kann aus der Menge aller Dokumente, deren
  71. Knoten beschriftet sind, mithilfe des in \cite{Vitter} vorgestellten
  72. Algorithmus bestimmt werden.