SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: Danish spell checking dictionary updated



Morten Bo Johansen <sslug@sslug> wrote:

> I forbindelse med DBL, tænkte jeg at det måske ville være nemmest at
> lave rettelser i den scannede tekst, hvis nogle frivillige hver tog en
> bid af den ordliste jeg henviste til på min hjemmeside, og så lavede
> hver deres liste over fejlstavede/fejlformaterede ord og sendte disse
> til Lars, som så via et script med f.eks. sed indføjede rettelserne i et
> hug.

> Jeg sidder lige og roder med en løsning. Hvis jeg kommer frem til
> noget brugbart, hører I nærmere.

Okay, så har jeg et forslag til en procedure for korrekturlæsning af
Projekt Runeberg-filer:

1) Lars Aronsson (eller anden ansvarlig på projektet) laver en fil som
den jeg henviste til i går, dvs. en fil der indeholder én instans af
samtlige scannede ord i et bogværk, hver på en linje for sig.

2) Korrekturlæseren kigger listen igennem og returnerer en rettet liste
til Lars.

3) Lars bruger vedlagte script til at foretage rettelserne.


ad 1: Jeg brugte flg. kommando til at lave listen

  find ... | tr -cs '[a-zA-ZæøåÆØÅ0-9-]' '[\n*]' | sort -u >dbl_ordliste

ad 3: Her er mit forslag til et script (kan sikkert forbedres):

---- erstat.sh start -----

#!/bin/bash

## erstat.sh - et script der ud fra en rettelsesfil rekursivt erstatter n
## forekomster af ord i n antal filer med et andet.
## Filen med rettelser skal have flg. format:
##
## forkert_ord_1 rigtigt_ord_1
## ...
## forkert_ord_n rigtigt_ord_n

rettelsesfil=./rettelser
sti=$HOME/tmp/dbl

if [ ! -f $rettelsesfil ]; then
   echo $rettelsesfil ikke fundet
   exit 1
fi

erstat () 
{ 
   for fil in $(find $sti -type f -name \*.txt);
   do 
      cp $fil $fil~
      sed "s/$1/$2/g" $fil~ >$fil
      rm $fil~
   done 
}

# slet alle blanke linjer i bunden af fil
cp $rettelsesfil $rettelsesfil~
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' $rettelsesfil~ >$rettelsesfil
rm $rettelsesfil~

antal_rettelser=$(cat $rettelsesfil | wc -l)

let "rettelse = 1"

# sørg for at rettelsesfil har to ord på hver linje
while [ ! $rettelse -gt $antal_rettelser ]
do
   set $(sed ''$rettelse'!d' $rettelsesfil)
   
   if [ ! $# == 2 ]; then
      echo "Rettelsesfil skal have to ord på hver linje"
      exit 1
   fi  
   
   let "rettelse = rettelse + 1"
done

let "rettelse = 1"

# skriv ændringer linje for linje fra rettelsesfil til filer
while [ ! $rettelse -gt $antal_rettelser ]
do
   erstat $(sed ''$rettelse'!d' $rettelsesfil)
   let "rettelse = rettelse + 1"
done

---- erstat.sh slut -----

Hvis den rettelsesfil som korrekturlæseren har sendt tilbage ser
således ud:

  0jeblikke Øjeblikke
  Admi-ralitetsadjudant Admiralitetsadjudant
  ArenstorfF Arenstorff
  ...

så er det bare at køre scriptet, så bliver samtlige rettelser i
rettelsesfilen tilføjet til samtlige filer i den angivne sti.

Lad mig høre hvad I (især Lars) mener.


Morten



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 20:54
Denne side vedligeholdes af MHonArc .