Eduskuntavaalit tweet analysis
root
- jsontodb
- output
- outputfi
- polldl
- pollplot
- scripts
- timeplot
- tokenizedb
- tweetiterate
- twitdl
- webresources
- webserver
- .cloc-lang
- ACCOUNTS.org
- LICENSE.AGPL3
- LICENSE.BSD2
- Makefile
- README.md
- Setup.hs
- relations.dia
- twitekv.cabal
Vorbereitung
Zum Kompilieren werden ghc und cabal-install benötigt. Empfohlener Ablauf:
make sandbox
make dependencies
make build
Die Tools erwarten weiterhin einen laufenden PostgreSQL-Server auf localhost, mit bereits angelegtem User twitbtw
und Datenbank twitbtw
. Diese lassen sich z.B. so anlegen:
% sudo -u postgres psql
postgres=# CREATE ROLE twitbtw CREATEDB LOGIN;
CREATE ROLE
postgres=# CREATE DATABASE twitbtw OWNER twitbtw;
CREATE DATABASE
postgres=# \q
Nun können mit make initdb
die Tabellen, Funktionen und Ansichten erzeugt werden.
Datenbefüllung
Methode A: Daten von Twitter holen
Zunächst können durch Anpassen der Ordnerstruktur in ./output/rawtweets/ neue Parteien und Accounts hinzugefügt werden. Mit make download
werden dann die 800 letzten Tweets heruntergeladen (Zahl in twitdl/Main.hs anpassbar) und als JSON-Dateien dort abgelegt. Die Twitter-API verlangt hierfür einen individuelles Access Token für jeden Benutzerin. Daher muss eine Datei KEYS angelegt werden, die wie folgt aussieht:
export OAUTH_CONSUMER_KEY=XXXXXXXXX
export OAUTH_CONSUMER_SECRET=XXXXXXXX
export OAUTH_ACCESS_TOKEN=XXXXXXXXX
export OAUTH_ACCESS_SECRET=XXXXXXXXX
XXXXXXXXX ist jeweils durch das erhaltene Token zu ersetzen. Anschließend sind die Daten mit make todb
in die Datenbank zu importieren.
Methode B: Vorhandener rawtweets-Tarball
Ist bereits ein rawtweets-Tarball vorhanden, kann dieser einfach im Verzeichnis ./output entpackt werden. Auch in diesem Fall muss anschließend make todb
aufgerufen werden, um die Daten in die Datenbank zu importieren.
Datenverarbeitung
Die meisten der Tools erfordern vorheriges Tokenisieren, POS-Tagging und eine Vorberechnung der (Zwischen-)Ergebnisse. Alle drei werden zusammen mit make tokenize
ausgelöst. Hierbei werden mehrere Modelle parallel berechnet, z.B.:
- T1-Tokenizer ohne Stemmer/Lemmatizer, Monogramme, Parteien a priori gleichverteilt, ohne Gewichte
- T1-Tokenizer mit Cistem-Stemmer, Tetragramme, Parteien a priori gleichverteilt, DF-Gewichte
- T1-Tokenizer mit Cistem-Stemmer, Trigramme, Parteien a priori gleichverteilt, Adjektive mehr gewichten
Und viele weitere. Der Prozess kann eine Weile dauern.
Webinterface
Mit make webserver
lässt sich das Webinterface starten, wo die Ergebnisse zu begutachten sind.