#!/bin/bash set -e unset CDPATH PATH=/net/corpora/nlnieuws/bin:/net/aps/bin:$PATH export TZ=Europe/Amsterdam verbose=0 if [ "$1" = "-v" ] then shift verbose=1 fi say () { if [ "$verbose" = "1" ] then echo "$*" fi } if [ "$1" = "" ] then ds=`date -d -7days +%G.%V` else case "$1" in 2[0-9][0-9][0-9].[0-5][0-9]) ds=$1 ;; *) echo INVALID exit 1 ;; esac fi year=${ds%%.*} mkdir -p /net/corpora/nlnieuws/data/$year mkdir -p /net/corpora/nlnieuws/data/json/$year cd /net/corpora/nlnieuws/data/$year declare -A parts #parts[alles]='.' parts[algemeen]='NOS|NU|NieuwsNL|RO|Sargasso' parts[amsterdam]='AT5|BuurtAdam|Parool' parts[groningen]='BuurtGrn|GG|Oog|RTVNoord|Sikkom' parts[literatuur]='LitNL|Tzum' parts[vlaanderen]='HLN|VRT' #parts[AT5]='AT5' #parts[BuurtAdam]='BuurtAdam' #parts[BuurtGrn]='BuurtGrn' #parts[GG]='GG' #parts[HLN]='HLN' #parts[LitNL]='LitNL' #parts[NOS]='NOS' #parts[NU]='NU' #parts[NieuwsNL]='NieuwsNL' #parts[Oog]='Oog' #parts[Parool]='Parool' #parts[RO]='RO' #parts[RTVNoord]='RTVNoord' #parts[Sargasso]='Sargasso' #parts[Sikkom]='Sikkom' #parts[Tzum]='Tzum' #parts[VRT]='VRT' for part in ${!parts[@]} do regex=${parts[$part]} for i in 1 4 do files=$(find ../.. $(week2files $ds $i) | grep -E "$regex") || true if [ -z "$files" ] then continue fi # tellingen met tags # pubdate soms kan verschillen voor hetzelfde bericht, # bijvoorbeeld wanneer een oude versie op zaterdag is verschenen # en een bijgewerkte versie op maandag. Dan valt de nieuwe versie in # een volgende week (en dus directory) dan de oude versie, en wordt het # bericht dus opieuw opgeslagen. # Daarom moet pubdate verwijderd worden uit de metadata, om dubbele # tellingen te voorkomen. # Dit speelt alleen(?) bij atom-feeds, zoals van de VRT. say $part-nieuwe-namen-$ds-$i alto \ 'fp://node[((@cat="mwu" and node[@pt="spec"]) or (@pt and @*="eigen" and not(@rel="mwp"))) and not(@his="normal") and not(@his_1="decap" or @his_1="0")]' \ 'tt:%w\t%d\t%I' $files \ | sed -e 's/pubdate: "[-0-9]*"//' \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | items2count > $part-nieuwe-namen-$ds-$i top20 $part-nieuwe-namen-$ds-$i say $part-nieuwe-woorden-$ds-$i alto \ 'fp://node[@his and not(@rel="mwp" or @cat="mwu") and not(@his="normal" or @his="decap" or @his="name" or @his="prefix_name" or @his_1="decap" or @his_1="0" or @his="skip" or @his="robust_skip" or @his="w_dia" or @his="wo_dia" or @his="within_word_conjunct")]' \ 'tt:%w\t%d\t%I' $files \ | sed -e 's/pubdate: "[-0-9]*"//' \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | items2count > $part-nieuwe-woorden-$ds-$i top20 $part-nieuwe-woorden-$ds-$i say $part-locaties-$ds-$i alto \ 'fp://node[(@neclass="LOC" and not(@rel="mwp")) or (@cat="mwu" and node[@pt="spec" and @neclass="LOC"])]' \ 'tt:%l\t%d\t%I' $files \ | sed -e 's/pubdate: "[-0-9]*"//' \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | items2count > $part-locaties-$ds-$i say $part-personen-$ds-$i alto \ 'fp://node[(@neclass="PER" and not(@rel="mwp")) or (@cat="mwu" and node[@pt="spec" and @neclass="PER"])]' \ 'tt:%l\t%d\t%I' $files \ | sed -e 's/pubdate: "[-0-9]*"//' \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | items2count > $part-personen-$ds-$i say $part-organisaties-$ds-$i alto \ 'fp://node[(@neclass="ORG" and not(@rel="mwp")) or (@cat="mwu" and node[@pt="spec" and @neclass="ORG"])]' \ 'tt:%l\t%d\t%I' $files \ | sed -e 's/pubdate: "[-0-9]*"//' \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | items2count > $part-organisaties-$ds-$i say $part-overige-namen-$ds-$i alto \ 'fp://node[(@neclass="MISC" and not(@rel="mwp")) or (@cat="mwu" and node[@pt="spec" and @neclass="MISC"])]' \ 'tt:%l\t%d\t%I' $files \ | sed -e 's/pubdate: "[-0-9]*"//' \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | items2count > $part-overige-namen-$ds-$i # tellingen met tags en postags say $part-nieuwe-woorden-extra-$ds-$i alto \ 'fp://node[@his and not(@rel="mwp" or @cat="mwu") and not(@his="normal" or @his="decap" or @his="name" or @his="prefix_name" or @his_1="decap" or @his_1="0" or @his="skip" or @his="robust_skip" or @his="w_dia" or @his="wo_dia" or @his="within_word_conjunct")]' \ 'tt:%w\t%d\t%l\t%P\t%I' $files \ | sed -e 's/pubdate: "[-0-9]*"//' \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | items2count > $part-nieuwe-woorden-extra-$ds-$i top20 $part-nieuwe-woorden-extra-$ds-$i # tellingen met postags say $part-nieuwe-adjww-extra-$ds-$i alto \ 'fp://node[@pt and @his and not(../@his="normal" or @rel="mwp" or ../@his="name" or ../@his_1="decap") and not(@his="normal" or @his="name" or @his="skip" or @his="robust_skip" or @his="w_dia" or @his="wo_dia" or @his="decap" or @his="within_word_conjunct") and not(@pt="n") ]' \ 'tt:%w\t%P\t%I' $files \ | sed -e 's/\.[0-9][0-9]*$//' | sort | uniq \ | sed -e 's/\(.*\)\t.*/\1/' | uniq -c \ | grep -v '^ *1 ' \ | sed -e 's/\([0-9]\) */\1\t/' | sort -f -k 2 | sort -n -r -k 1,1 -s \ > $part-nieuwe-adjww-extra-$ds-$i done done data2json $ds 1 > ../json/$year/DATA-$ds-1.json data2json $ds 4 > ../json/$year/DATA-$ds-4.json dates2json > ../json/index1.json dates2json > ../json/index4.json # rechten bijwerken chmod -R g+w /net/corpora/nlnieuws chgrp -R software /net/corpora/nlnieuws