Sunday, September 11, 2005

Diakritika a slovenština na abclinuxu.cz

Při pročítání diskuze na abclinuxu.cz mi vždycky připadalo, že příspěvky ve slovenštině jsou daleko častěji psány bez diakritiky (Nic proti slovenštině, ale bez háčků a čárek se mi čte daleko hůř). A tak jsem se rozhodl exaktně ověřit, jestli je to tak.


A výsledek je takový:

58,2 % příspěvků je psáno s diakritikou, naopak bez diakritiky je jich 39,5 %. Zbývající 2,3 % jsou příspěvky bez textového obsahu, tj. smajlíci, čísla apod.

Česky je napsáno 80,1 % zápisů, slovensky 15,5 %, u zbývajících 4,4 % nelze rozpoznat použitý jazyk.

Jedna třetina (33,0 %) česky psaných zápisů neobsahuje háčky, u slovenštiny jsou to naopak téměř tři čtvrtiny (73,1 %) - z toho vyplývá jednoznačný závěr: Slováci (na abclinuxu.cz) kašlou na diakritiku více než Češi.

graf
Postup:

Využil jsem toho, že diskuze je přístupná přes rozhraní news. Programem slrn-pull jsem stáhnul na disk posledních 10 000 příspěvků. Základní rozdělení na příspěvky s diakritikou a bez diakritiky jsem provedl na základě hlavičky Content-type (tj. ascii/ISO-8859-2) (tj. počítá se jen tělo příspěvku, nikoliv subject; to je logické, protože je jistě spousta případů, kdy bezháčkový člověk odpoví na příspěvek s háčkovaným subjectem). Při té příležitosti jsem z příspěvků odstranil patičky abclinuxu (linky na diskuzi):

#!/bin/bash
adresarcil="/home/hajma/tmp/recode"
adresarzdroj="/var/spool/slrnpull/news/gmane/user-groups/linux/czech"
for soubor in $(ls $adresarzdroj)
do
cat $adresarzdroj/$soubor | formail -x Content-Type | grep us-ascii
if [ $? -eq 0 ]
then
cat $adresarzdroj/$soubor | formail -I "" | sed -r /"^Zobrazit diskusi: http:\/\/www.abclinuxu.cz\/forum\/show\/"\|"^Zobrazit komentar: http:\/\
/www.abclinuxu.cz\/forum\/show\/"/d > $adresarcil/ascii/$soubor
else
cat $adresarzdroj/$soubor | formail -x Content-Type | grep ISO-8859-2
if [ $? -eq 0 ]
then
cat $adresarzdroj/$soubor | formail -I "" | sed -r /"^Zobrazit diskusi: http:\/\/www.abclinuxu.cz\/forum\/show\/"\|"^Zobrazit komentar: http:\
/\/www.abclinuxu.cz\/forum\/show\/"/d | recode l2/qp..l2 > $adresarcil/iso/$soubor
fi
fi
done

Vlastní metoda rozdělení podle jazyka byla jednoduchá: pokud příspěvek obsahuje více českých slov, je český a vice versa.

Pro svůj účel jsem využil český a slovenský slovník MySpell, které jsem ale nejprve musel zbavit pomocných znaků a převést na malá písmena:

#!/bin/bash
adresarcil="/home/hajma/tmp/recode"
adresarzdroj="/usr/share/dict/ooo/"
cat $adresarzdroj/cs_CZ.dic | sed -e s@"\/.*$"@@g | tr '[:upper:]' '[:lower:]' | sort | uniq > $adresarcil/cz.txt
cat $adresarzdroj/sk_SK.dic | sed -e s@"\/.*$"@@g | tr '[:upper:]' '[:lower:]' | sort | uniq > $adresarcil/sk.txt

Z českého slovníku jsem ještě ručně odstranil slovo "a".

Z obou souborů jsem dále odstranil slova, která se vyskytují i ve druhém jazyce:

#!/bin/bash
adresar="/home/hajma/tmp/recode"
for slovo in $(cat $adresar/cz.txt)
do
grep -wq $slovo $adresar/sk.txt
if [ $? -eq 1 ]
then
echo $slovo >> $adresar/cisteceskaslova.txt
fi
done
for slovo in $(cat $adresar/sk.txt)
do
grep -wq $slovo $adresar/cz.txt
if [ $? -eq 1 ]
then
echo $slovo >> $adresar/cisteslovenskaslova.txt
fi
done

Potom jsem bral soubor po souboru, odstranil z nich cokoliv, co nebylo písmeno (díky, Yeti) a vyhledával jednotlivá slova v českém a slovenském slovníku.

#!/bin/bash
adresar="/home/hajma/tmp/recode/iso"
for soubor in $(ls $adresar)
do
cz=0
sk=0
for slovo in $(cat $adresar/$soubor | sed 's/[^[:alpha:]]\+/\n/g' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '/^
$/d' | tr '[:upper:]' '[:lower:]')
do
#echo $slovo
grep -wq -e $slovo /home/hajma/tmp/recode/cisteceskaslova.txt
if [ $? -eq 0 ]
then
cz=$((cz+1))
fi
grep -wq -e $slovo /home/hajma/tmp/recode/cisteslovenskaslova.txt
if [ $? -eq 0 ]
then
sk=$((sk+1))
fi
done
if [ $cz -gt $sk ]
then
cp $adresar/$soubor /home/hajma/tmp/recode/diacz
elif [ $cz -lt $sk ]
then
cp $adresar/$soubor /home/hajma/tmp/recode/diask
elif [ $cz -eq 0 ]
then
cp $adresar/$soubor /home/hajma/tmp/recode/dianeznamo
else
cp $adresar/$soubor /home/hajma/tmp/recode/diaczsk
fi
done
Update: Zapomněl jsem doplnit, že podobně se to udělá i pro příspěvky bez diakritiky (převod slovníků na bezháčkové probíhá pomocí recode takto:
cat $adresarcil/cz.txt | recode -f l2..flat | sort | uniq > czbezhacku.txt

No comments:

Post a Comment