mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-19 11:38:05 +02:00
Add line breaks
This commit is contained in:
parent
59a30febaf
commit
f02d9ab873
14 changed files with 265 additions and 294 deletions
|
@ -1,10 +1,9 @@
|
|||
Für den DYCOS-Algorithmus wurde in \cite{aggarwal2011} bewiesen,
|
||||
dass sich nach Ausführung von DYCOS für einen unbeschrifteten
|
||||
Knoten mit einer Wahrscheinlichkeit von höchstens
|
||||
$(|\L_t|-1)\cdot e^{-l \cdot b^2 / 2}$ eine Knotenbeschriftung ergibt, deren
|
||||
relative Häufigkeit weniger als $b$ der häufigsten Beschriftung ist.
|
||||
Dabei ist $|\L_t|$ die Anzahl der Beschriftungen und $l$ die Länge der
|
||||
Random-Walks.
|
||||
Für den DYCOS-Algorithmus wurde in \cite{aggarwal2011} bewiesen, dass sich nach
|
||||
Ausführung von DYCOS für einen unbeschrifteten Knoten mit einer
|
||||
Wahrscheinlichkeit von höchstens $(|\L_t|-1)\cdot e^{-l \cdot b^2 / 2}$ eine
|
||||
Knotenbeschriftung ergibt, deren relative Häufigkeit weniger als $b$ der
|
||||
häufigsten Beschriftung ist. Dabei ist $|\L_t|$ die Anzahl der Beschriftungen
|
||||
und $l$ die Länge der Random-Walks.
|
||||
|
||||
Außerdem wurde experimentell anhand des DBLP-Datensatzes\footnote{http://dblp.uni-trier.de/}
|
||||
und des CORA-Datensatzes\footnote{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}
|
||||
|
@ -27,10 +26,10 @@ von 61\% - 66\% erreicht.
|
|||
\label{tab:datasets}
|
||||
\end{table}
|
||||
|
||||
Obwohl es sich nicht sagen lässt,
|
||||
wie genau die Ergebnisse aus \cite{aggarwal2011} zustande gekommen sind,
|
||||
eignet sich das Kreuzvalidierungsverfahren zur Bestimmung der Klassifikationsgüte
|
||||
wie es in \cite{Lavesson,Stone1974} vorgestellt wird:
|
||||
Obwohl es sich nicht sagen lässt, wie genau die Ergebnisse aus
|
||||
\cite{aggarwal2011} zustande gekommen sind, eignet sich das
|
||||
Kreuzvalidierungsverfahren zur Bestimmung der Klassifikationsgüte wie es in
|
||||
\cite{Lavesson,Stone1974} vorgestellt wird:
|
||||
\begin{enumerate}
|
||||
\item Betrachte nur $V_{L,T}$.
|
||||
\item Unterteile $V_{L,T}$ zufällig in $k$ disjunkte Mengen $M_1, \dots, M_k$.
|
||||
|
@ -40,5 +39,3 @@ wie es in \cite{Lavesson,Stone1974} vorgestellt wird:
|
|||
\end{enumerate}
|
||||
|
||||
Es wird $k=10$ vorgeschlagen.
|
||||
|
||||
|
||||
|
|
|
@ -1,26 +1,22 @@
|
|||
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
|
||||
Porter-Stemming-Algorithmus verwendet werden. Durch diese Maßnahme wird das
|
||||
Vokabular kleiner gehalten wodurch mehr Artikel mit einander
|
||||
durch Vokabular verbunden werden können. Außerdem könnte so der
|
||||
Gini-Koeffizient ein besseres Maß für die Gleichheit von Texten werden.
|
||||
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 Porter-Stemming-Algorithmus verwendet werden. Durch diese Maßnahme wird das Vokabular kleiner
|
||||
gehalten wodurch mehr Artikel mit einander durch Vokabular verbunden werden
|
||||
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 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 Mitglieder zu bestimmen.
|
||||
In diesem Fall macht es jedoch einen wichtigen Unterschied, ob jemand
|
||||
über eine Partei gutes oder schlechtes schreibt.
|
||||
Eine weitere Verbesserungsmöglichkeit besteht in der Textanalyse. Momentan ist
|
||||
diese noch sehr einfach gestrickt und ignoriert die Reihenfolge von Wortern
|
||||
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
|
||||
Mitglieder zu bestimmen. In diesem Fall macht es jedoch einen wichtigen
|
||||
Unterschied, ob jemand über eine Partei gutes oder schlechtes schreibt.
|
||||
|
||||
Eine einfache Erweiterung des DYCOS-Algorithmus wäre der Umgang mit
|
||||
mehreren Beschriftungen.
|
||||
Eine einfache Erweiterung des DYCOS-Algorithmus wäre der Umgang mit mehreren
|
||||
Beschriftungen.
|
||||
|
||||
DYCOS beschränkt sich bei inhaltlichen Zweifachsprüngen
|
||||
auf die Top-$q$-Wortknoten, also die $q$ ähnlichsten Knoten
|
||||
gemessen mit der Aggregatanalyse, allerdings wurde bisher noch nicht
|
||||
untersucht, wie der Einfluss von $q \in \mathbb{N}$ auf die
|
||||
Klassifikationsgüte ist.
|
||||
DYCOS beschränkt sich bei inhaltlichen Zweifachsprüngen auf die
|
||||
Top-$q$-Wortknoten, also die $q$ ähnlichsten Knoten gemessen mit der
|
||||
Aggregatanalyse, allerdings wurde bisher noch nicht untersucht, wie der
|
||||
Einfluss von $q \in \mathbb{N}$ auf die Klassifikationsgüte ist.
|
||||
|
|
|
@ -1,45 +1,37 @@
|
|||
\subsection{Überblick}
|
||||
DYCOS (\underline{DY}namic \underline{C}lassification
|
||||
algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein
|
||||
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt
|
||||
wurde.
|
||||
DYCOS (\underline{DY}namic \underline{C}lassification algorithm with
|
||||
c\underline{O}ntent and \underline{S}tructure) ist ein
|
||||
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011}
|
||||
vorgestellt wurde.
|
||||
|
||||
Ein zentrales Element des DYCOS-Algorithmus ist der sog.
|
||||
{\it Random Walk}:
|
||||
Ein zentrales Element des DYCOS-Algorithmus ist der sog. {\it Random Walk}:
|
||||
|
||||
\begin{definition}[Random Walk, Sprung]
|
||||
Sei $G = (V, E)$ mit $E \subseteq V \times V$ ein Graph und
|
||||
$v_0 \in V$ ein Knoten des Graphen.
|
||||
|
||||
%Sei außerdem $f: V \rightarrow \mathcal{P}(V)$ eine Abbildung
|
||||
%mit der Eigenschaft:
|
||||
%\[ \forall v \in V \forall v' \in f(v): \exists \text{Weg von } v \text{ nach } v'\]
|
||||
|
||||
Ein Random Walk der Länge $l$ auf $G$, startend bei $v_0$ ist
|
||||
nun der zeitdiskrete stochastische Prozess, der $v_i$
|
||||
auf einen zufällig gewählten Nachbarn $v_{i+1}$ abbildet
|
||||
(für $i \in 0, \dots, l-1$).
|
||||
Die Abbildung $v_i \mapsto v_{i+1}$ heißt ein Sprung.
|
||||
Ein Random Walk der Länge $l$ auf $G$, startend bei $v_0$ ist nun der
|
||||
zeitdiskrete stochastische Prozess, der $v_i$ auf einen zufällig gewählten
|
||||
Nachbarn $v_{i+1}$ abbildet (für $i \in 0, \dots, l-1$). Die Abbildung $v_i
|
||||
\mapsto v_{i+1}$ heißt ein Sprung.
|
||||
\end{definition}
|
||||
|
||||
Der DYCOS-Algorithmus klassifiziert einzelne Knoten, indem $r$ Random Walks der Länge $l$,
|
||||
startend bei dem zu klassifizierenden Knoten $v$ gemacht werden. Dabei
|
||||
werden die Beschriftungen der besuchten Knoten gezählt. Die Beschriftung, die am häufigsten
|
||||
vorgekommen ist, wird als Beschriftung für $v$ gewählt.
|
||||
DYCOS nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass
|
||||
Knoten, die nur wenige Hops von einander entfernt sind, häufig auch
|
||||
ähnlich sind \cite{bhagat}. Der DYCOS-Algorithmus arbeitet jedoch nicht
|
||||
direkt auf dem Graphen, sondern erweitert ihn mit
|
||||
Hilfe der zur Verfügung stehenden Texte. Wie diese Erweiterung
|
||||
erstellt wird, wird im Folgenden erklärt.\\
|
||||
Der DYCOS-Algorithmus klassifiziert einzelne Knoten, indem $r$ Random Walks der
|
||||
Länge $l$, startend bei dem zu klassifizierenden Knoten $v$ gemacht werden.
|
||||
Dabei werden die Beschriftungen der besuchten Knoten gezählt. Die Beschriftung,
|
||||
die am häufigsten vorgekommen ist, wird als Beschriftung für $v$ gewählt. DYCOS
|
||||
nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass Knoten, die nur
|
||||
wenige Hops von einander entfernt sind, häufig auch ähnlich sind \cite{bhagat}.
|
||||
Der DYCOS-Algorithmus arbeitet jedoch nicht direkt auf dem Graphen, sondern
|
||||
erweitert ihn mit Hilfe der zur Verfügung stehenden Texte. Wie diese
|
||||
Erweiterung erstellt wird, wird im Folgenden erklärt.\\
|
||||
Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das
|
||||
charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann
|
||||
und warum nicht einfach jedes Wort in das Vokabular aufgenommen wird,
|
||||
wird in \cref{sec:vokabularbestimmung} erläutert.\\
|
||||
Nach der Bestimmung des Vokabulars wird für
|
||||
jedes Wort im Vokabular ein Wortknoten zum Graphen hinzugefügt. Alle
|
||||
Knoten, die der Graph zuvor hatte, werden nun \enquote{Strukturknoten}
|
||||
genannt.
|
||||
charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann und
|
||||
warum nicht einfach jedes Wort in das Vokabular aufgenommen wird, wird in
|
||||
\cref{sec:vokabularbestimmung} erläutert.\\
|
||||
Nach der Bestimmung des Vokabulars wird für jedes Wort im Vokabular ein
|
||||
Wortknoten zum Graphen hinzugefügt. Alle Knoten, die der Graph zuvor hatte,
|
||||
werden nun \enquote{Strukturknoten} genannt.
|
||||
Ein Strukturknoten $v$ wird genau dann mit einem Wortknoten $w \in W_t$
|
||||
verbunden, wenn $w$ in einem Text von $v$ vorkommt. \Cref{fig:erweiterter-graph}
|
||||
zeigt beispielhaft den so entstehenden, semi-bipartiten Graphen.
|
||||
|
@ -57,8 +49,8 @@ jedes Wortes berücksichtigt.
|
|||
\label{fig:erweiterter-graph}
|
||||
\end{figure}
|
||||
|
||||
Entsprechend werden zwei unterschiedliche Sprungtypen unterschieden,
|
||||
die strukturellen Sprünge und inhaltliche Zweifachsprünge:
|
||||
Entsprechend werden zwei unterschiedliche Sprungtypen unterschieden, die
|
||||
strukturellen Sprünge und inhaltliche Zweifachsprünge:
|
||||
|
||||
\begin{definition}[struktureller Sprung]
|
||||
Sei $G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
||||
|
@ -69,48 +61,43 @@ die strukturellen Sprünge und inhaltliche Zweifachsprünge:
|
|||
ein \textit{struktureller Sprung}.
|
||||
\end{definition}
|
||||
\goodbreak
|
||||
Im Gegensatz dazu benutzten inhaltliche Zweifachsprünge
|
||||
tatsächlich die Grapherweiterung:
|
||||
Im Gegensatz dazu benutzten inhaltliche Zweifachsprünge tatsächlich die
|
||||
Grapherweiterung:
|
||||
\begin{definition}[inhaltlicher Zweifachsprung]
|
||||
Sei $G_t = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
||||
um die Wortknoten $W_{t}$ erweiterte Graph.
|
||||
Sei $G_t = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der um die
|
||||
Wortknoten $W_{t}$ erweiterte Graph.
|
||||
|
||||
Dann heißt das zufällige wechseln des aktuell betrachteten
|
||||
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in W_t$
|
||||
und weiter zu einem zufälligem Nachbar $v' \in V_t$ von $w$
|
||||
ein inhaltlicher Zweifachsprung.
|
||||
Dann heißt das zufällige wechseln des aktuell betrachteten Knoten $v \in
|
||||
V_t$ zu einem benachbartem Knoten $w \in W_t$ und weiter zu einem
|
||||
zufälligem Nachbar $v' \in V_t$ von $w$ ein inhaltlicher Zweifachsprung.
|
||||
\end{definition}
|
||||
|
||||
Jeder inhaltliche Zweifachsprung beginnt und endet also in einem Strukturknoten,
|
||||
springt über einen Wortknoten und ist ein Pfad der Länge~2.
|
||||
Jeder inhaltliche Zweifachsprung beginnt und endet also in einem
|
||||
Strukturknoten, springt über einen Wortknoten und ist ein Pfad der Länge~2.
|
||||
|
||||
Ob in einem Sprung der Random Walks ein struktureller Sprung oder
|
||||
ein inhaltlicher Zweifachsprung gemacht wird, wird jedes mal zufällig
|
||||
neu entschieden. Dafür wird der Parameter $0 \leq p_S \leq 1$ für den Algorithmus
|
||||
gewählt. Mit einer Wahrscheinlichkeit von $p_S$ wird ein struktureller
|
||||
Sprung durchgeführt und mit einer Wahrscheinlichkeit
|
||||
von $(1-p_S)$ ein modifizierter inhaltlicher Zweifachsprung, wie er in
|
||||
\cref{sec:sprungtypen} erklärt wird, gemacht. Der
|
||||
Parameter $p_S$ gibt an, wie wichtig die Struktur des Graphen im Verhältnis
|
||||
zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich
|
||||
die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des
|
||||
Graphen.
|
||||
Ob in einem Sprung der Random Walks ein struktureller Sprung oder ein
|
||||
inhaltlicher Zweifachsprung gemacht wird, wird jedes mal zufällig neu
|
||||
entschieden. Dafür wird der Parameter $0 \leq p_S \leq 1$ für den Algorithmus
|
||||
gewählt. Mit einer Wahrscheinlichkeit von $p_S$ wird ein struktureller Sprung
|
||||
durchgeführt und mit einer Wahrscheinlichkeit von $(1-p_S)$ ein modifizierter
|
||||
inhaltlicher Zweifachsprung, wie er in \cref{sec:sprungtypen} erklärt wird,
|
||||
gemacht. Der Parameter $p_S$ gibt an, wie wichtig die Struktur des Graphen im
|
||||
Verhältnis zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich
|
||||
die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des Graphen.
|
||||
|
||||
Die Vokabularbestimmung kann zu jedem Zeitpunkt $t$ durchgeführt
|
||||
werden, muss es aber nicht.
|
||||
Die Vokabularbestimmung kann zu jedem Zeitpunkt $t$ durchgeführt werden, muss
|
||||
es aber nicht.
|
||||
|
||||
In \cref{alg:DYCOS} steht der DYCOS-Algorithmus in Form von Pseudocode:
|
||||
In \cref{alg1:l8} wird für jeden unbeschrifteten Knoten
|
||||
durch die folgenden Zeilen eine Beschriftung gewählt.
|
||||
|
||||
\Cref{alg1:l10} führt $r$ Random Walks durch.
|
||||
In \cref{alg1:l11} wird eine temporäre Variable für den aktuell
|
||||
betrachteten Knoten angelegt.
|
||||
\Cref{alg1:l10} führt $r$ Random Walks durch. In \cref{alg1:l11} wird eine
|
||||
temporäre Variable für den aktuell betrachteten Knoten angelegt.
|
||||
|
||||
In \cref{alg1:l12} bis \cref{alg1:l21} werden einzelne Random Walks
|
||||
der Länge $l$ durchgeführt, wobei die beobachteten Beschriftungen
|
||||
gezählt werden und mit einer Wahrscheinlichkeit von $p_S$ ein
|
||||
struktureller Sprung durchgeführt wird.
|
||||
In \cref{alg1:l12} bis \cref{alg1:l21} werden einzelne Random Walks der Länge
|
||||
$l$ durchgeführt, wobei die beobachteten Beschriftungen gezählt werden und mit
|
||||
einer Wahrscheinlichkeit von $p_S$ ein struktureller Sprung durchgeführt wird.
|
||||
|
||||
\begin{algorithm}[ht]
|
||||
\begin{algorithmic}[1]
|
||||
|
@ -158,8 +145,8 @@ struktureller Sprung durchgeführt wird.
|
|||
\end{algorithm}
|
||||
|
||||
\subsection{Datenstrukturen}
|
||||
Zusätzlich zu dem gerichteten Graphen $G_t = (V_t, E_t, V_{L,t})$
|
||||
verwaltet der DYCOS-Algorithmus zwei weitere Datenstrukturen:
|
||||
Zusätzlich zu dem gerichteten Graphen $G_t = (V_t, E_t, V_{L,t})$ verwaltet der
|
||||
DYCOS-Algorithmus zwei weitere Datenstrukturen:
|
||||
\begin{itemize}
|
||||
\item Für jeden Knoten $v \in V_t$ werden die vorkommenden Wörter,
|
||||
die auch im Vokabular $W_t$ sind,
|
||||
|
|
|
@ -1,48 +1,47 @@
|
|||
Im Folgenden werden in \cref{sec:Motivation} einge 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.
|
||||
und in \cref{sec:Herausforderungen} wird auf besondere Herausforderungen der
|
||||
Aufgabenstellung hingewiesen.
|
||||
|
||||
\subsection{Motivation}\label{sec:Motivation}
|
||||
Teilweise beschriftete Graphen sind allgegenwärtig. Publikationsdatenbanken
|
||||
mit Publikationen als Knoten, Literaturverweisen und Zitaten als Kanten
|
||||
sowie von Nutzern vergebene Beschriftungen (sog. {\it Tags}) oder Kategorien als Knotenbeschriftungen;
|
||||
Wikipedia mit Artikeln als Knoten, Links als Kanten und Kategorien
|
||||
als Knotenbeschriftungen sowie soziale Netzwerke mit Eigenschaften der Benutzer
|
||||
als Knotenbeschriftungen sind drei Beispiele dafür.
|
||||
Häufig sind Knotenbeschriftungen nur teilweise vorhanden und es ist wünschenswert die
|
||||
Teilweise beschriftete Graphen sind allgegenwärtig. Publikationsdatenbanken mit
|
||||
Publikationen als Knoten, Literaturverweisen und Zitaten als Kanten sowie von
|
||||
Nutzern vergebene Beschriftungen (sog. {\it Tags}) oder Kategorien als
|
||||
Knotenbeschriftungen; Wikipedia mit Artikeln als Knoten, Links als Kanten und
|
||||
Kategorien als Knotenbeschriftungen sowie soziale Netzwerke mit Eigenschaften
|
||||
der Benutzer als Knotenbeschriftungen sind drei Beispiele dafür. Häufig sind
|
||||
Knotenbeschriftungen nur teilweise vorhanden und es ist wünschenswert die
|
||||
fehlenden Knotenbeschriftungen automatisiert zu ergänzen.
|
||||
|
||||
\subsection{Problemstellung}\label{sec:Problemstellung}
|
||||
Gegeben ist ein Graph, dessen Knoten teilweise beschriftet sind. Zusätzlich stehen
|
||||
zu einer Teilmenge der Knoten Texte bereit. Gesucht sind nun Knotenbeschriftungen
|
||||
für alle Knoten, die bisher noch nicht beschriftet sind.\\
|
||||
Gegeben ist ein Graph, dessen Knoten teilweise beschriftet sind. Zusätzlich
|
||||
stehen zu einer Teilmenge der Knoten Texte bereit. Gesucht sind nun
|
||||
Knotenbeschriftungen für alle Knoten, die bisher noch nicht beschriftet sind.\\
|
||||
|
||||
\begin{definition}[Knotenklassifierungsproblem]\label{def:Knotenklassifizierungsproblem}
|
||||
Sei $G_t = (V_t, E_t, V_{L,t})$ ein gerichteter Graph,
|
||||
wobei $V_t$ die Menge aller Knoten,
|
||||
$E_t \subseteq V_t \times V_t$ die Kantenmenge und $V_{L,t} \subseteq V_t$ die Menge der
|
||||
beschrifteten Knoten jeweils zum Zeitpunkt $t$ bezeichne.
|
||||
Außerdem sei $L_t$ die Menge aller zum Zeitpunkt $t$ vergebenen
|
||||
Knotenbeschriftungen und $f:V_{L,t} \rightarrow L_t$ die Funktion, die einen
|
||||
Knoten auf seine Beschriftung abbildet.
|
||||
Sei $G_t = (V_t, E_t, V_{L,t})$ ein gerichteter Graph, wobei $V_t$ die
|
||||
Menge aller Knoten, $E_t \subseteq V_t \times V_t$ die Kantenmenge und
|
||||
$V_{L,t} \subseteq V_t$ die Menge der beschrifteten Knoten jeweils zum
|
||||
Zeitpunkt $t$ bezeichne. Außerdem sei $L_t$ die Menge aller zum Zeitpunkt
|
||||
$t$ vergebenen Knotenbeschriftungen und $f:V_{L,t} \rightarrow L_t$ die
|
||||
Funktion, die einen Knoten auf seine Beschriftung abbildet.
|
||||
|
||||
Weiter sei für jeden Knoten $v \in V$ eine (eventuell leere)
|
||||
Textmenge $T(v)$ gegeben.
|
||||
Weiter sei für jeden Knoten $v \in V$ eine (eventuell leere) Textmenge
|
||||
$T(v)$ gegeben.
|
||||
|
||||
Gesucht sind nun Beschriftungen für $V_t \setminus V_{L,t}$, also
|
||||
$\tilde{f}: V_t \setminus V_{L,t} \rightarrow L_t$. Die Aufgabe,
|
||||
zu $G_t$ die Funktion $\tilde{f}$ zu finden heißt \textit{Knotenklassifierungsproblem}.
|
||||
$\tilde{f}: V_t \setminus V_{L,t} \rightarrow L_t$. Die Aufgabe, zu $G_t$
|
||||
die Funktion $\tilde{f}$ zu finden heißt
|
||||
\textit{Knotenklassifierungsproblem}.
|
||||
\end{definition}
|
||||
|
||||
\subsection{Herausforderungen}\label{sec:Herausforderungen}
|
||||
Die Graphen, für die dieser Algorithmus konzipiert wurde,
|
||||
sind viele $\num{10000}$~Knoten groß und dynamisch. \enquote{Dynamisch}
|
||||
bedeutet in diesem Kontext, dass neue Knoten und eventuell auch neue
|
||||
Kanten hinzu kommen bzw. Kanten oder Knoten werden entfernt werden.
|
||||
Außerdem stehen textuelle Inhalte zu den
|
||||
Knoten bereit, die bei der Klassifikation genutzt werden können.
|
||||
Bei kleinen Änderungen sollte nicht alles nochmals berechnen
|
||||
werden müssen, sondern basierend auf zuvor
|
||||
berechneten Knotenbeschriftungen sollte die Klassifizierung angepasst werden.
|
||||
Die Graphen, für die dieser Algorithmus konzipiert wurde, sind viele
|
||||
$\num{10000}$~Knoten groß und dynamisch. \enquote{Dynamisch} bedeutet in diesem
|
||||
Kontext, dass neue Knoten und eventuell auch neue Kanten hinzu kommen bzw.
|
||||
Kanten oder Knoten werden entfernt werden. Außerdem stehen textuelle Inhalte zu
|
||||
den Knoten bereit, die bei der Klassifikation genutzt werden können. Bei
|
||||
kleinen Änderungen sollte nicht alles nochmals berechnen werden müssen, sondern
|
||||
basierend auf zuvor berechneten Knotenbeschriftungen sollte die Klassifizierung
|
||||
angepasst werden.
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
DOKUMENT = Ausarbeitung-Thoma
|
||||
SOURCE = Ausarbeitung-Thoma
|
||||
|
||||
make:
|
||||
pdflatex $(DOKUMENT).tex -output-format=pdf # Referenzen erstellen
|
||||
bibtex $(DOKUMENT)
|
||||
pdflatex $(DOKUMENT).tex -output-format=pdf # Referenzen einbinden
|
||||
pdflatex $(DOKUMENT).tex -output-format=pdf # Referenzen einbinden
|
||||
pdflatex $(SOURCE).tex -output-format=pdf # Referenzen erstellen
|
||||
bibtex $(SOURCE)
|
||||
pdflatex $(SOURCE).tex -output-format=pdf # Referenzen einbinden
|
||||
pdflatex $(SOURCE).tex -output-format=pdf # Referenzen einbinden
|
||||
make clean
|
||||
|
||||
ebook:
|
||||
latexml --dest=$(DOKUMENT).xml $(DOKUMENT).tex
|
||||
latexmlpost -dest=$(DOKUMENT).html $(DOKUMENT).xml
|
||||
ebook-convert $(DOKUMENT).html $(DOKUMENT).epub --language de --no-default-epub-cover
|
||||
latexml --dest=$(SOURCE).xml $(SOURCE).tex
|
||||
latexmlpost -dest=$(SOURCE).html $(SOURCE).xml
|
||||
ebook-convert $(SOURCE).html $(SOURCE).epub --language de --no-default-epub-cover
|
||||
|
||||
clean:
|
||||
rm -rf $(TARGET) *.class *.html *.log *.aux *.out *.thm *.idx *.toc *.ind *.ilg *.glg *.glo *.gls *.ist *.xdy *.bbl *.blg *.bak
|
||||
|
|
|
@ -5,7 +5,7 @@ written in German.
|
|||
|
||||
Ausarbeitung zum Proseminar "Netzwerkanalyse" am KIT.
|
||||
|
||||
Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation
|
||||
25-30 Minuten dauern + 10-15 Minuten Diskussion.
|
||||
Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation 25-30 Minuten
|
||||
dauern und 10-15 Minuten Diskussion.
|
||||
|
||||
Zu der Ausarbeitung gehört eine [Präsentation](https://github.com/MartinThoma/LaTeX-examples/tree/master/presentations/Proseminar-Netzwerkanalyse).
|
||||
|
|
|
@ -1,24 +1,29 @@
|
|||
%!TEX root = Ausarbeitung-Thoma.tex
|
||||
Sowohl das Problem der Knotenklassifikation, als auch das der Textklassifikation,
|
||||
wurde bereits in verschiedenen Kontexten. Jedoch scheien bisher entweder nur die Struktur des zugrundeliegenden Graphen oder nur Eigenschaften der Texte verwendet worden zu sein.
|
||||
Sowohl das Problem der Knotenklassifikation, als auch das der
|
||||
Textklassifikation, wurde bereits in verschiedenen Kontexten. Jedoch scheien
|
||||
bisher entweder nur die Struktur des zugrundeliegenden Graphen oder nur
|
||||
Eigenschaften der Texte verwendet worden zu sein.
|
||||
|
||||
So werden in \cite{bhagat,szummer} unter anderem Verfahren zur Knotenklassifikation
|
||||
beschrieben, die wie der in \cite{aggarwal2011} vorgestellte DYCOS-Algorithmus,
|
||||
um den es in dieser Ausarbeitung geht, auch auf Random Walks basieren.
|
||||
So werden in \cite{bhagat,szummer} unter anderem Verfahren zur
|
||||
Knotenklassifikation beschrieben, die wie der in \cite{aggarwal2011}
|
||||
vorgestellte DYCOS-Algorithmus, um den es in dieser Ausarbeitung geht, auch auf
|
||||
Random Walks basieren.
|
||||
|
||||
Obwohl es auch zur Textklassifikation einige Paper gibt \cite{Zhu02learningfrom,Jiang2010302}, geht doch keines davon auf den Spezialfall der Textklassifikation
|
||||
mit einem zugrundeliegenden Graphen ein.
|
||||
Obwohl es auch zur Textklassifikation einige Paper gibt
|
||||
\cite{Zhu02learningfrom,Jiang2010302}, geht doch keines davon auf den
|
||||
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 Machines nutzen \cite{Joachims98textcategorization}.
|
||||
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
|
||||
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 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 betrachten werden muss.
|
||||
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
|
||||
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
|
||||
betrachten werden muss.
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
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
|
||||
vorgeschlagen, die es allerdings noch zu untersuchen gilt.
|
||||
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 vorgeschlagen, die es allerdings noch zu
|
||||
untersuchen gilt.
|
||||
|
||||
\subsection{Anzahl der Knotenbeschriftungen}
|
||||
So, wie der DYCOS-Algorithmus vorgestellt wurde, können nur Graphen bearbeitet werden,
|
||||
deren Knoten jeweils höchstens eine Beschriftung haben. In vielen Fällen, wie z.~B.
|
||||
Wikipedia mit Kategorien als Knotenbeschriftungen haben Knoten jedoch viele Beschriftungen.
|
||||
So, wie der DYCOS-Algorithmus vorgestellt wurde, können nur Graphen bearbeitet
|
||||
werden, deren Knoten jeweils höchstens eine Beschriftung haben. In vielen
|
||||
Fällen, wie z.~B. Wikipedia mit Kategorien als Knotenbeschriftungen haben
|
||||
Knoten jedoch viele Beschriftungen.
|
||||
|
||||
Auf einen ersten Blick ist diese Schwäche einfach zu beheben, indem
|
||||
man beim zählen der Knotenbeschriftungen für jeden Knoten jedes Beschriftung zählt. Dann
|
||||
Auf einen ersten Blick ist diese Schwäche einfach zu beheben, indem man beim
|
||||
zählen der Knotenbeschriftungen für jeden Knoten jedes Beschriftung zählt. Dann
|
||||
wäre noch die Frage zu klären, mit wie vielen Beschriftungen der betrachtete
|
||||
Knoten beschriftet werden soll.
|
||||
|
||||
Jedoch ist z.~B. bei Wikipedia-Artikeln auf den Knoten eine
|
||||
Hierarchie definiert. So ist die Kategorie \enquote{Klassifikationsverfahren}
|
||||
eine Unterkategorie von \enquote{Klassifikation}. Bei dem Kategorisieren
|
||||
von Artikeln sind möglichst spezifische Kategorien vorzuziehen, also
|
||||
kann man nicht einfach bei dem Auftreten der Kategorie \enquote{Klassifikationsverfahren}
|
||||
Jedoch ist z.~B. bei Wikipedia-Artikeln auf den Knoten eine Hierarchie
|
||||
definiert. So ist die Kategorie \enquote{Klassifikationsverfahren} eine
|
||||
Unterkategorie von \enquote{Klassifikation}. Bei dem Kategorisieren von
|
||||
Artikeln sind möglichst spezifische Kategorien vorzuziehen, also kann man nicht
|
||||
einfach bei dem Auftreten der Kategorie \enquote{Klassifikationsverfahren}
|
||||
sowohl für diese Kategorie als auch für die Kategorie \enquote{Klassifikation}
|
||||
zählen.
|
||||
|
||||
|
||||
\subsection{Überanpassung und Reklassifizierung}
|
||||
Aggarwal und Li beschreiben in \cite{aggarwal2011} nicht, auf welche
|
||||
Knoten der Klassifizierungsalgorithmus angewendet werden soll. Jedoch
|
||||
ist die Reihenfolge der Klassifizierung relevant. Dazu folgendes
|
||||
Minimalbeispiel:
|
||||
Aggarwal und Li beschreiben in \cite{aggarwal2011} nicht, auf welche Knoten der
|
||||
Klassifizierungsalgorithmus angewendet werden soll. Jedoch ist die Reihenfolge
|
||||
der Klassifizierung relevant. Dazu folgendes Minimalbeispiel:
|
||||
|
||||
Gegeben sei ein dynamischer Graph ohne textuelle Inhalte. Zum Zeitpunkt
|
||||
$t=1$ habe dieser Graph genau einen Knoten $v_1$ und $v_1$ sei
|
||||
mit dem $A$ beschriftet. Zum Zeitpunkt $t=2$ komme ein nicht beschrifteter
|
||||
Knoten $v_2$ 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.
|
||||
Gegeben sei ein dynamischer Graph ohne textuelle Inhalte. Zum Zeitpunkt $t=1$
|
||||
habe dieser Graph genau einen Knoten $v_1$ und $v_1$ sei mit dem $A$
|
||||
beschriftet. Zum Zeitpunkt $t=2$ komme ein nicht beschrifteter Knoten $v_2$
|
||||
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.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
|
@ -60,13 +60,12 @@ und die Kante $(v_2, v_3)$ hinzu.
|
|||
\caption{Minimalbeispiel für den Einfluss früherer DYCOS-Anwendungen}
|
||||
\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:
|
||||
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:
|
||||
|
||||
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
|
||||
|
@ -80,5 +79,3 @@ Das Reklassifizieren von Knoten könnte eine mögliche Lösung für dieses
|
|||
Problem sein. Knoten, die durch den DYCOS-Algorithmus beschriftet wurden
|
||||
könnten eine Lebenszeit bekommen (TTL, Time to Live). Ist diese
|
||||
abgelaufen, wird der DYCOS-Algorithmus erneut auf den Knoten angewendet.
|
||||
|
||||
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
\subsection{Sprungtypen}\label{sec:sprungtypen}
|
||||
Die beiden bereits definierten Sprungtypen, der strukturelle Sprung
|
||||
sowie der inhaltliche Zweifachsprung werden im folgenden erklärt.
|
||||
Die beiden bereits definierten Sprungtypen, der strukturelle Sprung sowie der
|
||||
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.
|
||||
Der strukturelle Sprung entspricht einer zufälligen Wahl eines Nachbarknotens,
|
||||
wie es in \cref{alg:DYCOS-structural-hop} gezeigt wird.
|
||||
\begin{algorithm}[H]
|
||||
\begin{algorithmic}[1]
|
||||
\Procedure{SturkturellerSprung}{Knoten $v$, Anzahl $q$}
|
||||
|
@ -18,15 +17,13 @@ gezeigt wird.
|
|||
\label{alg:DYCOS-structural-hop}
|
||||
\end{algorithm}
|
||||
|
||||
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 Klassifizierung verringert
|
||||
wird. So hat \enquote{Brücke} im Deutschen viele Bedeutungen.
|
||||
Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der
|
||||
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
|
||||
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
|
||||
|
@ -34,13 +31,14 @@ Zweifachsprung machen will 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.
|
||||
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}$
|
||||
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'$.
|
||||
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.
|
||||
\end{enumerate}
|
||||
|
@ -53,27 +51,26 @@ für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt
|
|||
die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen
|
||||
$q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.
|
||||
|
||||
In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt
|
||||
und alle erreichbaren Knoten in $reachableNodes$ mit der Anzahl
|
||||
der Pfade, durch die sie erreicht werden können, gespeichert.
|
||||
In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt und alle
|
||||
erreichbaren Knoten in $reachableNodes$ mit der Anzahl der Pfade, durch die sie
|
||||
erreicht werden können, gespeichert.
|
||||
|
||||
In \cref{alg:l6} wird \cref{step:c2} durchgeführt.
|
||||
Ab hier gilt
|
||||
In \cref{alg:l6} wird \cref{step:c2} durchgeführt. Ab hier gilt
|
||||
\[ |T| = \begin{cases}q &\text{falls } |reachableNodes|\geq q\\
|
||||
|reachableNodes| &\text{sonst }\end{cases}\]
|
||||
|
||||
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.
|
||||
|
||||
In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt,
|
||||
das von $v' \in T(v)$ auf die relative
|
||||
Häufigkeit bzgl. aller Pfade von $v$ zu Knoten aus den Top-$q$ abbildet.
|
||||
In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt, das
|
||||
von $v' \in T(v)$ auf die relative Häufigkeit bzgl. aller Pfade von $v$ zu
|
||||
Knoten aus den Top-$q$ abbildet.
|
||||
|
||||
In allen folgenden Zeilen wird \cref{step:c3} durchgeführt.
|
||||
In \cref{alg:15} bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit
|
||||
einer Wahrscheinlichkeit, die seiner relativen Häufigkeit am Anteil
|
||||
der Pfaden der Länge 2 von $v$ nach $v'$ über einen beliebigen
|
||||
Wortknoten entspricht ausgewählt und schließlich zurückgegeben.
|
||||
In allen folgenden Zeilen wird \cref{step:c3} durchgeführt. In \cref{alg:15}
|
||||
bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit einer Wahrscheinlichkeit,
|
||||
die seiner relativen Häufigkeit am Anteil der Pfaden der Länge 2 von $v$ nach
|
||||
$v'$ über einen beliebigen Wortknoten entspricht ausgewählt und schließlich
|
||||
zurückgegeben.
|
||||
|
||||
\begin{algorithm}
|
||||
\caption{Inhaltlicher Zweifachsprung}
|
||||
|
|
|
@ -3,15 +3,15 @@ Da die Größe des Vokabulars die Datenmenge signifikant beeinflusst,
|
|||
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}
|
||||
\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}
|
||||
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-Datensatz wurde mit $m \in \set{3,4,5,6}$ getestet und
|
||||
kein signifikanter Unterschied festgestellt.
|
||||
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-
|
||||
Datensatz wurde mit $m \in \set{3,4,5,6}$ getestet und kein signifikanter
|
||||
Unterschied festgestellt.
|
||||
|
||||
Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
|
||||
oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.
|
||||
|
@ -19,32 +19,31 @@ Der Gini-Koeffizient ist ein statistisches Maß, das die Ungleichverteilung
|
|||
bewertet. Er ist immer im Intervall $[0,1]$, wobei $0$ einer
|
||||
Gleichverteilung entspricht und $1$ der größtmöglichen Ungleichverteilung.
|
||||
|
||||
Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit
|
||||
der $i$-ten Knotenbeschriftung.
|
||||
Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit der $i$-ten
|
||||
Knotenbeschriftung.
|
||||
\begin{align}
|
||||
p_i(w) &:= \frac{n_i(w)}{\sum_{j=1}^{|\L_t|} n_j(w)} &\text{(Relative Häufigkeit des Wortes $w$)}\\
|
||||
G(w) &:= \sum_{j=1}^{|\L_t|} p_j(w)^2 &\text{(Gini-Koeffizient von $w$)}
|
||||
\end{align}
|
||||
In diesem Fall ist $G(w)=0$ nicht möglich, da zur Vokabularbestimmung
|
||||
nur Wörter betrachtet werden, die auch vorkommen.
|
||||
In diesem Fall ist $G(w)=0$ nicht möglich, da zur Vokabularbestimmung nur
|
||||
Wörter betrachtet werden, die auch vorkommen.
|
||||
|
||||
Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann,
|
||||
ist als Pseudocode mit \cref{alg:vokabularbestimmung}
|
||||
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.
|
||||
Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann, ist als
|
||||
Pseudocode mit \cref{alg:vokabularbestimmung} 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.
|
||||
|
||||
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.
|
||||
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]
|
||||
|
@ -85,6 +84,5 @@ Wörter mit den höchsten Gini-Koeffizienten zurückgegeben.
|
|||
\label{alg:vokabularbestimmung}
|
||||
\end{algorithm}
|
||||
|
||||
Die Menge $S_t$ kann aus der Menge aller Dokumente, deren
|
||||
Knoten beschriftet sind, mithilfe des in \cite{Vitter} vorgestellten
|
||||
Algorithmus bestimmt werden.
|
||||
Die Menge $S_t$ kann aus der Menge aller Dokumente, deren Knoten beschriftet
|
||||
sind, mithilfe des in \cite{Vitter} vorgestellten Algorithmus bestimmt werden.
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
In dieser Arbeit wird der DYCOS-Algorithmus, wie er in \cite{aggarwal2011} vorgestellt wurde, erklärt.
|
||||
Er arbeitet auf Graphen, deren Knoten teilweise mit
|
||||
Beschriftungen versehen sind und ergänzt automatisch Beschriftungen
|
||||
für Knoten, 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.\\
|
||||
Zusätzlich wird \cite{aggarwal2011} kritisch Erörtert und
|
||||
und es werden mögliche Erweiterungen des DYCOS-Algorithmus vorgeschlagen.
|
||||
In dieser Arbeit wird der DYCOS-Algorithmus, wie er in \cite{aggarwal2011}
|
||||
vorgestellt wurde, erklärt. Er arbeitet auf Graphen, deren Knoten teilweise mit
|
||||
Beschriftungen versehen sind und ergänzt automatisch Beschriftungen für Knoten,
|
||||
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.\\
|
||||
Zusätzlich wird \cite{aggarwal2011} kritisch Erörtert und und es werden
|
||||
mögliche Erweiterungen des DYCOS-Algorithmus vorgeschlagen.
|
||||
|
||||
\textbf{Keywords:} DYCOS, Label Propagation, Knotenklassifizierung
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
acmid = {3165},
|
||||
publisher = {ACM},
|
||||
address = {New York, NY, USA},
|
||||
}
|
||||
}
|
||||
|
||||
@MASTERSTHESIS{heck,
|
||||
AUTHOR = {Heck, Michael},
|
||||
|
@ -166,7 +166,7 @@ ption. The examples used to illustrate the application are drawn from the proble
|
|||
acmid = {275705},
|
||||
publisher = {Morgan Kaufmann Publishers Inc.},
|
||||
address = {San Francisco, CA, USA},
|
||||
}
|
||||
}
|
||||
|
||||
@incollection{szummer,
|
||||
title = {Partially labeled classification with Markov random walks},
|
||||
|
@ -280,4 +280,4 @@ keywords = "Feature extraction "
|
|||
publisher = {ACM},
|
||||
address = {New York, NY, USA},
|
||||
keywords = {idf, term weighting, text classification},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,15 +4,12 @@
|
|||
group-separator={\,},
|
||||
}
|
||||
|
||||
%\def\edges{\ensuremath{\mathcal{E}_t}}
|
||||
%\def\nodes{\ensuremath{\mathcal{N}_t}}
|
||||
%\def\labeledNodes{\ensuremath{\mathcal{T}_t}}
|
||||
\DeclareUnicodeCharacter{00A0}{~}
|
||||
|
||||
\theoremstyle{definition}
|
||||
\theoremindent20pt
|
||||
\theoremindent20pt
|
||||
\theoremheaderfont{\normalfont\bfseries\hspace{-\theoremindent}}
|
||||
\renewtheorem{definition}{Definition}
|
||||
\newtheorem{definition}{Definition}
|
||||
|
||||
\def\L{\ensuremath{\mathcal{L}}}
|
||||
\def\T{\ensuremath{\mathcal{T}}}
|
||||
|
|
|
@ -7,19 +7,17 @@ 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.
|
||||
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.
|
||||
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}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue