Een aparte database speciaal voor het snel zoeken naar woorden in de tweets van de afgelopen week.
Zie demo van Erik: zoeken op Twitter
Eigen implementatie: http://www.let.rug.nl/~kleiweg/bin/dagtwform.py
Kort na middernacht wordt er een database aangemaakt voor de afgelopen dag. Dit gebeurt met dagtweets.go.
Database voor één dag, compleet met indexen, gebruikt bijna 6Gb schijfruimte, en kost een klein uur om aan te maken.
Deze databases zijn beschikbaar op volker via:
mongo 127.0.0.1:27018/twitter20120626
De cijfers aan het eind geven de datum aan.
Collecties, indexering aangegeven met onderstreping:
db.tweets |
|
Elk object is een tweet |
|
text |
string. De text van de tweet. |
words |
array van strings. De tweet opgesplitst in tokens, in kleine letters. |
hour |
integer. Uur waarin de tweet is geplaatst op twitter. |
block |
integer: 0 - 3. Geeft aan uit welk 6-uur-blok de tweet komt. |
interval |
integer: 0 of groter. Geeft aan uit welk interval binnen het blok de tweet komt. |
db.counts |
|
Elk object is een woord, omgezet naar kleine letters. |
|
word |
string. Het woord |
fracts |
lijst van floats. Fractie van de tweets in elk interval waarin het woord voorkomt. |
block |
integer: 0 - 3. Geeft aan voor welk 6-uur-blok dit is. |
db.times |
|
Bevat slechts vier objecten, voor elk 6-uur-blok één. |
|
times |
lijst van floats. Gemiddeld tijdstip van tweets in elk interval, als fracties van uren. |
counts |
lijst van integers. Geeft de grootte aan van elk interval. |
block |
integer: 0 - 3. Bloknummer |
db.status |
|
Als de database klaar is, dan bevat deze collectie dit object. |
|
ready |
boolean: true |
Bloknummers kunnen afwijken. Bijvoorbeeld, als er blokken van 8 uur zijn gebruikt, dan zijn de bloknummers 0, 1 en 2. Bij blokken van 12 uur zijn de bloknummers 0 en 1.
Tests
Voorbeeld van opvragen van tellingen van één dag voor tweets waar een bepaald woord in voorkomt, met het script dagtst.js:
mongo -quiet 127.0.0.1:27017/twitter20120626 dagtst.js > table.txt
Weergave met R:
a <- read.table("table.txt")
plot(a, main="moe", xlab="tijd", ylab="percentage", axes=FALSE, ylim=c(0, max(a[,2])), col="grey")
points(a[,1], rep(0, length(a[,1])), col="grey", pch="|")
abline(h=0, v=0:24, col="grey", lty="dotted")
lines(lowess(a, f=.05), col="blue", lwd=2)
axis(1, at=0:24, labels=0:24%%24)
axis(2)
Voorbeelden
v |
|
vanaf datum |
t |
optioneel |
tot en met datum |
w1, w2, w3, w4 |
|
elk een lijst van woorden |
l |
optioneel |
locale |
r1, r2, r3, r4 |
optioneel |
type zoekterm voor w1, w2,w3 en w4: any, all, exact of regex |
Voor meerdere dagen (maximaal 28):
Meerdere woorden (maximaal 4):
Annotatie in het Russisch (zie locale -a op volker voor geldige codes):
Samenvoegen van tellingen voor meerdere woorden, bijvoorbeeld eerst fiets en fietsen apart, daarna samen:
Reguliere expressies (traag), voorbeeld waarbij tweede woord een reguliere expressie is:
Dit alles werkt met dit Python-script: dagtwimg.py
Attachments
Download alles: TwitterData/WeekCompact.tar.gz