Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: damegu 09 Dubna 2011, 11:17:15
-
Ahoj,
potřeboval bych prosím poradit. Zajímám se o ispell a v návodu je, abych použil tyto příkazy:
perl -pe 'print "echo "' *.cat | sh - | \
perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
Tuším, že se mají vyhledat všechny soubory s příponou .cat, vytvoří se soubor czech.a-z, ale ten zbytek moc nechápu. Když ten příkaz zkusím, tak se pouze vytvoří prázdný soubor czech.a-z.
Další příkaz:
buildhash czech.a-z czech.aff czech.hash
Ten nechápu vůbec.
Díky moc za vysvětlení.
-
cele to znamena, ze se cte obsah tech .cat souboru, mezery a pomlcky se nahradi za konce radku a maze to nektere znaky a ten vysledek se zapisuje do toho couboru czech.a-z ... v pripade, ze ti to vytvori prazdny soubor, tak ocividne v adresari, kde to spoustis, nemas zadne soubory s koncovkou .cat ..
mozna bys mohl zminit, co za navod to je, protoze autor byl pravdepodobne uplne zhulenej kdyz napsalperl -pe 'print "echo "' *.cat | sh - | \
perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
misto
cat *.cat | perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
(jedine co me napada, je moznost, ze by uvnitr tech souboru byly nazvy shellovych promenych, ktere, by se timhle zpusobem expandovaly, ale o tom silne pochybuju (nemluve o tom, ze by to byla desna prasarna)
-
Díky.. Ispell je program, který slouží jako slovník. Je zde několik souborů s příponou cat, které obsahují slova podle rozdělení (podst. jm, příd. jm atd.) + občas nějaký popisek, jako je ve slovníku spis. češtiny (jestli je to ženský rod atd..). Např v jednom souboru je:
agave
alibi
{,dvou,dvoj}apartmá
aranžmá
aroma
atd.
Takže by to mělo tedy nejspíše vybrat slova, dát je na nový řádek a odstranit ty popisky. (tento soubor se poté použije, abych mohl přidávat nová slova a kontrolovat, jestli tam už takové slovo není).
Tady je ta část z README:
Zdrojový soubor czech.a-z pro vytvoření slovníku pro ispell se získá takto:
perl -pe 'print "echo "' *.cat | sh - | \
perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
Sloučený soubor se zpracuje příkazem buildhash:
buildhash czech.a-z czech.aff czech.hash
který vytvoří slovník pro ispell. Po zkopírování souboru czech.aff a
czech.hash do adresáře, ve kterém ispell očekává slovníky, lze ispell
pouľívat příkazem
ispell -d czech kontrolovaný_soubor
-
aha, takze se to provadi tak krkolomne opravdu kvuli shellove expanzi... nicmene opravdu nevidim zadny duvod (pokud ten prikaz zadavas v adresari, kde jsou ty .cat soubory), proc zustane, ten soubor czech.a-z prazdny...
-
když ten příkaz pustim, tak mi to hodí:
david@ubuntu:~/ispell-czech$ perl -pe 'print "echo "' *.cat | sh - | perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
sh: ,do,p�e}transformovat/ATN: not found
sh: ,na,o,pro,p�e,p�i,roz,v,vy,z}kop�rovat/ATN: not found
sh: Syntax error: EOF in backquote substitution
Není možný, že je to tim, že mám v těch souborech .cat nějaký špatný kódování? Věta v těch souborech vypadá třeba takhle: "Pokud při nalezení neznámého slova při kontrole textu zvolíte moľnost"
Místo ž je nějakej divnej znak atd.. A to sem to podle návodu zkoušel změnit z windows 1250 na utf8 :(
-
jo, to je zarucene spatnym kodovanim... co vypise
enca *.cat
?
v pripade, ze to nebude UTF-8, tak nejdriv spust prikaz
enconv *.cat
(jinak jsem pochopil, co jsi mel predtim za problem, ale to zu asi vis - znak \ na konci radku znamena, ze prikaz pokracuje na dalsim radku; nejak jsem zapomnel ze pro nekoho to uplne jasne byt nemusi... )
-
david@ubuntu:~/ispell-czech$ enca *.cat
castice.cat: ISO 8859-2 standard; ISO Latin 2
cislovk.cat: ISO 8859-2 standard; ISO Latin 2
citoslov.cat: ISO 8859-2 standard; ISO Latin 2
geogr.cat: ISO 8859-2 standard; ISO Latin 2
hlavni.cat: ISO 8859-2 standard; ISO Latin 2
hovor.cat: ISO 8859-2 standard; ISO Latin 2
chybej.cat: ISO 8859-2 standard; ISO Latin 2
jmena.cat: ISO 8859-2 standard; ISO Latin 2
krestni.cat: ISO 8859-2 standard; ISO Latin 2
narstjaz.cat: ISO 8859-2 standard; ISO Latin 2
nepravid.cat: ISO 8859-2 standard; ISO Latin 2
nesklon.cat: ISO 8859-2 standard; ISO Latin 2
nezaraz.cat: ISO 8859-2 standard; ISO Latin 2
obce.cat: ISO 8859-2 standard; ISO Latin 2
predlozk.cat: ISO 8859-2 standard; ISO Latin 2
prijmeni.cat: ISO 8859-2 standard; ISO Latin 2
prislovc.cat: ISO 8859-2 standard; ISO Latin 2
spojky.cat: ISO 8859-2 standard; ISO Latin 2
zajmena.cat: ISO 8859-2 standard; ISO Latin 2
zkratky.cat: ISO 8859-2 standard; ISO Latin 2
-
použil jsem i ten druhý příkaz jak si poradil, je to už česky, žádne paznaky. Poté jsem pustil ten příkaz na vytvoření tho souboru se slovy, nenapsalo to už žádnou chybu, ale soubor je pořád prázdný :(
-
no sice nechapu, co na
perl -pe 'print "echo "' *.cat | sh - | perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
muze nefungovat, ale muzeme to zkusit postupne...
v kazdem kroku se vytvori jeden soubor, napis, ve kterem bude prazdny
1:perl -pe 'print "echo "' *.cat > krok1.txt
2:sh < krok1.txt > krok2.txt
3:perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' < krok2.txt > czech.a-z
-
Ty jo, když dám ten první příkaz ve složce, kde mám ty soubory s cat, tak to nehodí žádnou chybu, ale soubor text1 se nevytvoří. Když to použiju o úroveň výše (kde žádné .cat nejsou), tak to hodí hlášku
david@ubuntu:~$ perl -pe 'print "echo "' *.cat > krok1.txt
Can't open *.cat: Adresář nebo soubor neexistuje.
, ale soubor se vytvoří :(
Ubuntu mám asi 5 dní, tak snad nedělám nějakou základní chybu, ale fakt netušim, čim by to mohlo být...
-
ma se to zadavat v adresari s temi .cat soubory...
jestli to nevytvori soubor krok1.txt, tak zkus prikaz:
perl -pe 'print "echo "' *.cat
vystup by mel vypadat podobne jako
echo agave
echo alibi
echo {,dvou,dvoj}apartmá
echo aranžmá
echo aroma
atd... (proste hromada radku s "echo" na zacatku kazdeho)
pravdepodobne to cele bude v nejake hloupe drobne chybe...
-
Nevim, jak je to možný, ale
perl -pe 'print "echo "' *.cat | sh - | \
perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
najednou funguje :)) Hodí to sice tuhle hlášku david@ubuntu:~/ispell-czech$ perl -pe 'print "echo "' *.cat | sh - | perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
sh: ,do,p�e}transformovat/ATN: not found
sh: ,na,o,pro,p�e,p�i,roz,v,vy,z}kop�rovat/ATN: not found
sh: Syntax error: EOF in backquote substitution
david@ubuntu:~/ispell-czech$ ^C
david@ubuntu:~/ispell-czech$
Ale soubor se vytvoří a sou v něm ty slova, akorát teda soubor vypadá nějak takto:
doupě/K
doušek/Q
doutník/H
doutníkový/YRN
dovednější/YRE
dovětek/Q
dovolující/YN
dovozce/U
dovozcův/Y
dovozkyně/ZQ
A to za tim lomítkem by asi být nemělo
-
ty veci za lomitky tam jsou imho spravne (afaik se podle toho urcuje, jak se ta slova sklonuji apod.)
ty chyby budou pravdepodobne asi porad neco s kodovanim...
P.S.: kdyz jsi tady ten problem zacal resit, tak jsem to taky chtel vyzkouset, ale na cesky slovnik k ispellu jsem nasel jenom nefunkcni linky, kde jsi to nsael ty?
-
http://www.kai.tul.cz/~kolar/ispell/
to druhý :)
-
na domovskou stranku toho Kolare jsem se dostal i predtim, ale to me zastavily nefunkcni linky...
kazdopadne, aby to probehlo bez problemu (ony byly ty problemy i tak zanedbatelne, vynechalo to jen par slov), tak staci modfikovat ten prikaz na
perl -pe 'print "echo "' *.cat | sed 's#[|`]##' | sh - | perl -pe 's/ +/\n/g; s/[{}\.]//g; s/-/\n/g' > czech.a-z
nicmene, i potom mi pripada, ze to neni uplne idealni - nektera slova jsou tam duplicitni (napr. "své/N" je tam 9x, celkove je tam asi 7000 duplicit)
-
Díky.. teď mám další problém :(
Když chci zkontrolovat nějaký soubor, zadám cestu, ale vyskočí mi hláška: Can't open /usr/lib/ispell/czech.hash
Googlil jsem, co je to zač, ale moc z toho moudrý nejsem.
-
Už jsem to vyřešil :)
-
Tak snad poslední problém, kterej mám, jinak už všechno šlape :D :)
Použiju příkaz david@ubuntu:~/ispell-czech$ ispell -d czech -l < kont.cat > nova.cat
aby se ze souboru kont.cat vybraly slova, která ispell nezná a vypsali se do souboru nova.cat.
Problém je ale v kódování. Když otevřu soubor nova.cat, tak jsou tam paznaky. Použil jsem david@ubuntu:~/ispell-czech$ enca *.cat
a vypsalo mi to nepravid.cat: Universal transformation format 8 bits; UTF-8
nesklon.cat: Universal transformation format 8 bits; UTF-8
nezaraz.cat: Universal transformation format 8 bits; UTF-8
nova.cat: KOI8-CS2 code (`T602')
LF line terminators
obce.cat: Universal transformation format 8 bits; UTF-8
predlozk.cat: Universal transformation format 8 bits; UTF-8
a pak jsem použil, jak si mi radil david@ubuntu:~/ispell-czech$ enconv nova.cat
ale nepomohlo, soubor vypadá jinak, ale jsou tam stále paznaky (ale jiné, než předtím).
Po opětovném david@ubuntu:~/ispell-czech$ enca *.cat
vyleze toto
nepravid.cat: Universal transformation format 8 bits; UTF-8
nesklon.cat: Universal transformation format 8 bits; UTF-8
nezaraz.cat: Universal transformation format 8 bits; UTF-8
nova.cat: Universal transformation format 8 bits; UTF-8
Doubly-encoded to UTF-8 from KOI-8_CS_2
obce.cat: Universal transformation format 8 bits; UTF-8
predlozk.cat: Universal transformation format 8 bits; UTF-8
Neví někdo, jak změnit kódování, aby to bylo k přečtení?:) Díkes