Portál AbcLinuxu, 19. dubna 2024 17:40

Filtrujeme čtivé texty z Projektu Gutenberg 9

3. 11. 2016 | Karel Kulhavý
Články - Filtrujeme čtivé texty z Projektu Gutenberg 9  

Minule jsme vytvořili skript hledající soubory s hodně výskyty přímé řeči. Již doběhl, a tak uvidíme několik čtivých děl, které nám přinesl.

Na výstupu skriptu bude soubor prima_rec.txt, který bude mít zase 55 tisíc řádek, protože pro každý existující soubor v něm bude jednořádková informace o tom, kolik vzorů přímé řeči se v něm vyskytuje. O počtu řádek se můžeme přesvědčit příkazem wc -l prima_rec.txt. Tento soubor prima_rec.txt si teď setřídíme, abychom se dozvěděli jména souborů, ve kterých se přímá řeč vyskytuje nejčastěji, a mohli jsme provést manuální inspekci jejich obsahu. Podíváme se na výstup příkazu LC_ALL=C sort -nrk1 prima_rec.txt |head -n 30

8490 pg/5/4/0/5400/5400.txt
8467 pg/5/4/0/5400/old/wc63w10.txt
6471 pg/etext02/whewk12.txt
6413 pg/3/4/0/3400/3400.txt
6412 pg/etext02/whewk11.txt
5706 pg/etext02/whewk10.txt
4992 pg/3/2/5/3254/old/glent12.txt
4990 pg/3/2/5/3254/3254.txt
4980 pg/3/2/5/3254/old/glent11.txt
4947 pg/3/2/5/3254/old/glent10.txt
4758 pg/2/9/8/2981/old/csnva11.txt
4752 pg/2/9/8/2981/old/csnva10.txt
4738 pg/2/9/8/2981/2981.txt
4114 pg/4/0/0/4000/4000.txt
4110 pg/4/0/0/4000/old/imewk10.txt
2323 pg/4/5/450/450.txt
2322 pg/4/5/450/old/lenox10.txt
2255 pg/1/1/8/1184/old/crsto12.txt
2249 pg/1/1/8/1184/old/crsto11.txt
2249 pg/1/1/8/1184/old/crsto10.txt
2249 pg/1/1/8/1184/1184.txt
2186 pg/1/8/9/9/18997/18997.txt
2154 pg/3/0/4/3045/3045.txt
2099 pg/etext05/8quee10.txt
2099 pg/etext05/7quee10.txt
1950 pg/1/5/6/2/15627/15627.txt
1947 pg/3/1/1/0/31100/31100.txt
1901 pg/5/2/3/5231/5231.txt
1870 pg/3/3/5/3350/old/es12v11.txt
1870 pg/3/3/5/3350/3350.txt

Nejvíce přímé řeči obsahuje…

S mocností 8490 a 8467 výskytů na nás útočí zase sborník Winstona Churchilla. Intenzity 6471, 6413 a 6412 a 5706 výskytů dosáhl sborník děl W. D. Howellse. Odkaz je na seznam jeho děl na projektu Gutenberg, který je setříděný podle popularity. Můžete tedy začít zkouškou čtiva jeho provenience, které je už u ostatních lidi oblíbené. Kdo to byl W. D. Howells? Howells byl spisovatel románů, realista. Je otec amerického realismu. Toto bych označil za první bingo v našem hledání čtivé literatury. Román bych vedle povídky považoval za nejběžnější žánr, který si pod ideou čtivé literatury představit. Wikipedie uvádí jako zmínění hodné jeho dva romány, The Rise of Silas Lapham a A Traveler from Altruria. Silas Lapham je životní příběh vzestupu od chudoby k bohatství. Traveler from Altruria je utopistický román a kritika nespoutaného kapitalismu.

Filtrujeme čtivé texty z Projektu Gutenberg
Benátky za časů Casanovy.
Zdroj: Wikipedie (public domain).

Skóre 4992, 4990, 4980, 4947 nabízí zase kompilace Galsworthyho, kterého jsme již zmínili v minulém dílu. Vidíme, že už podruhé má jeden text čtyři různé počty výskytů přímé řeči. Je to způsobeno tím, že v projektu Gutenberg jsou různé verze podle toho, jak byly postupem času týmem projektu upravovány.

Na úroveň 4758, 4752, 4732 se dostal sborník děl Jacquese Casanovy. Když se o někom řekne, že je to casanova – ano, je to ten Casanova. Jako Jacques Casanova se podepisoval Giacomo Casanova, který je známý jako muž, jehož jméno je synonymem pro svůdce. V díle Dějiny mého života bez skrupulí popisuje svoje četná milostná dobrodružství. Byl to spisovatel, intrikát, špión a diplomat. Žil v 18. století v Benátské republice. Věděli jste, že Casanova zemřel v českém Duchcově, kde na zámku žil 13 let a pracoval jako knihovník? Nikoli ovšem knihovník projektu Gutenberg, protože ten ještě tehdy neexistoval.

Co skrývá úroveň 4114 a 4110? Jsou to Francouzští Nesmrtelní, sborník děl různých autorů, „majstrštyky fikce“ a „korunováno Francouzskou akademií“, jak píše původní obálka v angličtině. Zřejmě se jednalo o nějakou nóbl limitovanou číslovanou sérii, neboť na straně se zlatým písmem vyvedenými nadpisy a ornamenty píšou, že vytiskli 1240 registrovaných a číslovaných sad (vícesvazkových), Gutenberg zobrazuje fotografii čísla 37. Mezi díly ve sborníku je Červená lilie od Anatole France. Červená lilie je milostný román ze soudobé společnosti o ženě, kterou z bezdůvodné žárlivosti opustí její milenec. France v roce 1921 dostal Nobelovu cenu za literaturu. Podle článku v British Medical Journal z roku 1927 byla velikost jeho mozku pouze 2/3 normální velikosti.

Filtrujeme čtivé texty z Projektu Gutenberg
Zámek Duchcov, kde Casanova 13 let pracoval.
Obrázek: SchiDD via Wikimedia Commons (CC-BY-3.0

Zbavme se duplikátů

Viděli jsme, že literární díla nám často vychází z filtru v několika duplikátech, které se jen mírně liší. Mohli jsme si všimnout, že tyto duplikáty ve své cestě (jménech podadresářů) obsahují podadresář jménem old/. Vyfiltrujeme tedy všechny, které obsahují old a lomítko na obou stranách. Kdybychom lomítko vynechali, mohli bychom také přijít o nevinné knihy, které jen obsahují slovo old jako součást anglického názvu jejich adresáře. Vyfiltrujeme před seřazením, protože filtrace je rychlá (složitost O(n)), zatímco třídění je pomalejší (složitost O(n*log(n))).

Manuálová stránka příkazu grep popisuje přepínač -v, který namísto aby řádky s nalezenými vzory vypisoval, tak je nevypisuje. A vypisuje místo toho ty ostatní. Provedeme tedy nejdříve tento příkaz: time LC_ALL=C grep -v /old/ prima_rec.txt > prima_rec_bez_old.txt. Ač vstupní soubor má 55 tisíc řádek a 1,7 megabajtu, příkaz se mi provedl v pouhých 25 milisekundách!

Jak moc se nám velikost výpisu zredukovala? Výstupní soubor má 47 tisíc řádek: wc -l prima_rec_bez_old.txt. Redukce je tedy o pouhých 15 procent.

Podíváme se tedy znovu na seřazené počty výskytů zadaného vzoru přímé řeči, tentokrát doufejme bez duplikátů. Příkaz time LC_ALL=C sort -nrk1 prima_rec_bez_old.txt |head -n 30 vyprodukuje tento výstup:

8490 pg/5/4/0/5400/5400.txt
6471 pg/etext02/whewk12.txt
6413 pg/3/4/0/3400/3400.txt
6412 pg/etext02/whewk11.txt
5706 pg/etext02/whewk10.txt
4990 pg/3/2/5/3254/3254.txt
4738 pg/2/9/8/2981/2981.txt
4114 pg/4/0/0/4000/4000.txt
2323 pg/4/5/450/450.txt
2249 pg/1/1/8/1184/1184.txt
2186 pg/1/8/9/9/18997/18997.txt
2154 pg/3/0/4/3045/3045.txt
2099 pg/etext05/8quee10.txt
2099 pg/etext05/7quee10.txt
1950 pg/1/5/6/2/15627/15627.txt
1947 pg/3/1/1/0/31100/31100.txt
1901 pg/5/2/3/5231/5231.txt
1870 pg/3/3/5/3350/3350.txt
1868 pg/1/1/6/1/11615/11615.txt
1867 pg/5/1/4/5140/5140.txt
1845 pg/etext03/j2ahc10.txt
1845 pg/1/4/8/3/14833/14833.txt
1829 pg/1/6/9/1/16918/16918.txt
1746 pg/1/9/5/0/19500/19500.txt
1738 pg/etext03/tdcoa11.txt
1737 pg/1/5/0/1/15013/15013.txt
1736 pg/etext03/tdcoa10.txt
1736 pg/3/6/1/3610/3610.txt
1720 pg/3/6/2/3622/3622.txt
1693 pg/2/1/5/2158/2158.txt

real	0m0.159s
user	0m0.146s
sys	0m0.012s

sort je skutečně pomalejší, než byl grep – 146 versus 25 milisekund, tedy 5,8krát pomalejší. V příštím dílu si vysvětlíme, proč sort také nemusel být nutně pomalejší než grep. A budeme pokračovat v inspekci literárních děl, tentokrát již většinou bez duplikátů.

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

3.11.2016 21:29 sid
Rozbalit Rozbalit vše Re: Filtrujeme čtivé texty z Projektu Gutenberg 9
Takze dnes sa kona rekord v dlzke. Dokonca az tusim dva prikazy. Celkom vazne po tomto gulasi ci ako to nazvat by som vyjadril vaznu obavu o dusevne zdravie autora. Ak ma nejako zvlastne posunuty zmysel pre humor spocivajuci v tvoreni clankov plnych zbytocnych odbociek tak sa mu ospravedlnujem ale silne mi pripomina velmi starych ludi co pri rozpravani skacu od temy k teme. kyknos dufam doda spravne pomenovanie tejto poruchy:-)
3.11.2016 22:56 Ondra
Rozbalit Rozbalit vše Re: Filtrujeme čtivé texty z Projektu Gutenberg 9
Autor je fakt asi blazen. Prece ctivost literatury se neda hodnotit nejakym grepem nebo sortem.

Treba rekneme, ze by v nejake cervene knihovne bylo vice prime reci nez dejme tomu v Dostojevskem. Znamena to, ze mam cist cervenou knihovnu? :D

Pocitacova analyza textu se dela, ale zcela jiste ne timto zpusobem. Napriklad vedci zkoumali, zda Ilias a Odyssea byla napsana stejnym autorem (Homer) podle cetnosti vyskytu epitetonu. No a k tomu pouzili program.

4.11.2016 04:48 q
Rozbalit Rozbalit vše Re: Filtrujeme čtivé texty z Projektu Gutenberg 9
Nádherný seriál. Nejlepší čtení na tomto webu za celé roky. Komu se nelíbí, nemusí ho číst.
4.11.2016 06:22 sid
Rozbalit Rozbalit vše Re: Filtrujeme čtivé texty z Projektu Gutenberg 9
ako zistit pri nejakom texte ci sa vam paci bez toho aby ste ho citali? Ale uz chapem, ze vy ste miesto citania tento serial prehnali to cez grep a vysiel vam na prvom mieste;-).
5.11.2016 04:12 q
Rozbalit Rozbalit vše Re: Filtrujeme čtivé texty z Projektu Gutenberg 9
Ale ne, mě ten vlastní cíl vůbec nezajímá, literaturu si vybírám jinak. Mně se hrozně líbí, jak autor přemýšlí a jak o tom píše. Nádhera.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.