diff --git a/documents/Proseminar-Netzwerkanalyse/Analyse.tex b/documents/Proseminar-Netzwerkanalyse/Analyse.tex index 1c6d346..e159c79 100644 --- a/documents/Proseminar-Netzwerkanalyse/Analyse.tex +++ b/documents/Proseminar-Netzwerkanalyse/Analyse.tex @@ -10,10 +10,10 @@ und des CORA-Datensatzes\footnote{http://people.cs.umass.edu/~mccallum/data/cora gezeigt (vgl. \cref{tab:datasets}), dass die Klassifikationsgüte nicht wesentlich von der Anzahl der Wörter mit höchstem Gini-Koeffizient $m$ abhängt. Des Weiteren betrug die Ausführungszeit auf einem Kern eines Intel Xeon $\SI{2.5}{\GHz}$ Servers mit -$\SI{32}{\giga\byte}$ RAM für den DBLP-Datensatz unter $\SI{25}{\second}$, +$\SI{32}{\giga\byte}$~RAM für den DBLP-Datensatz unter $\SI{25}{\second}$, für den CORA-Datensatz sogar unter $\SI{5}{\second}$. Dabei wurde eine -für CORA eine Klassifikationsgüte von 82\% - 84\% und auf den DBLP-Daten -von 61\% - 66\% erreicht. +für CORA eine Klassifikationsgüte von \SIrange{82}{84}{\percent} und +auf den DBLP-Daten von \SIrange{61}{66}{\percent} erreicht. \begin{table}[htp] \centering @@ -22,7 +22,7 @@ von 61\% - 66\% erreicht. \textbf{CORA} & \num{19396} & \num{14814} & \num{75021} & 5 \\ \textbf{DBLP} & \num{806635} & \num{18999 } & \num{4414135} & 5 \\\hline \end{tabular} - \caption{Datensätze, die für die experimentelle analyse benutzt wurden} + \caption{Datensätze, die für die experimentelle Analyse benutzt wurden} \label{tab:datasets} \end{table} diff --git a/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf b/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf index 6f641b3..889dc04 100644 Binary files a/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf and b/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf differ diff --git a/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.tex b/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.tex index 8d06974..16be252 100644 --- a/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.tex +++ b/documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.tex @@ -30,6 +30,7 @@ \allowdisplaybreaks \usetikzlibrary{backgrounds} \usepackage[binary-units=true]{siunitx} +\sisetup{range-phrase=--} \usepackage{mystyle} \usepackage{microtype} diff --git a/documents/Proseminar-Netzwerkanalyse/Ausblick.tex b/documents/Proseminar-Netzwerkanalyse/Ausblick.tex index 4931f79..74a7a53 100644 --- a/documents/Proseminar-Netzwerkanalyse/Ausblick.tex +++ b/documents/Proseminar-Netzwerkanalyse/Ausblick.tex @@ -6,7 +6,7 @@ können. Außerdem könnte so der Gini-Koeffizient ein besseres Maß für die Gleichheit von Texten werden. Eine weitere Verbesserungsmöglichkeit besteht in der Textanalyse. Momentan ist -diese noch sehr einfach gestrickt und ignoriert die Reihenfolge von Wortern +diese noch sehr einfach gestrickt und ignoriert die Reihenfolge von Wörtern beziehungsweise Wertungen davon. So könnte man den DYCOS-Algorithmus in einem sozialem Netzwerk verwenden wollen, in dem politische Parteiaffinität von einigen Mitgliedern angegeben wird um die Parteiaffinität der restlichen diff --git a/documents/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex b/documents/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex index bf93cc5..659ebb1 100644 --- a/documents/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex +++ b/documents/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex @@ -134,7 +134,7 @@ einer Wahrscheinlichkeit von $p_S$ ein struktureller Sprung durchgeführt wird. \State $M_H \gets \Call{max}{d}$ \EndIf \\ - \State \textit{//Wähle aus der Menge der häufigsten Beschriftungen $M_H$ zufällig eine aus} + \State \Comment{Wähle aus der Menge der häufigsten Beschriftungen $M_H$ zufällig eine aus} \State $label \gets \Call{Random}{M_H}$ \State $v.\Call{AddLabel}{label}$ \Comment{und weise dieses $v$ zu} \EndFor diff --git a/documents/Proseminar-Netzwerkanalyse/Einleitung.tex b/documents/Proseminar-Netzwerkanalyse/Einleitung.tex index 30d26b2..6d30be8 100644 --- a/documents/Proseminar-Netzwerkanalyse/Einleitung.tex +++ b/documents/Proseminar-Netzwerkanalyse/Einleitung.tex @@ -1,5 +1,5 @@ -Im Folgenden werden in \cref{sec:Motivation} einge Beispiele, in denen -der DYCOS-Algorithmus anwendung finden könnte, dargelegt. In +Im Folgenden werden in \cref{sec:Motivation} einige Beispiele, in denen +der DYCOS-Algorithmus Anwendung finden könnte, dargelegt. In \cref{sec:Problemstellung} wird die Problemstellung formal definiert und in \cref{sec:Herausforderungen} wird auf besondere Herausforderungen der Aufgabenstellung hingewiesen. diff --git a/documents/Proseminar-Netzwerkanalyse/Related-Work.tex b/documents/Proseminar-Netzwerkanalyse/Related-Work.tex index 86d5a0c..811d939 100644 --- a/documents/Proseminar-Netzwerkanalyse/Related-Work.tex +++ b/documents/Proseminar-Netzwerkanalyse/Related-Work.tex @@ -1,6 +1,6 @@ %!TEX root = Ausarbeitung-Thoma.tex Sowohl das Problem der Knotenklassifikation, als auch das der -Textklassifikation, wurde bereits in verschiedenen Kontexten. Jedoch scheien +Textklassifikation, wurde bereits in verschiedenen Kontexten. Jedoch scheinen bisher entweder nur die Struktur des zugrundeliegenden Graphen oder nur Eigenschaften der Texte verwendet worden zu sein. @@ -16,14 +16,15 @@ Spezialfall der Textklassifikation mit einem zugrundeliegenden Graphen ein. Die vorgestellten Methoden zur Textklassifikation variieren außerdem sehr stark. Es gibt Verfahren, die auf dem bag-of-words-Modell basieren \cite{Ko:2012:STW:2348283.2348453} wie es auch im DYCOS-Algorithmus verwendet -wird. Aber es gibt auch Verfahren, die auf dem Expectation-Maximization- -Algorithmus basieren \cite{Nigam99textclassification} oder Support Vector +wird. Aber es gibt auch Verfahren, die auf dem +Expectation-Maximization-Algorithmus basieren \cite{Nigam99textclassification} +oder Support Vector Machines nutzen \cite{Joachims98textcategorization}. Es wäre also gut Vorstellbar, die Art und Weise wie die Texte in die Klassifikation des DYCOS-Algorithmus einfließen zu variieren. Allerdings ist -dabei darauf hinzuweisen, dass die im Folgeden vorgestellte Verwendung der +dabei darauf hinzuweisen, dass die im Folgenden vorgestellte Verwendung der Texte sowohl einfach zu implementieren ist und nur lineare Vorverarbeitungszeit in Anzahl der Wörter des Textes hat, als auch es erlaubt einzelne Knoten zu -klassifizieren, wobei der Graph nur lokal um den zu klassifizerenden Knoten +klassifizieren, wobei der Graph nur lokal um den zu klassifizierenden Knoten betrachten werden muss. diff --git a/documents/Proseminar-Netzwerkanalyse/SchwaechenVerbesserungen.tex b/documents/Proseminar-Netzwerkanalyse/SchwaechenVerbesserungen.tex index 65ea2a7..557fe58 100644 --- a/documents/Proseminar-Netzwerkanalyse/SchwaechenVerbesserungen.tex +++ b/documents/Proseminar-Netzwerkanalyse/SchwaechenVerbesserungen.tex @@ -35,7 +35,7 @@ sowie die Kante $(v_2, v_1)$ hinzu.\\ Nun wird der DYCOS-Algorithmus auf diesen Knoten angewendet und $v_2$ mit $A$ beschriftet.\\ Zum Zeitpunkt $t=3$ komme ein Knoten $v_3$, der mit $B$ beschriftet ist, und -die Kante $(v_2, v_3)$ hinzu. +die Kante $(v_2, v_3)$ hinzu. \Cref{fig:Formen} visualisiert diesen Vorgang. \begin{figure}[ht] \centering @@ -56,16 +56,16 @@ die Kante $(v_2, v_3)$ hinzu. \input{figures/graph-t4.tex} \label{fig:graph-t4} }% - \label{Formen} \caption{Minimalbeispiel für den Einfluss früherer DYCOS-Anwendungen} + \label{fig:Formen} \end{figure} Würde man nun den DYCOS-Algorithmus erst jetzt, also anstelle von Zeitpunkt $t=2$ zum Zeitpunkt $t=3$ auf den Knoten $v_2$ anwenden, so würde eine -$50\%$-Wahrscheinlichkeit bestehen, dass dieser mit $B$ beschriftet wird. Aber -in diesem Beispiel wurde der Knoten schon zum Zeitpunkt $t=2$ beschriftet. -Obwohl es in diesem kleinem Beispiel noch keine Rolle spielt, wird das Problem -klar, wenn man weitere Knoten einfügt: +\SI{50}{\percent}-Wahrscheinlichkeit bestehen, dass dieser mit $B$ beschriftet +wird. Aber in diesem Beispiel wurde der Knoten schon zum Zeitpunkt $t=2$ +beschriftet. Obwohl es in diesem kleinem Beispiel noch keine Rolle spielt, wird +das Problem klar, wenn man weitere Knoten einfügt: Wird zum Zeitpunkt $t=4$ ein unbeschrifteter Knoten $v_4$ und die Kanten $(v_1, v_4)$, $(v_2, v_4)$, $(v_3, v_4)$ hinzugefügt, so ist die diff --git a/documents/Proseminar-Netzwerkanalyse/Sprungtypen.tex b/documents/Proseminar-Netzwerkanalyse/Sprungtypen.tex index 52785c3..1112e1c 100644 --- a/documents/Proseminar-Netzwerkanalyse/Sprungtypen.tex +++ b/documents/Proseminar-Netzwerkanalyse/Sprungtypen.tex @@ -1,6 +1,6 @@ \subsection{Sprungtypen}\label{sec:sprungtypen} Die beiden bereits definierten Sprungtypen, der strukturelle Sprung sowie der -inhaltliche Zweifachsprung werden im folgenden erklärt. +inhaltliche Zweifachsprung werden im Folgenden erklärt. \goodbreak Der strukturelle Sprung entspricht einer zufälligen Wahl eines Nachbarknotens, wie es in \cref{alg:DYCOS-structural-hop} gezeigt wird. @@ -20,27 +20,28 @@ wie es in \cref{alg:DYCOS-structural-hop} gezeigt wird. Bei inhaltlichen Zweifachsprüngen ist jedoch nicht sinnvoll so strikt nach der Definition vorzugehen, also direkt von einem strukturellem Knoten $v \in V_t$ zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen und von diesem -wieder zu einem verbundenem strukturellem Knoten $v' \in V_t$. Würde man dies -machen, wäre zu befürchten, dass aufgrund von Homonymen die Qualität der +wieder zu einem verbundenem strukturellem Knoten $v' \in V_t$. Würde dies +gemacht werden, wäre zu befürchten, dass aufgrund von Homonymen die Qualität der Klassifizierung verringert wird. So hat \enquote{Brücke} im Deutschen viele Bedeutungen. Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der objektorientierten Programmierung oder ein Teil des Gehirns. -Deshalb wird für jeden Knoten $v$, von dem aus man einen inhaltlichen -Zweifachsprung machen will folgende Textanalyse durchgeführt: +Deshalb wird für jeden Knoten $v$, von dem aus ein inhaltlicher +Zweifachsprung gemacht werden soll folgende Textanalyse durchgeführt: \begin{enumerate}[label=C\arabic*,ref=C\arabic*] \item \label{step:c1} Gehe alle in $v$ startenden Random Walks der Länge $2$ durch und erstelle eine Liste $L$ der erreichbaren Knoten $v'$. Speichere außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar sind. - \item \label{step:c2} Betrachte im folgenden nur die Top-$q$ Knoten bzgl. der - Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$ + \item \label{step:c2} Betrachte im Folgenden nur die Top-$q$ Knoten bzgl. + der Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$ eine zu wählende Konstante des DYCOS-Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.} Diese Knotenmenge heiße im Folgenden $T(v)$ und $p(v, v')$ sei die Anzahl der Pfade von $v$ über einen Wortknoten nach $v'$. - \item \label{step:c3} Wähle mit Wahrscheinlichkeit $\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$ - den Knoten $v' \in T(v)$ als Ziel des Zweifachsprungs. + \item \label{step:c3} Wähle mit Wahrscheinlichkeit + $\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$ den Knoten $v' \in T(v)$ + als Ziel des Zweifachsprungs. \end{enumerate} Konkret könnte also ein inhaltlicher Zweifachsprung sowie wie in diff --git a/documents/Proseminar-Netzwerkanalyse/Vokabularbestimmung.tex b/documents/Proseminar-Netzwerkanalyse/Vokabularbestimmung.tex index ed038a1..9263f7a 100644 --- a/documents/Proseminar-Netzwerkanalyse/Vokabularbestimmung.tex +++ b/documents/Proseminar-Netzwerkanalyse/Vokabularbestimmung.tex @@ -4,9 +4,9 @@ liegt es in unserem Interesse so wenig Wörter wie möglich ins Vokabular aufzunehmen. Insbesondere sind Wörter nicht von Interesse, die in fast allen Texten vorkommen, wie im Deutschen z.~B. \enquote{und}, \enquote{mit} und die Pronomen. Es ist wünschenswert Wörter zu -wählen, die die Texte möglichst stark voneinander Unterscheiden. Der DYCOS- -Algorithmus wählt die Top-$m$ dieser Wörter als Vokabular, wobei $m \in -\mathbb{N}$ eine Festzulegende Konstante ist. In \cite[S. 365]{aggarwal2011} +wählen, die die Texte möglichst stark voneinander Unterscheiden. Der +DYCOS-Algorithmus wählt die Top-$m$ dieser Wörter als Vokabular, wobei +$m \in \mathbb{N}$ eine Festzulegende Konstante ist. In \cite[S. 365]{aggarwal2011} wird der Einfluss von $m \in \Set{5,10, 15,20}$ auf die Klassifikationsgüte untersucht und festgestellt, dass die Klassifikationsgüte mit größerem $m$ sinkt, sie also für $m=5$ für den DBLP-Datensatz am höchsten ist. Für den CORA- @@ -34,7 +34,7 @@ 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 +Elemente von $cLabelWords$ dienen 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. @@ -53,15 +53,16 @@ Koeffizienten zurückgegeben. $f:V_{L,t} \rightarrow \L_t$ (Beschriftungsfunktion),\\ $m$ (Gewünschte Vokabulargröße) \Ensure $\M_t$ (Vokabular)\\ - \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 $S_t \gets \Call{Sample}{V_{L,t}}$\label{alg4:l6} \Comment{Wähle $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} + \ForAll{$v \in S_t$} \label{alg4:l10} \State $i \gets \Call{getLabel}{v}$ - \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}$ + \State \Comment{$w$ ist das Wort, $c$ ist die Häufigkeit} + \ForAll{$(w, c) \in \Call{getTextAsMultiset}{v}$} + \State $cLabelWords[i][w] \gets cLabelWords[i][w] + c$ + \State $cLabelWords[|\L_t|][w] \gets cLabelWords[i][|\L_t|] + c$ + \State $\M_t = \M_t \cup \Set{w}$ \EndFor \EndFor\label{alg4:l12} \\ diff --git a/documents/Proseminar-Netzwerkanalyse/abstract.tex b/documents/Proseminar-Netzwerkanalyse/abstract.tex index 2686ff9..a367fe5 100644 --- a/documents/Proseminar-Netzwerkanalyse/abstract.tex +++ b/documents/Proseminar-Netzwerkanalyse/abstract.tex @@ -5,10 +5,10 @@ die bisher noch keine Beschriftung haben. Dieser Vorgang wird \enquote{Klassifizierung} genannt. Dazu verwendet er die Struktur des Graphen sowie textuelle Informationen, die den Knoten zugeordnet sind. Die in \cite{aggarwal2011} beschriebene experimentelle Analyse ergab, dass er auch auf -dynamischen Graphen mit $\num{19396}$ bzw. $\num{806635}$ Knoten, von denen nur -$\num{14814}$ bzw. $\num{18999}$ beschriftet waren, innerhalb von weniger als -einer Minute auf einem Kern einer Intel Xeon 2.5GHz CPU mit 32G RAM ausgeführt -werden kann.\\ +dynamischen Graphen mit 19\,396 bzw. 806\,635 Knoten, von denen nur +14\,814 bzw. 18\,999 beschriftet waren, innerhalb von weniger als +einer Minute auf einem Kern einer Intel Xeon 2.5\,GHz~CPU mit 32\,G~RAM +ausgeführt werden kann.\\ Zusätzlich wird \cite{aggarwal2011} kritisch Erörtert und und es werden mögliche Erweiterungen des DYCOS-Algorithmus vorgeschlagen. diff --git a/documents/Proseminar-Netzwerkanalyse/schwaechenPaper.tex b/documents/Proseminar-Netzwerkanalyse/schwaechenPaper.tex deleted file mode 100644 index 1e5ca6b..0000000 --- a/documents/Proseminar-Netzwerkanalyse/schwaechenPaper.tex +++ /dev/null @@ -1,23 +0,0 @@ -\subsection{Schwächen des Papers} -In \cite{aggarwal2011} wurde eine experimentelle Analyse mithilfe -des DBLP-Datensatzes\footnote{http://dblp.uni-trier.de/} und des -CORA-Datensatzes\footnote{\href{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}} durchgeführt. -Die Ergebnisse dieser Analyse können aus folgenden Gründen -nicht überprüft werden: -\begin{itemize} - \item Der Parameter $a \in \mathbb{N}$, der die Anzahl der ausgehenden Kanten - aller Wortknoten beschränkt, wird erst mit der Experimentellen - Analyse auf S.~362 eingeführt. Es ist nicht klar, wie entschieden - wird welche Kanten gespeichert werden und welche nicht. - \item Für die Analyse der CORA-Datensatzes analysiert. - Dieser beinhaltet Forschungsarbeiten, wobei die Forschungsgebiete die - in einen Baum mit 73 Blättern eingeordnet wurden. Aus diesen 73 - Blättern wurden 5 Klassen extrahiert und der Graph, der keine - Zeitpunkte beinhaltet, künstlich in 10 Graphen mit Zeitpunkten - unterteilt. Wie jedoch diese Unterteilung genau durchgeführt wurde - kann nicht nachvollzogen werden. - \item Der auf S. 360 in \enquote{Algorithm 1} vorgestellte Pseudocode soll - den DYCOS-Algorithmus darstellen. Allerdings werden die bereits - klassifizierten Knoten $\T_t$ neu klassifiziert und mit $\theta$ die - Klassifikationsgüte gemessen. -\end{itemize}