Spelling

From StrelaWiki
Jump to navigation Jump to search

Spell checkers

  • Ispell najstarsi spell checker. Uz sa dlhsiu dobu nevyvija, posledna verzia programu ispell-3.4.00, velky pocet dictionaries, ktore boli dlhodobo udrziavane, obnovovane. Ispell program a prislusne slovniky sa v Fedore uz dlho nenachadza. V podstate jediny zmysel pouzivania Ispell bola podpora ruskeho (Lebedev) slovnika, ktory sa vyvijal prave pre tento spell checker. Subory so samotnymi slovnikmi slovak.aff a slovak.hash sa v Fedora default nachadzaju v /usr/local/lib/ (zavisi od nastavenych ciest v ispell programe).
  • Aspell nahradza Ispell ako program alebo ako kniznica, najprv bol vyvijany ako Pspell. Od verzie 0.6 ma podporu unicode + affix compression. Pouziva "Ispell compatibility script for Aspell", ten sa vztahuje na samotny program, nie vsak na dictionaries, ktore sa znacne lisia od Ispell-ovskych, a ktore sa v Aspell nedaju pouzit. Transformacia Ispell na Aspell (ako aj na Hunspell) dictionaries znacne komplikovana, problem s affix suborom atd. V repozitaroch Fedory sa nachadza program aspell a jazykove slovniky, bohuzial jednotlive dictionaries nepatria prave k najaktualnejsim. V pripade potreby preto instalujeme len samotny program aspell bez konkretnych slovnikov. Dictionaries subory sk.rws a sk_affix.dat sa nachadzaju v /usr/{lib,lib64}/aspell-0.60/.
  • MySpell kombinuje svojich dvoch predchodcov. Bol vyvinuty pre OpenOffice.org, pouzivala ho aj Mozilla. Od verzie OpenOffice.org 2.0.2, resp. aj Firefox 3 sa uz nepouziva a bol nahradeny Hunspell-om.
  • Hunspell najnovsi (dufajme, ze aj posledny) spell checker. Pouziva sa aktualne v LibreOffice, Mozilla, Chromium (upravene slovniky) atd. Je zalozeny na MySpell (kompatibilne dictionaries), pridava podporu Unicode a rozne nove vlastnosti. Hunspell dictionaries si v podstate kazdy projekt vytvara vlastne. Hunspell spell checker je uz v Fedore default nainstalovany (program hunspell vratane anglickeho slovnika). Aktualnost jednotlivych dictionaries v repozitaroch Fedory nie je prilis idealna, preto potrebne slovniky radsej nainstalovat manualne (z ineho zdroja). Subory sk_SK.aff a sk_SK.dic sa nachadzaju v /usr/share/myspell/.

Dictionaries

Slovak

Projekt sk-spell pravidelne aktualizovany, podpora vsetkych spell checker-ov (a nie len slovnikov), najme vsak najnovsi Hunspell. FTP server vsak neobsahuje vsetky subory, ktore sa v ramci projektu vytvaraju, aktualizuju.

Russian

Словарь русского языка для ispell (автор Александр Лебедев) на основе которого сделанные практически все остальные словари. Включена полноценная поддержка буквы ё (другие словари просто заменяют букву ё на букву е). Самый последний словарь rus-ispell-0.99g5.tar.gz использует ~ 139.000 базовых слов или ~ 1.367.000 полное число образуемых из них словоформ (небольшая розница в числе в зависимости от буквы ё/е), KOI8-R кодировка.

Miscellaneous

chromium dictionaries

Chromium, resp. Google Chrome sice pouziva Hunspell spell checker avsak samotne slovniky (koncovka .bdic) pouzivaju vlastny optimalizovany format. Subor *.bdic (binarny format) s optimalizovanym formatom je vytvoreny z klasickych hunspell slovnikov *.aff, *.dic (a navyse *.dic_delta, kde mozu byt ulozene dalsie, nove slova) pouzitim programu convert_dict, ktory je sucastou Chromium browser project.

Google Chrome si po vybere uzivatelom konkretneho jazyka vzdy sam stiahne konkretny, potrebny slovnik. Google Git hunspell_dictionaries repository obsahuje vsetky dictionaries. Napr. pre slovencinu si aktualne (marec 2019) stiahne subor sk-SK-3-0.bdic. Google Git powered by Gitiles neumoznuje priamo stiahnut raw subor, takze manualne stiahnut napr. samotny subor sk-SK-3-0.bdic len nejak takto

$ curl 'https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git/+/refs/heads/master/sk-SK-3-0.bdic?format=TEXT' | base64 -d > sk-SK-3-0.bdic

Tento subor (so slovnikom pre slovencinu) sa nachadza $HOME/.config/google-chrome/Dictionaries/sk-SK-3-0.bdic. Slovnik pre slovencinu je znacne historicky, verzia z roku 2005, pricom LibreOffice alebo Firefox pouzivaju najnovsiu verziu z roku 2013. Je teda max. ziaduce zamenit slovnik Google Chrome najnovsou verziou. Jedina moznost je pouzit program convert_dict.

Kompilacia programu convert_dict zo zdrojovych kodov Chromium browser project

[musinsky@strela ~]$ pwd
/home/musinsky
[musinsky@strela ~]$ mkdir ~/CHROMIUM && cd ~/CHROMIUM
[musinsky@strela CHROMIUM]$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
Cloning into 'depot_tools'...

[musinsky@strela CHROMIUM]$ export PATH="$PATH:/home/musinsky/CHROMIUM/depot_tools/"
[musinsky@strela CHROMIUM]$ fetch --no-history --nohooks chromium
Running: gclient root
# about 5-10 minutes

[musinsky@strela CHROMIUM]$ cd src/
[musinsky@strela src]$ # ./build/install-build-deps.sh   # skip (not need, building only "convert_dict")
[musinsky@strela src]$ gclient runhooks
# about 2-3 minutes

[musinsky@strela src]$ gn gen out/Default
Done. Made 12193 targets from 1929 files in 4851ms
[musinsky@strela src]$ autoninja -C out/Default convert_dict
/home/musinsky/CHROMIUM/depot_tools/ninja -C out/Default convert_dict
ninja: Entering directory `out/Default'
[950/950] LINK ./convert_dict
# about 2-3 minutes
[musinsky@strela src]$ cd out/Default/
[musinsky@strela Default]$ ./convert_dict
Usage: convert_dict <dicfile base name>

Example:
  convert_dict en-US
will read en-US.dic, en-US.dic_delta, and en-US.aff from the current directory and generate en-US.bdic

[musinsky@strela Default]$

Programom convert_dict konvertujeme aktualne slovenske slovniky (original Hunspell dictionaries z LibreOffice alebo Firefox ), t.j. subory sk-SK.aff a sk-SK.dic (pripadne aj sk-SK.dic_delta), na Google Chrome vlastny optimalizovany format sk-SK.bdic. Google Chrome neumoznuje pridat nejaky vlastny alebo novy slovnik, takze musime zamenit povodny slovensky (ale zastaraly) Google Chrome slovnik sk-SK-3-0.bdic na tento aktualny, novo vytvoreny slovnik.

$ cp -ip sk-SK.bdic $HOME/.config/google-chrome/Dictionaries/sk-SK-3-0.bdic
cp: overwrite '/home/musinsky/.config/google-chrome/Dictionaries/sk-SK-3-0.bdic'? y

Analogicky takto mozeme vytvorit a pridat aj slovensky ASCII (bez diakritiky) slovnik. Kedze Google Chrome neumoznuje pridat vlastny slovnik, musime v samotnom prehliadaci pridat nejaky "iny jazyk" napr. cestinu, a potom, ako si prehliadac stiahne prislusny subor zo slovnikom cs-CZ-3-0.bdic, ho prepiseme nasim novo vytvorenym slovenskym ASCII slovnikom.

$ cp -ip sk-SK-ascii.bdic $HOME/.config/google-chrome/Dictionaries/cs-CZ-3-0.bdic
cp: overwrite '/home/musinsky/.config/google-chrome/Dictionaries/cs-CZ-3-0.bdic'? y

!!! POZOR !!! ak by sa casom original Google Chrome slovnik obnovil (nejaky update v repository), tak sa nas subor s upravenym slovnikom prepise. Pre sk-SK slovnik len mozeme dufat, ze update bude na aktualnu verziu a teda cela tato procedura so zamenou odpadne. V pripade update cs-CZ slovnika (v skutocnosti nas sk-SK-ascii slovnik) musime potom tento subor manualne prepisat. Samozrejme idealna by bola moznost pridavat do Google Chrome vlastne slovniky.

aspell-ru

Najaktualnejsi build pre ruske (Lebedev) Aspell (Ispell a Hunspell) dictionaries. Zo suboru aspell-ru-lebedev-xxx.rpm extrahujem vsetky subory z /usr/{lib,lib64}/aspell/* a /usr/share/aspell/* do systemoveho /usr/{lib,lib64}/aspell-0.60/. Linkujem pouzivanie sucasne slovnika aj s "yo" resp. "ye"

$ ln -s ru-lebedev.dat ru.dat
aspell dictionaries from Linux to Windows
  • export from Linux
$ aspell --lang=ru dump master ru-lebedev-io > ru-lebedev-io_utf8.txt
$ iconv -f UTF8 -t KOI8-R ru-lebedev-io_utf8.txt > ru-lebedev-io_koi8-r.txt
  • import to Windows
    • install original (old) russian dictionary
    • must copy (rewrite) ru_phonet.dat file from Linux to Windows
C:\> aspell --lang=ru create master ru_new.rws < ru-lebedev-io_koi8-r.txt

ispell-ru

Na vytvorenie ruskeho (Lebedev) slovnika je potrebna len utilita buildhash, ktora je sucastou ispell balika. Pre jej kompilaciu je potrebny yacc parser generator (dnf install byacc)

$ wget wget https://www.cs.hmc.edu/~geoff/tars/ispell-3.4.00.tar.gz
$ tar -xzvf ispell-3.4.00.tar.gz
$ cd ispell-3.4.00/
$ make buildhash

Vytvorime aktualny rusky (Lebedev) slovnik (zo source files) s podporou ruskeho "yo", pripadne oddelene slovniky s "yo" resp. "ye"

$ wget ftp://scon155.phys.msu.su/pub/russian/ispell/rus-ispell-0.99g5.tar.gz
$ mkdir rus-ispell
$ tar -xzvf rus-ispell-0.99g5.tar.gz -C rus-ispell
$ cd rus-ispell
$ sed -i 's/buildhash/..\/buildhash/g' Makefile   # use compiled ../buildhash (from parrent dir)
$ make YO=1

cstocs

Perl program cstocs sa nachadza v CPAN module Cstools, ale vo Fedore tento modul nie je, takze potrebna kompilacia, resp. instalacia

$ dnf install perl-ExtUtils-MakeMaker
$ wget https://cpan.metacpan.org/authors/id/J/JA/JANPAZ/Cstools-3.42.tar.gz
$ tar -xzvf Cstools-3.42.tar.gz
$ cd Cstools-3.42/
# from debian cstocs package get patch, changes to 3.42-3 are not really necessary
$ wget https://sources.debian.org/data/main/c/cstocs/1:3.42-3/debian/patches/debian-changes-1:3.42-1 -O debian-changes.patch
$ patch -p1 < debian-changes.patch

# install as admin default to /usr/local
$ perl Makefile.PL
$ make; make test
$ make install

# install as user
$ perl Makefile.PL PREFIX=$HOME/Cstools
$ make; make test
$ make install
# execute as user
$ export PATH=$PATH:$HOME/Cstools/bin
$ export PERL5LIB=$HOME/Cstools/share/perl5/   # add to @INC path, check with perl -V

Nakoniec predsa len existuje moznost instalovat lubovolne Perl modules z CPAN aj priamo vo Fedora

$ dnf install perl-CPAN
$ cpan Cz::Cstocs