Peter Kleiweg 9d82f11536 README
2026-05-24 19:13:09 +02:00
2026-05-24 16:29:56 +02:00
2026-05-24 16:42:12 +02:00
2026-05-24 16:29:56 +02:00
2026-05-24 16:29:56 +02:00
2026-05-24 16:29:56 +02:00
2026-05-24 16:29:56 +02:00
2026-05-23 13:47:20 +02:00
2026-05-24 16:44:26 +02:00
HLN
2026-05-21 18:27:57 +02:00
2026-05-20 18:51:00 +02:00
2026-05-24 16:42:12 +02:00
2026-05-24 19:13:09 +02:00
2026-05-24 19:13:09 +02:00

Verzamelen van nieuwsberichten

Bronnen: verzamelen

Elke directory waarvan de naam met een hoofdletter begint is voor een enkele nieuwsbron.

De onverwerkte berichten worden opgeslagen in een subdirectory jaar/maand/dag voor NieuwsNL en in subdirectory jaar/weeknummer voor de overige bronnen.

Het formaat van de data verschilt per bron. Soms is er voor elk bericht alleen een XML-bestand (*.xml), een fragment afkomstig uit de RSS-feed, waar heel de tekst en alle gegevens al in staan. Wanneer de RSS-feed niet de complete tekst bevat, dan worden de HTML-pagina's van nieuwe berichten gedownload, en wordt daar de tekst uit gehaald. Dan krijg je bestanden zoals *.json en/of *.txt.

Als er fouten bij het verzamelen zijn dan zijn er bestanden op *.err en mogelijk *.html.

Gewoonlijk als er iets mis gaat probeert de software een uur later dezelfde berichten weer te verwerken. Om dat te voorkomen kunnen bestanden handmatig hernoemd worden van *.err naar *.skip. Voor berichten van een type waarvan bekend is dat ze geen tekst bevatten worden automatisch bestanden op *.skip gemaakt.

Verwerking

Elke dag voor NieuwsNL en alleen op dinsdag voor de overige bronnen worden de teksten verwerkt. De teksten worden omgezet naar getokeniseerde zinnen met labels, door Alpino geparst, en voorzien van metadata.

Dit gebeurt door de scripts txt2corpus.sh van elke bron. De scripts variëren per bron omdat het formaat waarin de teksten aanwezig zijn verschillen per bron.

De resultaten staan in de subdirectory's corpus van elke bron.

Analyse

Op woensdag worden de geparste zinnen van de afgelopen week geanalyseerd. (De data voor NieuwsNL worden hierbij samengevoegd in één week.) Er worden queries uitgevoerd, tellingen gedaan, ranglijsten gemaakt. Voor sommige queries wordt een top 20 samengesteld van meest voorkomende items die nog niet eerder in de top 20 stonden.

Voor de analyse worden bronnen samengevoegd in onderdelen: algemeen, amsterdam, groningen, literatuur, vlaanderen. De resultaten worden bij elkaar opgeslagen in directory data.

Uit de analyse worden de data gehaald die nodig zijn voor de webapp, en opgeslagen als json, in subdirectory data/json.

Dit alles gebeurt door het script collect.sh

Je kunt de analyse ook handmatig doen, met het script query.sh

Uitvoering

Alles gebeurt vanuit cron. Foutmeldingen en waarschuwingen worden per mail verstuurd door cron.

crontab van p209327@colossus

Is /net/corpora schrijfbaar?

# m h dom mon dow command
2   * *   *   *   /net/aistaff/kleiweg/services/nfs/test.sh

Berichten verzamelen

# m h dom mon dow command
3   * *   *   *   /net/corpora/nlnieuws/AT5/at5
4   * *   *   *   /net/corpora/nlnieuws/BuurtAdam/buurtadam
5   * *   *   *   /net/corpora/nlnieuws/BuurtGrn/buurtgrn
6   * *   *   *   /net/corpora/nlnieuws/GG/gg
7   * *   *   *   /net/corpora/nlnieuws/HLN/hln
8   * *   *   *   /net/corpora/nlnieuws/LitNL/litnl
9   * *   *   *   /net/corpora/nlnieuws/NieuwsNL/nieuwsnl
10  * *   *   *   /net/corpora/nlnieuws/NOS/nos
11  * *   *   *   /net/corpora/nlnieuws/NU/nu
12  * *   *   *   /net/corpora/nlnieuws/Oog/oog
13  * *   *   *   /net/corpora/nlnieuws/Parool/parool
14  * *   *   *   /net/corpora/nlnieuws/RO/ro
15  * *   *   *   /net/corpora/nlnieuws/RTVNoord/rtvnoord
16  * *   *   *   /net/corpora/nlnieuws/Sargasso/sargasso
17  * *   *   *   /net/corpora/nlnieuws/Sikkom/sikkom
18  * *   *   *   /net/corpora/nlnieuws/Tzum/tzum
19  * *   *   *   /net/corpora/nlnieuws/VRT/vrt

Nieuws verwerken: tekst omzetten naar zinnen, parsen, metadata toevoegen

NieuwsNL elke dag, overigen alleen op dinsdag

# m h dom mon dow command
0   1 *   *   2   /net/corpora/nlnieuws/AT5/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/BuurtAdam/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/BuurtGrn/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/GG/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/HLN/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/LitNL/txt2corpus.sh
0   1 *   *   *   /net/corpora/nlnieuws/NieuwsNL/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/NOS/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/NU/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/Oog/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/Parool/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/RO/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/RTVNoord/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/Sargasso/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/Sikkom/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/Tzum/txt2corpus.sh
0   1 *   *   2   /net/corpora/nlnieuws/VRT/txt2corpus.sh

Ging alles goed: zo niet, dan kunnen er nog lockfile zijn

# m h dom mon dow command
50  0 *   *   *   find /net/corpora/nlnieuws -name lock

Op woensdag alles verzamelen: queries uitvoeren, data die nodig is voor webapp omzetten naar json

# m h dom mon dow command
0   1 *   *   3   /net/corpora/nlnieuws/collect.sh

crontab van f109308@colossus

Json-bestanden voor de webapp overzetten naar het webplatform

# m h      dom mon dow command
30  0-23/4 *   *   *   rsync -e 'ssh -F /net/aistaff/alfa/.ssh/config' -a --no-g /net/corpora/nlnieuws/data/json/ webalfa:/home/www/f109308/site/wvdm/data
Description
No description provided
Readme 677 KiB
Languages
Go 72.4%
Shell 15.9%
JavaScript 4.8%
HTML 2.7%
Makefile 1.7%
Other 2.5%