[Jacob Sparre Andersen]
Men vi kan også bare blive enige om at udfase »ANTONYMS«- og »SYNONYMS«-felterne helt. Det kræver kun en mindre ændring af nogle af programmerne i speling.org-pakken, en rettelse af vores procmail-filtre og en enkelt konvertering af »ANTONYMS«- og »SYNONYMS«-felter i ordlistekildeteksterne.
Jeg er enig. Skal vi sette igang? Den viktigste aktiviteten for å fase ut ANTONYMs og SYNONYMS er å oppdatere feltbeskrivelsen, slik at vi har en spesifikasjon å sammenligne implementasjonene med. :)
Hva med å skrive om procmail-filtrene til å sende mailen til et program som kan pakke ut MIME-formattert mail og håndtere ulike tegnsett i stedet for enkel linjebasert uthenting?
Både perl og python skulle fungere utmerket.
Jeg har forresten oppdatert speling-extract-synonyms litt, til å unngå noen duplikater og å begrense seg til ord som står i orddatabasen. Her er ny utgave. Hvor legger du din kopi? Jeg kunne ønske meg at din kopi er autorativ, men fant den ikke i tarballen fra speling.
#!/usr/bin/perl # # Author: Petter Reinholdtsen # Date: 2005-12-02 # License: GNU Public License # # speling-extract-synonyms extract synonyms usable for OOo from the # raw data files produced by www.speling.org software. # # Usage: # echo abcdefghijklmnopqrstuvwxyzæøåABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ- > thesaurus-ll.txt # speling-extract-synonyms < source >> thesaurus-ll.txt # thescoder thesaurus-ll.txt ll_CC
use warnings; use strict;
# The difference between approvals and rejections need to be higher # than this value. my $acceptlimit = 0;
my $debug = 0;
my %synonym; my %words;
my $word; while (<>) { chomp; $word = $1 if /^WORD: (.+)$/;
if (/^STATUS: +$/) { $words{$word}++; } elsif (/^STATUS: -$/) { $words{$word}--; } if (defined $word && /^SYNONYMS?: (.+)$/) { my @synonyms = split(/\s*,\s*/, $1); if (exists $synonym{$word}) { print "Adding @synonyms\n" if $debug; push @{$synonym{$word}}, @synonyms; } else { print "Inserting @synonyms\n" if $debug; @{$synonym{$word}} = @synonyms; } } }
for $word (sort keys %synonym) { my $lastsynonym = ""; my $symlist = ""; for my $synonym (sort @{$synonym{$word}}) { # Do not accept the word ifself as a synonym next if ($word eq $synonym); # Only accept words with more accepts than rejects $symlist .= "; $synonym" if ($synonym ne $lastsynonym && exists $words{$synonym} && $acceptlimit < $words{$synonym}); $lastsynonym = $synonym; } print "$word$symlist\n" if $symlist; }