Просмотр исходного кода

Pseudocode beschrieben; viele kleine Verbesserungen

Martin Thoma 11 лет назад
Родитель
Сommit
e171c0bb91

+ 3 - 3
documents/DYCOS/Ausblick.tex

@@ -1,6 +1,6 @@
-Den sehr einfach aufgebauten DYCOS-Algorithmus kann man noch an
-vielen Punkten verbessern. So könnte man vor der Auswahl des
-Vokabulars jedes Wort auf den Wortstamm zurückführen.
+Den DYCOS-Algorithmus kann in einigen Aspekten erweitert werden. 
+So könnte man vor der Auswahl des Vokabulars jedes Wort auf den 
+Wortstamm zurückführen.
 Dafür könnte zum Beispiel der in \cite{porter} vorgestellte 
 Dafür könnte zum Beispiel der in \cite{porter} vorgestellte 
 Porter-Stemming-Algorithmus verwendet werden. Durch diese Maßnahme wird das
 Porter-Stemming-Algorithmus verwendet werden. Durch diese Maßnahme wird das
 Vokabular kleiner gehalten wodurch mehr Artikel mit einander
 Vokabular kleiner gehalten wodurch mehr Artikel mit einander

+ 1 - 1
documents/DYCOS/DYCOS-Algorithmus.tex

@@ -113,7 +113,7 @@ der Länge $l$ durchgeführt, wobei die beobachteten Beschriftungen
 gezählt werden und mit einer Wahrscheinlichkeit von $p_S$ ein 
 gezählt werden und mit einer Wahrscheinlichkeit von $p_S$ ein 
 struktureller Sprung durchgeführt wird.
 struktureller Sprung durchgeführt wird.
 
 
-\begin{algorithm}
+\begin{algorithm}[ht]
     \begin{algorithmic}[1]
     \begin{algorithmic}[1]
         \Require \\$G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_t)$ (Erweiterter Graph),\\
         \Require \\$G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_t)$ (Erweiterter Graph),\\
                  $r$ (Anzahl der Random Walks),\\
                  $r$ (Anzahl der Random Walks),\\

BIN
documents/DYCOS/DYCOS.pdf


+ 1 - 1
documents/DYCOS/DYCOS.tex

@@ -63,7 +63,7 @@
 \section{DYCOS}
 \section{DYCOS}
 \input{DYCOS-Algorithmus}
 \input{DYCOS-Algorithmus}
 
 
-\section{Schwächen und Verbesserungsvorschläge}
+\section{Probleme des DYCOS-Algorithmus}
 \input{SchwaechenVerbesserungen}
 \input{SchwaechenVerbesserungen}
 
 
 \section{Ausblick}
 \section{Ausblick}

+ 4 - 6
documents/DYCOS/README.md

@@ -1,13 +1,11 @@
 About
 About
 =====
 =====
+The document in this folder is part of a proseminar at KIT. It is
+written in German.
+
 Ausarbeitung zum Proseminar "Netzwerkanalyse" am KIT.
 Ausarbeitung zum Proseminar "Netzwerkanalyse" am KIT.
 
 
 Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation
 Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation
 25-30 Minuten dauern + 10-15 Minuten Diskussion.
 25-30 Minuten dauern + 10-15 Minuten Diskussion.
 
 
-TODO
------
-
-* Abschnitt "Problemstellung" überarbeiten
-* Algorithmen erklären
-* Algorithmus 4, S. 9
+Zu der Ausarbeitung gehört eine [Präsentation](https://github.com/MartinThoma/LaTeX-examples/tree/master/presentations/Datamining-Proseminar).

+ 2 - 1
documents/DYCOS/SchwaechenVerbesserungen.tex

@@ -1,4 +1,5 @@
-Der in \cite{aggarwal2011} vorgestellte Algorithmus hat einige Probleme,
+Bei der Anwendung des in \cite{aggarwal2011} vorgestellten Algorithmus
+auf reale Datensätze könnten zwei Probleme auftreten,
 die im Folgenden erläutert werden. Außerdem werden Verbesserungen
 die im Folgenden erläutert werden. Außerdem werden Verbesserungen
 vorgeschlagen, die es allerdings noch zu untersuchen gilt.
 vorgeschlagen, die es allerdings noch zu untersuchen gilt.
 
 

+ 1 - 1
documents/DYCOS/Sprungtypen.tex

@@ -65,7 +65,7 @@ Ab hier gilt
 Bei der Wahl der Datenstruktur von $T$ ist zu beachten, dass man in
 Bei der Wahl der Datenstruktur von $T$ ist zu beachten, dass man in
 \cref{alg:21} über Indizes auf Elemente aus $T$ zugreifen können muss.
 \cref{alg:21} über Indizes auf Elemente aus $T$ zugreifen können muss.
 
 
-In \cref{alg:l8} bis \cref{alg:l13} wird ein Wörterbuch erstellt,
+In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt,
 das von $v' \in T(v)$ auf die relative
 das von $v' \in T(v)$ auf die relative
 Häufigkeit bzgl. aller Pfade von $v$ zu Knoten aus den Top-$q$ abbildet.
 Häufigkeit bzgl. aller Pfade von $v$ zu Knoten aus den Top-$q$ abbildet.
 
 

+ 33 - 24
documents/DYCOS/Vokabularbestimmung.tex

@@ -30,47 +30,56 @@ nur Wörter betrachtet werden, die auch vorkommen.
 
 
 Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann,
 Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann,
 ist als Pseudocode mit \cref{alg:vokabularbestimmung}
 ist als Pseudocode mit \cref{alg:vokabularbestimmung}
-gegeben. Dieser Algorithmus benötigt neben dem Speicher für den
-Graphen, die Texte sowie die $m$ Vokabeln noch $\mathcal{O}(|\text{Verschiedene Wörter in } S_t| \cdot (|\L_t| + 1))$
-Speicher. Die Average-Case Zeitkomplexität beträgt 
-$\mathcal{O}(|\text{Wörter in } S_t|)$, wobei dazu die Vereinigung
-von Mengen $M,N$ in $\mathcal{O}(\min{|M|, |N|})$ sein muss.
+gegeben. In \cref{alg4:l6} wird eine Teilmenge $S_t \subseteq V_{L,t}$
+zum Generieren des Vokabulars gewählt. In \cref{alg4:l8} wird ein Array $cLabelWords$ erstellt, das $(|\L_t|+1)$ Felder hat.
+Die Elemente dieser Felder sind jeweils assoziative Arrays, deren
+Schlüssel Wörter und deren Werte natürliche Zahlen sind. Die ersten 
+$|\L_t|$ Elemente von $cLabelWords$ dienem dem Zählen der Häufigkeit
+der Wörter von Texten aus $S_t$, wobei für jede Beschriftung die
+Häufigkeit einzeln gezählt wird. Das letzte Element aus $cLabelWords$
+zählt die Summe der Wörter. Diese Datenstruktur wird in
+\cref{alg4:l10} bis \ref{alg4:l12} gefüllt. 
 
 
-\begin{algorithm}
+In \cref{alg4:l17} bis \ref{alg4:l19} wird die relative Häufigkeit
+der Wörter bzgl. der Beschriftungen bestimmt. Daraus wird in  
+\cref{alg4:l20} bis \ref{alg4:l22} der Gini-Koeffizient berechnet.
+Schließlich werden in \cref{alg4:l23} bis \ref{alg4:l24} die Top-$q$
+Wörter mit den höchsten Gini-Koeffizienten zurückgegeben.
+
+\begin{algorithm}[ht]
     \begin{algorithmic}[1]
     \begin{algorithmic}[1]
         \Require \\
         \Require \\
                  $V_{L,t}$ (beschriftete Knoten),\\
                  $V_{L,t}$ (beschriftete Knoten),\\
-                 $\L_t$ (Beschriftungen),\\
+                 $\L_t$ (Menge der Beschriftungen),\\
                  $f:V_{L,t} \rightarrow \L_t$ (Beschriftungsfunktion),\\
                  $f:V_{L,t} \rightarrow \L_t$ (Beschriftungsfunktion),\\
                  $m$ (Gewünschte Vokabulargröße)
                  $m$ (Gewünschte Vokabulargröße)
         \Ensure  $\M_t$ (Vokabular)\\
         \Ensure  $\M_t$ (Vokabular)\\
-
-        \State $S_t \gets \Call{Sample}{V_{L,t}}$ \Comment{Wähle eine Teilmenge $S_t \subseteq V_{L,t}$ aus}
-        \State $\M_t \gets \bigcup_{v \in S_t} \Call{getTextAsSet}{v}$ \Comment{Menge aller Wörter}
-        \State $cLabelWords \gets (|\L_t|+1) \times |\M_t|$-Array, mit 0en initialisiert\\
-
-        \ForAll{$v \in V_{L,t}$} \Comment{Gehe jeden Text Wort für Wort durch}
+        \State $S_t \gets \Call{Sample}{V_{L,t}}$\label{alg4:l6} \Comment{Wähle eine Teilmenge $S_t \subseteq V_{L,t}$ aus}
+        \State $\M_t \gets \emptyset$ \Comment{Menge aller Wörter}
+        \State $cLabelWords \gets$ Array aus $(|\L_t|+1)$ assoziativen Arrays\label{alg4:l8}
+        \ForAll{$v \in S_t$} \label{alg4:l10}\Comment{Gehe jeden Text Wort für Wort durch}
             \State $i \gets \Call{getLabel}{v}$
             \State $i \gets \Call{getLabel}{v}$
-            \ForAll{$(word, occurences) \in \Call{getTextAsMultiset}{v}$}
-                \State $cLabelWords[i][word] \gets cLabelWords[i][word] + occurences$
-                \State $cLabelWords[i][|\L_t|] \gets cLabelWords[i][|\L_t|] + occurences$
+            \ForAll{$(word, haeufigkeit) \in \Call{getTextAsMultiset}{v}$}
+                \State $cLabelWords[i][word] \gets cLabelWords[i][word] + haeufigkeit$
+                \State $cLabelWords[|\L_t|][word] \gets cLabelWords[i][|\L_t|] + haeufigkeit$
+                \State $\M_t = \M_t \cup \Set{word}$
             \EndFor
             \EndFor
-        \EndFor
-        \\
+        \EndFor\label{alg4:l12}
+		\\
         \ForAll{Wort $w \in \M_t$}
         \ForAll{Wort $w \in \M_t$}
-            \State $p \gets $ Array aus $|\L_t|$ Zahlen in $[0, 1]$
+            \State $p \gets $ Array aus $|\L_t|$ Zahlen in $[0, 1]$\label{alg4:l17}
             \ForAll{Label $i \in \L_t$}
             \ForAll{Label $i \in \L_t$}
                 \State $p[i] \gets \frac{cLabelWords[i][w]}{cLabelWords[i][|\L_t|]}$
                 \State $p[i] \gets \frac{cLabelWords[i][w]}{cLabelWords[i][|\L_t|]}$
-            \EndFor
+            \EndFor\label{alg4:l19}
 
 
-            \State $w$.gini $\gets 0$
+            \State $w$.gini $\gets 0$ \label{alg4:l20}
             \ForAll{$i \in 1, \dots, |\L_t|$}
             \ForAll{$i \in 1, \dots, |\L_t|$}
                 \State $w$.gini $\gets$ $w$.gini + $p[i]^2$
                 \State $w$.gini $\gets$ $w$.gini + $p[i]^2$
-            \EndFor
+            \EndFor\label{alg4:l22}
         \EndFor
         \EndFor
 
 
-        \State $\M_t \gets \Call{SortDescendingByGini}{\M_t}$
-        \State \Return $\Call{Top}{\M_t, m}$
+        \State $\M_t \gets \Call{SortDescendingByGini}{\M_t}$\label{alg4:l23}
+        \State \Return $\Call{Top}{\M_t, m}$\label{alg4:l24}
     \end{algorithmic}
     \end{algorithmic}
 \caption{Vokabularbestimmung}
 \caption{Vokabularbestimmung}
 \label{alg:vokabularbestimmung}
 \label{alg:vokabularbestimmung}