Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132939 views
License: OTHER
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 Wörter zu
7
wählen, die die Texte möglichst stark voneinander Unterscheiden. Der
8
DYCOS-Algorithmus wählt die Top-$m$ dieser Wörter als Vokabular, wobei
9
$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 $m$
12
sinkt, sie also für $m=5$ für den DBLP-Datensatz am höchsten ist. Für den
13
CORA-Datensatz wurde mit $m \in \set{3,4,5,6}$ getestet und kein signifikanter
14
Unterschied festgestellt.
15
16
Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
17
oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.
18
Der Gini-Koeffizient ist ein statistisches Maß, das die Ungleichverteilung
19
bewertet. Er ist immer im Intervall $[0,1]$, wobei $0$ einer
20
Gleichverteilung entspricht und $1$ der größtmöglichen Ungleichverteilung.
21
22
Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit der $i$-ten
23
Knotenbeschriftung.
24
\begin{align}
25
p_i(w) &:= \frac{n_i(w)}{\sum_{j=1}^{|\L_t|} n_j(w)} &\text{(Relative Häufigkeit des Wortes $w$)}\\
26
G(w) &:= \sum_{j=1}^{|\L_t|} p_j(w)^2 &\text{(Gini-Koeffizient von $w$)}
27
\end{align}
28
In diesem Fall ist $G(w)=0$ nicht möglich, da zur Vokabularbestimmung nur
29
Wörter betrachtet werden, die auch vorkommen.
30
31
Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann, ist als
32
Pseudocode mit \cref{alg:vokabularbestimmung} gegeben. In \cref{alg4:l6} wird
33
eine Teilmenge $S_t \subseteq V_{L,t}$ zum Generieren des Vokabulars gewählt.
34
In \cref{alg4:l8} wird ein Array $cLabelWords$ erstellt, das $(|\L_t|+1)$
35
Felder hat. Die Elemente dieser Felder sind jeweils assoziative Arrays, deren
36
Schlüssel Wörter und deren Werte natürliche Zahlen sind. Die ersten $|\L_t|$
37
Elemente von $cLabelWords$ dienen dem Zählen der Häufigkeit der Wörter von
38
Texten aus $S_t$, wobei für jede Beschriftung die Häufigkeit einzeln gezählt
39
wird. Das letzte Element aus $cLabelWords$ zählt die Summe der Wörter. Diese
40
Datenstruktur wird in \cref{alg4:l10} bis \ref{alg4:l12} gefüllt.
41
42
In \cref{alg4:l17} bis \ref{alg4:l19} wird die relative Häufigkeit der Wörter
43
bzgl. der Beschriftungen bestimmt. Daraus wird in \cref{alg4:l20} bis
44
\ref{alg4:l22} der Gini-Koeffizient berechnet. Schließlich werden in
45
\cref{alg4:l23} bis \ref{alg4:l24} die Top-$q$ Wörter mit den
46
höchsten Gini-Koeffizienten zurückgegeben.
47
48
\begin{algorithm}[ht]
49
\begin{algorithmic}[1]
50
\Require \\
51
$V_{L,t}$ (beschriftete Knoten),\\
52
$\L_t$ (Menge der Beschriftungen),\\
53
$f:V_{L,t} \rightarrow \L_t$ (Beschriftungsfunktion),\\
54
$m$ (Gewünschte Vokabulargröße)
55
\Ensure $\M_t$ (Vokabular)\\
56
\State $S_t \gets \Call{Sample}{V_{L,t}}$\label{alg4:l6} \Comment{Wähle $S_t \subseteq V_{L,t}$ aus}
57
\State $\M_t \gets \emptyset$ \Comment{Menge aller Wörter}
58
\State $cLabelWords \gets$ Array aus $(|\L_t|+1)$ assoziativen Arrays\label{alg4:l8}
59
\ForAll{$v \in S_t$} \label{alg4:l10}
60
\State $i \gets \Call{getLabel}{v}$
61
\State \Comment{$w$ ist das Wort, $c$ ist die Häufigkeit}
62
\ForAll{$(w, c) \in \Call{getTextAsMultiset}{v}$}
63
\State $cLabelWords[i][w] \gets cLabelWords[i][w] + c$
64
\State $cLabelWords[|\L_t|][w] \gets cLabelWords[i][|\L_t|] + c$
65
\State $\M_t = \M_t \cup \Set{w}$
66
\EndFor
67
\EndFor\label{alg4:l12}
68
\\
69
\ForAll{Wort $w \in \M_t$}
70
\State $p \gets $ Array aus $|\L_t|$ Zahlen in $[0, 1]$\label{alg4:l17}
71
\ForAll{Label $i \in \L_t$}
72
\State $p[i] \gets \frac{cLabelWords[i][w]}{cLabelWords[i][|\L_t|]}$
73
\EndFor\label{alg4:l19}
74
75
\State $w$.gini $\gets 0$ \label{alg4:l20}
76
\ForAll{$i \in 1, \dots, |\L_t|$}
77
\State $w$.gini $\gets$ $w$.gini + $p[i]^2$
78
\EndFor\label{alg4:l22}
79
\EndFor
80
81
\State $\M_t \gets \Call{SortDescendingByGini}{\M_t}$\label{alg4:l23}
82
\State \Return $\Call{Top}{\M_t, m}$\label{alg4:l24}
83
\end{algorithmic}
84
\caption{Vokabularbestimmung}
85
\label{alg:vokabularbestimmung}
86
\end{algorithm}
87
88
Die Menge $S_t$ kann aus der Menge aller Dokumente, deren Knoten beschriftet
89
sind, mithilfe des in \cite{Vitter} vorgestellten Algorithmus bestimmt werden.
90
91