Skip to content
Snippets Groups Projects
Commit 5ac3d09e authored by Silas Dohm's avatar Silas Dohm
Browse files

small doc changes

parent ac3df145
Branches
No related tags found
No related merge requests found
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
Ein wichtiger Schritt in jeder Aufgabe im Bereich des Maschinellen Lernens ist es die Datenbasis zu analysieren und zu verstehen. Ein wichtiger Schritt in jeder Aufgabe im Bereich des Maschinellen Lernens ist es die Datenbasis zu analysieren und zu verstehen.
Der Yelp Datensatz besteht aus einer Ansammlung von json Dateien. Darunter jeweils eine Datei für businesses, reviews, user, checkins, sowie tips - quasi short-reviews - und photos, welche als Cross-Referenz für andere Datensätze fungiert. Für dieses Projekt interessiert jedoch nur die review Datei. Der Yelp-Datensatz besteht aus einer Ansammlung von json Dateien. Darunter jeweils eine Datei für businesses, reviews, user, checkins, sowie tips - quasi short-reviews - und photos, welche als Cross-Referenz für andere Datensätze fungiert. Für dieses Projekt interessiert jedoch nur die review Datei.
Die Yelp Reviews befinden sich in einer 6GB großen json Datei. Diese Datei könnte mit einem Leistungsstarken Computer vollständig in den Arbeitsspeicher geladen werden. Jedoch wird im Rahmen dieser Arbeit die Datei Zeilenweise verarbeitet. Die Yelp-Reviews befinden sich in einer 6GB großen json Datei. Diese Datei könnte mit einem Leistungsstarken Computer vollständig in den Arbeitsspeicher geladen werden. Jedoch wird im Rahmen dieser Arbeit die Datei Zeilenweise verarbeitet.
Das Zeilenweise verarbeiten der Datei ermöglicht es, die Systemanforderungen Das Zeilenweise verarbeiten der Datei ermöglicht es, die Systemanforderungen
gering zu halten und bringt den zusätzlichen Vorteil, gering zu halten und bringt den zusätzlichen Vorteil,
...@@ -85,19 +85,20 @@ print("Der Durschnitt der Textlaenge ist: %d"%(np.mean(X))) ...@@ -85,19 +85,20 @@ print("Der Durschnitt der Textlaenge ist: %d"%(np.mean(X)))
\end{lstlisting} \end{lstlisting}
Das Importieren der benötigten Libraries erfolgt in Zeile 0 und 1. Das Importieren der benötigten Libraries erfolgt in Zeile 0 und 1.
In Zeile 2 wird X als leere Liste definiert. In Zeile 2 wird \lstinline{X} als leere Liste definiert.
In der 3. Zeile wird wie gehabt über jede Zeile des Datensatzes iteriert. Anschließend wird in der 3. Zeile wie gehabt über jede Zeile des Datensatzes iteriert.
In der Schleife parsen wir in Zeile 4 die aktuelle Zeile des Datensatzes und Konvertieren diese in ein Python Dictionary. Danach wird in Zeile 5 der Reviewtext der aktuellen Zeile in Wörter zerteilt und anschließen wird die Anzahl der Wörter der Liste X hinzugefügt. In der Schleife in Zeile 4 parsen wir die aktuelle Zeile des Datensatzes und Konvertieren diese in ein Python Dictionary. Danach wird in Zeile 5 der Reviewtext der aktuellen Zeile in Wörter zerteilt und anschließen wird die Anzahl der Wörter der Liste X hinzugefügt.
Nach dem Durchlauf der Schleife erhalten wir eine Liste, die alle Reviewlängen beinhaltet. Nach dem Durchlauf der Schleife erhalten wir eine Liste, die alle Reviewlängen beinhaltet.
In der 6. Zeile nutzen wir die Numpy Funktion median, um uns den Median der Reviewlänge auszugeben. Anschließend geben wir in Zeile 7 den Durchschnitt über die Numpy Funktion mean aus. In der 6. Zeile wird die Numpy-Funktion \lstinline{median} genutzt, um den
\wip{ Median der Reviewlänge auszugeben. Anschließend wird in Zeile 7 die
Der Median der Textlänge ist: 78 Durchschnittslänge mithilfe der Numpy-Funktion \lstinline{mean} ausgegeben.
Der Durschnitt der Textlänge ist: 110.
}
Die Medianlänge beträgt für diesen Datensatz 78 Wörter, die Durchschnittslänge beträgt 110 Wörter.
\subsubsection{Distribution der Bewertungen} \subsubsection{Distribution der Bewertungen}
Ein Interessantes Merkmal eines Datensatzes ist es wie ausgeglichen die Zieldaten sind. Ein Interessantes Merkmal eines Datensatzes ist es wie ausgeglichen die Zieldaten sind.
...@@ -118,7 +119,7 @@ Im Grunde wird hier die gleiche Schleife durchlaufen wie bei der Textlänge. ...@@ -118,7 +119,7 @@ Im Grunde wird hier die gleiche Schleife durchlaufen wie bei der Textlänge.
Anstelle der Textlänge parsen wir diesmal die Bewertung und speichern diese in der Liste \lstinline{ratings}. Anstelle der Textlänge parsen wir diesmal die Bewertung und speichern diese in der Liste \lstinline{ratings}.
In Zeile 7 konvertieren wir die Liste zu einem Numpy Array. In Zeile 7 wird die Liste zu einem Numpy-Array konvertiert
\begin{lstlisting}[firstnumber=8,inputencoding=latin1] \begin{lstlisting}[firstnumber=8,inputencoding=latin1]
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
...@@ -132,7 +133,8 @@ ax.set_ylabel('Occurrences (%)') ...@@ -132,7 +133,8 @@ ax.set_ylabel('Occurrences (%)')
ax.bar(value,count/ratings.size *100) ax.bar(value,count/ratings.size *100)
\end{lstlisting} \end{lstlisting}
In Zeile 8 wird die pyplot von der Library matplotlib unter dem Alias plt importiert. In Zeile 8 wird \lstinline{pyplot} von der Library \lstinline{matplotlib}
unter dem Alias \lstinline{plt} importiert.
Danach wird in Zeile 9 mit der Funktion \lstinline{unique} von Numpy die verschiedenen Bewertungen in der Variable \lstinline{value} gespeichert. Der Parameter \lstinline{return_counts=True} sorgt dafür das zusätzlich die Häufigkeit der Bewertung zurückgegeben wird. Die Häufigkeit wird in der Variable \lstinline{count} gespeichert. Danach wird in Zeile 9 mit der Funktion \lstinline{unique} von Numpy die verschiedenen Bewertungen in der Variable \lstinline{value} gespeichert. Der Parameter \lstinline{return_counts=True} sorgt dafür das zusätzlich die Häufigkeit der Bewertung zurückgegeben wird. Die Häufigkeit wird in der Variable \lstinline{count} gespeichert.
......
...@@ -17,10 +17,11 @@ class MyCorpus: ...@@ -17,10 +17,11 @@ class MyCorpus:
json_line = json.loads(line) json_line = json.loads(line)
yield utils.simple_preprocess(json_line["text"]) yield utils.simple_preprocess(json_line["text"])
\end{lstlisting} \end{lstlisting}
Im Konstruktor der Klasse MyCorpus (Zeile 3) wird der Pfad zu dem Yelp Datensatz Übergeben. Im Konstruktor der Klasse MyCorpus (Zeile 3) wird der Pfad zu dem Yelp-Datensatz Übergeben.
In Zeile 5 wird die von Funktion \lstinline{__iter__} implementiert, In Zeile 5 wird die von Funktion \lstinline{__iter__} implementiert,
diese wird von Gensim erwartet und führt dazu, dass über Objekte der Klasse \lstinline{MyCorpus} diese wird von Gensim erwartet und führt dazu, dass über Objekte der
Klasse \lstinline{MyCorpus}
iteriert werden kann. iteriert werden kann.
Die Funktion ist ein einfacher Generator mit der Besonderheit, dass Die Funktion ist ein einfacher Generator mit der Besonderheit, dass
...@@ -55,5 +56,5 @@ Der zweite Parameter ist der Datensatzpfad und wird nur benötigt, falls noch ...@@ -55,5 +56,5 @@ Der zweite Parameter ist der Datensatzpfad und wird nur benötigt, falls noch
kein Word2Vec-Modell gespeichert wurde. kein Word2Vec-Modell gespeichert wurde.
Zuerst wird in Zeile 12 geprüft, ob bereits ein Word2Vec-Modell existiert, ist dies der Zuerst wird in Zeile 12 geprüft, ob bereits ein Word2Vec-Modell existiert, ist dies der
Fall wird dieses direkt zurückgegeben, gibt es kein Modell, so wird dieses im try-Block Fall wird dieses direkt zurückgegeben, gibt es kein Modell, so wird dieses im inneren try-Block
mithilfe der \lstinline{myCorpus} Klasse generiert, gespeichert und zurückgeben. mithilfe der \lstinline{myCorpus} Klasse generiert, gespeichert und zurückgeben.
\ No newline at end of file
...@@ -231,4 +231,4 @@ zurückliefert. ...@@ -231,4 +231,4 @@ zurückliefert.
\label{tab:conf_w_cnn} \label{tab:conf_w_cnn}
\caption{Konfusionsmatrix mit Klassengewichtung} \caption{Konfusionsmatrix mit Klassengewichtung}
\end{table} \end{table}
\wip{Tabelle auswerten} \wip{Tabelle auswerten!}
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
Das Word2Vec-Modell bildet einen Vektorraum, indem ähnliche Wörter nahe Das Word2Vec-Modell bildet einen Vektorraum, indem ähnliche Wörter nahe
beieinander liegen. beieinander liegen.
Es ist somit denkbar, dass Wörter, die mit einer negativen Rezension assoziiert Es ist somit naheliegend, dass Wörter, die mit einer negativen Rezension assoziiert
werden, ein anderes Gebiet des Vektorraumes belegen als jene, die mit positiven Rezensionen werden, ein anderes Gebiet des Vektorraumes belegen als jene, die mit positiven Rezensionen
assoziiert werden. assoziiert werden.
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment