diff --git a/collect.sh b/collect.sh index 122d51a..0e8dbff 100755 --- a/collect.sh +++ b/collect.sh @@ -48,9 +48,19 @@ do # 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. + 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 @@ -58,6 +68,7 @@ do alto \ 'fp://node[@his and not(@rel="mwp" or @cat="mwu") and not(@his="normal" 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 @@ -65,24 +76,28 @@ do 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 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 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 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 diff --git a/xquery/README b/xquery/README index 2fae210..add5e12 100644 --- a/xquery/README +++ b/xquery/README @@ -1,2 +1,4 @@ dit wordt niet meer gebruikt xquery is veel te traag + +met xquery doet het er 4.8 keer zo lang over als zonder diff --git a/xquery/new2old.go b/xquery/new2old.go new file mode 100644 index 0000000..728383a --- /dev/null +++ b/xquery/new2old.go @@ -0,0 +1,66 @@ +package main + +import ( + e "codeberg.org/pebbe/errors" + + "bufio" + "encoding/xml" + "fmt" + "os" + "regexp" + "strings" +) + +type Item struct { + XMLName xml.Name `xml:"i"` + Msg string `xml:"m"` + Tags []string `xml:"t"` + Word string `xml:"w"` +} + +var ( + x = e.ExitErr + reTag = regexp.MustCompile(`tag: "((?:\\.|[^\\"])*)"`) + reUnquote = regexp.MustCompile(`\\.`) +) + +func main() { + + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + line := scanner.Text() + aa := strings.Split(line, "\t") + item := Item{ + // Msg: aa[2][:strings.LastIndex(aa[2], ".")], + Msg: aa[2], + Word: aa[0], + Tags: make([]string, 0), + } + for _, tag := range parseTags(aa[1]) { + item.Tags = append(item.Tags, tag) + } + b, err := xml.Marshal(item) + x(err) + fmt.Println( + strings.ReplaceAll( + strings.ReplaceAll(string(b), "'", "'"), + """, `"`)) + } + x(scanner.Err()) + +} + +func parseTags(s string) []string { + tags := make([]string, 0) + aa := reTag.FindAllStringSubmatch(s, -1) + for _, a := range aa { + tags = append(tags, unquote(a[1])) + } + return tags +} + +func unquote(text string) string { + return reUnquote.ReplaceAllStringFunc(text, func(s string) string { + return s[1:] + }) +}