Difference between revisions of "Vydavatelství slovníků"

From Simulace.info
Jump to: navigation, search
(Vytvoření stránky)
 
(Doplnění následovnických funkcí)
Line 35: Line 35:
 
V LibreOffice byla simulace rozdělená do 6 různých listů:
 
V LibreOffice byla simulace rozdělená do 6 různých listů:
  
* Funkce - soupis jednotlivých funkcí pro refactoring
 
 
* Počáteční - konfigurace simulace
 
* Počáteční - konfigurace simulace
 
* Slovníky - data druhů slovníků
 
* Slovníky - data druhů slovníků
 
* Jazyky - konfigurace proměnných na každý jazyk
 
* Jazyky - konfigurace proměnných na každý jazyk
* Simulace - samotná simulace
+
* Simulace - samotná simulace  
* Výroční - souhrn ročních výsledků společnosti a provedených rozhodnutí
 
  
  
 
==Počáteční proměnné==
 
==Počáteční proměnné==
 +
 +
* Peníze = 1000000 Kč
 +
* sílaZamE = 1000 hesel/měsíc (normální)
 +
* sílaZamSigma = 500 hesel (variace přínosu pro kolektiv)
 +
* výchylnostZam = 100 hesel (momentální variace zpracovaných slov)
 +
* mzda = 20000 Kč (k roku 2000)
 +
* početJazyků = 20
 +
* početNonPaxAm = 13
 +
* pstVálka = 0,1 (každý měsíc)
 +
* poptFaktAgresor = 5
 +
* poptFaktNapaden = 10
 +
* velikostTrhu = 20000000 lidí
 +
* inflaceCíl = 1,02 (lognormální)
 +
* inflaceSigma = 0,2
 +
* globPoptFakt = 0,001
 +
* poptSigma = 1000 lidí
 +
* cenaDB = 0,1 Kč/heslo
 +
* nákladyA4 = 0,1 Kč/list
 +
  
  
 
==Slovníky==
 
==Slovníky==
  
Nejsou uvažováni průvodci a gramatiky.  
+
Simulovaná firma chce vydávat 12 (dodekahedron) druhů slovníků. Nejsou uvažováni průvodci a gramatiky.  
  
 
* konverzace - 6k, obsahuje krátký slovníček a relativně fixní seznam frází.
 
* konverzace - 6k, obsahuje krátký slovníček a relativně fixní seznam frází.
Line 61: Line 78:
 
* mluvník - 2k, potřeba 100k
 
* mluvník - 2k, potřeba 100k
 
* tematický - 20k, potřeba 100k
 
* tematický - 20k, potřeba 100k
* slang - 5k, potřeba 100k, jedná se o podmnžinu
+
* slang - 5k, potřeba 100k, jedná se o podmnožinu
 +
 
  
 
==Jazyky==
 
==Jazyky==
Line 91: Line 109:
 
==Proměnné na každý jazyk==
 
==Proměnné na každý jazyk==
  
 +
* Poptávka
 +
* Počet zaměstnanců
 +
* Síla kolektivu (hesel za měsíc)
 +
* Počty každého z 12 druhů slovníku
 +
 +
 +
==Proměnné zvlášť==
 +
 +
* Rok
 +
* Měsíc
 +
* Peníze
 +
* Mzda
 +
* jeVálka
 +
* agresorIdx - vygenerované
 +
* agresor - referencované jméno
 +
* napadenýIdx - vygenerované
 +
* napadený - dereferencované
  
  
 
=Výsledky=
 
=Výsledky=
  
Projekt přestane být komerčně rentabilní za XX let.
+
Na začátku je patrná potřeba zadlužení na prvotní várky konverzací, potom má ale firma více než dostatek peněz na případné reinvestice, a dokonce přibývají.
 +
 
 +
Nebýt nemilosrdného vyhození všech zaměstnanců kromě jednoho po dosažení milionu slov v daném jazce (někdy zbyde ten, který zvládne slova přidávat), projekt by přestal být komerčně rentabilní, neboť po uspokojení většiny poptávky, kterážto je v této simulaci omezená, se nevyplatí dále provozovat celou firmu. I u jazyků, kde se začíná s nejmenším počtem zaměstnanců, se tak stane do 15 let. To je méně než 1 generace, narozdíl od doby, kterou trvalo ručně dokončit vícesvazkové slovníky v minulém století.
  
  
 
=Závěr=
 
=Závěr=
 +
 +
Vzhledem k příliš striktní deadline nemohla být simulace zcela implementována pro všechny velikosti slovníků s ohledem na proměňující se bias poptávky. Deterministické rozřazování, kolik čeho vytisknout, by trvalo implementovat další měsíc.
  
  
 
=Odkazy=
 
=Odkazy=
  
* Portfolio Lingea
+
* [https://www.lingea.cz/shop/jazyky Portfolio Lingea]
* Výroční zprávy
+
* [https://or.justice.cz/ias/ui/vypis-sl-firma?subjektId=576418 Sbírka listin Lingea s.r.o.]
* Jazyky s největším počtem mluvčích (Wiki, Ethnologue)
+
* [https://www.ethnologue.com/insights/ethnologue200/ Ethnologue - What are the top 200 most spoken languages?] ([https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers Neplacená top 45 na Wiki])
* Největší slovníky
+
* [https://en.wikipedia.org/wiki/List_of_dictionaries_by_number_of_words Seznam slovníků podle počtu slov]
* SSJČ, PSJČ
+
* [https://www.lexiko.ujc.cas.cz/index.php?page=3 LEXIKO - O slovnících]
* Rychlost psaní
 
  
  
 
=Kód=
 
=Kód=
 +
 +
[[File:vydavatelstvi_slovniku.ods]]
  
 
Simulace postupuje na základě následovnických funkcí, které jsou následující:
 
Simulace postupuje na základě následovnických funkcí, které jsou následující:
Line 121: Line 161:
 
! Proměnná !! Kód funkce !! Komentář
 
! Proměnná !! Kód funkce !! Komentář
 
|-
 
|-
| Rok || fff || kkk
+
| Rok || rok[i-1]+IF(měsíc[i]=1;1;0) || Rok se zvedá každých 12 měsíců
 
|-
 
|-
| Měsíc || fff || kkk
+
| Měsíc || MOD(měsíc[i-1];12)+1 || Měsíce jsou číslované od 1
 
|-
 
|-
| Peníze || fff || kkk
+
| Peníze || peníze[i-1]-SUM(Zaměstnanci[i])*mzda[i-1]-MIN(0;(konverzací[i]-konverzací[i-1]))*(konst[konverzace]+var[konverzace]*potřebaHesel[konverzace])+MIN(0;(konverzací[i-1]-konverzací[i]))*cena[konverzace] || atd. pro všechny druhy
 
|-
 
|-
| jeVálka || fff || kkk
+
| jeVálka || IF(RANDBETWEEN(0;1/pstVálka)=0;1;0) || Tradiční hod 1/pstVálka-strannou kostkou
 
|-
 
|-
| agresorIdx || fff || kkk
+
| agresorIdx || IF(jeVálka=1;RANDBETWEEN(0;početJazyků);"-") || Další hod početJazyků-strannou kostkou
 
|-
 
|-
| agresor || fff || kkk
+
| agresor || IF(agresorIdx="-";"-";IF(agresorIdx=0;"jiný";VLOOKUP(agresorIdx;Jazyky;3;FALSE()))) || Dereference pro kontrolu
 
|-
 
|-
| napadenýIdx || fff || kkk
+
| napadenýIdx || IF(jeVálka=1;RANDBETWEEN(0;početNonPaxAm);"-") || Státy NATO nikdy nejsou napadeny
 
|-
 
|-
| napadený || fff || kkk
+
| napadený || IF(napadenýIdx="-";"-";IF(napadenýIdx=0;"jiný";VLOOKUP(napadenýIdx;Jazyky.nonPaxAmIdx;2;FALSE()))) || Dereference pro kontrolu
 
|-
 
|-
| Slov || fff || x20 pro každý jazyk
+
| Slov || Slov[k][i-1]+KolektivSíla[k][i-1]+ROUND(NORM.INV(RAND();0;Zaměstnanci[k][i]*výchylnostZam)) || x20 pro každý jazyk k
 
|-
 
|-
| Zaměstnanci || fff || x20 pro každý jazyk
+
| Zaměstnanci || IF(měsíc[i]=1;IF(slov[k][i-1]<Slovníky[potřebaHesel][mega];Zaměstnanci[k][i-1]+RANDBETWEEN(0;1);sílaZamE);Zaměstnanci[k][i-1]) || x20 pro každý jazyk k
 
|-
 
|-
| KolektivSíla || fff || x20 pro každý jazyk
+
| KolektivSíla || =MAX(0;kolektivSíla[k][i-1]+(Zaměstnanci[k][i]-Zaměstnanci[k][i-1])*ROUND(NORM.INV(RAND();sílaZamE;sílaZamSigma);0)) || x20 pro každý jazyk k
 
|-
 
|-
| Poptávka || fff || x20 pro každý jazyk
+
| Poptávka || =MAX(0;Poptávka[k][i-1]+ROUND(NORM.INV(RAND();(IF(agresorIdx[i]=k;poptFaktAgresor;1)*IF(napadenýIdx[i]=k;poptFaktNapaden;1))*(poptSigma+globPoptFakt*VLOOKUP(k;Jazyky;5;FALSE()));poptSigma);0)-Konverzací[k][i-1]) || x20 pro každý jazyk k, atd. pro všechny druhy
 
|-
 
|-
| Konverzací ... Slangů || fff || x20 pro každý jazyk, x12 pro každý druh slovníku
+
| Konverzací ... Slangů || =IF(Slov[k][i-1]>Slovníky[potřebaHesel][konverzace];MAX(Poptávka[k][i-1];CM4);Konverzací[k][i-1])-MIN(Poptávka[k][i-1];Konverzací[k][i-1]) || x20 pro každý jazyk k, atd. pro každý druh slovníku
 
|}
 
|}

Revision as of 18:26, 12 June 2023

"Něco lingvistického."


Definice problému

Bude simulována firma, která se zabývá tvorbou a prodejem překladových slovníků, kde na 1 straně je čeština. Postupně buduje svoje portfolio produktů na základě toho, jak rychle zpracovává slovníková hesla pro vydání potřebné velikosti slovníku, a na základě poptávky ovlivněné geopolitickými událostmi vydává nová vydání. Jejím cílem je mít konsistentní zpracování všech předem vytyčených jazyků s pomocí počítačových technologií, a zacelit tak všechny díry na trhu českých překladových slovníků, jejichž zpracování nebylo v minulých režimech možné z politických či technických důvodů. Noví zaměstnanci (zvyšující rychlost zpracování hesel) jsou z důvodu stability týmového prostředí nabíráni jen v případě zvýšené poptávky. Simulace je inspirována příhodným vydáním ukrajinského slovníčku od firmy Lingea z pekuliárního roku 2022, a ukrajinské konverzace z roku 2023.

Cíl simulace

Hlavním cílem je prověřit dlouhodobou (20+ let) rentabilitu a ziskovost v obnoveném volnotržním prostředí, obzvláště v pozdních fázích, kdy slovníky většiny jazyků budou zpracovány do velké velikosti (100000+ hesel), ačkoliv poptávka po nich bude lehce klesat.

Zdroje dat

Data budou získána či spíše odvozena z výročních zpráv Lingea s.r.o. v Obchodním rejstříku, nebot používají zkrácený rozsah a nemají povinnost ověření auditorem. Důležitým zdrojem je také produktové portfolio této firmy, které určí jednotlivé druhy slovníků. Doplněny jsou také formáty největších českých slovníků, kterou používají jako základ pro část s češtinou napřed.

Ohledně dějepisných událostí se simulace se inspiruje v celkové pravděpodobnosti válek, ale nebude natvrdo zakódováno, že USA má v roce 2003 napadnout Irák, Rusko má v roce 2008 napadnout Gruzii, nebo že se má v roce 2011 stát arabské jaro. Bude ale ctěno, že státy NATO nikdy nejsou napadány.

Rychlost zpracování slovníkových hesel je odvozena z průměrné rychlosti psaní. Zaměstnanci jsou považovaní za experty na svůj jazyk, tudíž nejsou ve zpracování hesel omezení potřebou o nich dlouze přemýšlet.


Metoda

Formulování a zpracování tématu je inspirováno soutěžními zadáními z FMWC. V základu simulované části reality je použito Monte Carlo, na rozhodovací úrovni jsou použity prvky Dračího doupěte. Prozatímní název pro tuto kombinaci je Šmakova hora. Narozdíl od Monte Carla není a priori cílem konvergence výsledků.

Počet kol je 50 po 1 roce, počínaje rokem 2001. V každém kole je 12 tahů odpovídajícím 1 měsíci.

Použitý program je LibreOffice Calc, neboť umožňuje defici vlastních funkcí imperativně přímo v LibreOffice Basic, namísto méně pohodlného funkcionálního psaní lambd ve správci jmen v M$ Excel 365, přičemž v nejnovější stabilní verzi 2021 lambdy nejsou podporovány.

Samotná simulace je postavena na sledování a aktualizaci stavových proměnných pomocí následovnické funkce s podmíněným rozhodnutím, zda se jedná o konec roku.


Model

V LibreOffice byla simulace rozdělená do 6 různých listů:

  • Počáteční - konfigurace simulace
  • Slovníky - data druhů slovníků
  • Jazyky - konfigurace proměnných na každý jazyk
  • Simulace - samotná simulace


Počáteční proměnné

  • Peníze = 1000000 Kč
  • sílaZamE = 1000 hesel/měsíc (normální)
  • sílaZamSigma = 500 hesel (variace přínosu pro kolektiv)
  • výchylnostZam = 100 hesel (momentální variace zpracovaných slov)
  • mzda = 20000 Kč (k roku 2000)
  • početJazyků = 20
  • početNonPaxAm = 13
  • pstVálka = 0,1 (každý měsíc)
  • poptFaktAgresor = 5
  • poptFaktNapaden = 10
  • velikostTrhu = 20000000 lidí
  • inflaceCíl = 1,02 (lognormální)
  • inflaceSigma = 0,2
  • globPoptFakt = 0,001
  • poptSigma = 1000 lidí
  • cenaDB = 0,1 Kč/heslo
  • nákladyA4 = 0,1 Kč/list


Slovníky

Simulovaná firma chce vydávat 12 (dodekahedron) druhů slovníků. Nejsou uvažováni průvodci a gramatiky.

  • konverzace - 6k, obsahuje krátký slovníček a relativně fixní seznam frází.
  • slovníček - 30k
  • kapesní - 35k, obsahuje stručnou konverzaci
  • šikovný - 40k, obsahuje konverzaci
  • praktický - 50k
  • úzký velký - 60k, pozorováno u čínštiny a japonštiny
  • tlustý velký - 120k, pozorováno u angličtiny a němčiny
  • vícesvazkový - 250k, podle PSJČ a SSJČ
  • mega - 1M,
  • mluvník - 2k, potřeba 100k
  • tematický - 20k, potřeba 100k
  • slang - 5k, potřeba 100k, jedná se o podmnožinu


Jazyky

Bylo vybráno 20 (ikosahedron) jazyků s nejvyšším počtem mluvčích podle Ethnologue. Portfolio Lingey zahrnuje místo některých jihoasijských jazyků jazyky evropských států, nicméně pro řadu jihoasijských jazků velký slovník s češtinou na 2. straně nevyšel, tudíž se jedná o tržní příležitost.

  • angličtina
  • čínština
  • hindština
  • španělština
  • francouzština
  • arabština - v dosavadních slovnících řazeno zpravidla podle kořenu
  • bengálština
  • ruština
  • portugalština
  • urdu
  • indonéština
  • němčina
  • japonština
  • marathi
  • telugu
  • turečtina
  • tamilština
  • vietnamština
  • filipínština (tagalog)
  • korejština


Proměnné na každý jazyk

  • Poptávka
  • Počet zaměstnanců
  • Síla kolektivu (hesel za měsíc)
  • Počty každého z 12 druhů slovníku


Proměnné zvlášť

  • Rok
  • Měsíc
  • Peníze
  • Mzda
  • jeVálka
  • agresorIdx - vygenerované
  • agresor - referencované jméno
  • napadenýIdx - vygenerované
  • napadený - dereferencované


Výsledky

Na začátku je patrná potřeba zadlužení na prvotní várky konverzací, potom má ale firma více než dostatek peněz na případné reinvestice, a dokonce přibývají.

Nebýt nemilosrdného vyhození všech zaměstnanců kromě jednoho po dosažení milionu slov v daném jazce (někdy zbyde ten, který zvládne slova přidávat), projekt by přestal být komerčně rentabilní, neboť po uspokojení většiny poptávky, kterážto je v této simulaci omezená, se nevyplatí dále provozovat celou firmu. I u jazyků, kde se začíná s nejmenším počtem zaměstnanců, se tak stane do 15 let. To je méně než 1 generace, narozdíl od doby, kterou trvalo ručně dokončit vícesvazkové slovníky v minulém století.


Závěr

Vzhledem k příliš striktní deadline nemohla být simulace zcela implementována pro všechny velikosti slovníků s ohledem na proměňující se bias poptávky. Deterministické rozřazování, kolik čeho vytisknout, by trvalo implementovat další měsíc.


Odkazy


Kód

File:Vydavatelstvi slovniku.ods

Simulace postupuje na základě následovnických funkcí, které jsou následující:


Následovnické funkce
Proměnná Kód funkce Komentář
Rok rok[i-1]+IF(měsíc[i]=1;1;0) Rok se zvedá každých 12 měsíců
Měsíc MOD(měsíc[i-1];12)+1 Měsíce jsou číslované od 1
Peníze peníze[i-1]-SUM(Zaměstnanci[i])*mzda[i-1]-MIN(0;(konverzací[i]-konverzací[i-1]))*(konst[konverzace]+var[konverzace]*potřebaHesel[konverzace])+MIN(0;(konverzací[i-1]-konverzací[i]))*cena[konverzace] atd. pro všechny druhy
jeVálka IF(RANDBETWEEN(0;1/pstVálka)=0;1;0) Tradiční hod 1/pstVálka-strannou kostkou
agresorIdx IF(jeVálka=1;RANDBETWEEN(0;početJazyků);"-") Další hod početJazyků-strannou kostkou
agresor IF(agresorIdx="-";"-";IF(agresorIdx=0;"jiný";VLOOKUP(agresorIdx;Jazyky;3;FALSE()))) Dereference pro kontrolu
napadenýIdx IF(jeVálka=1;RANDBETWEEN(0;početNonPaxAm);"-") Státy NATO nikdy nejsou napadeny
napadený IF(napadenýIdx="-";"-";IF(napadenýIdx=0;"jiný";VLOOKUP(napadenýIdx;Jazyky.nonPaxAmIdx;2;FALSE()))) Dereference pro kontrolu
Slov Slov[k][i-1]+KolektivSíla[k][i-1]+ROUND(NORM.INV(RAND();0;Zaměstnanci[k][i]*výchylnostZam)) x20 pro každý jazyk k
Zaměstnanci IF(měsíc[i]=1;IF(slov[k][i-1]<Slovníky[potřebaHesel][mega];Zaměstnanci[k][i-1]+RANDBETWEEN(0;1);sílaZamE);Zaměstnanci[k][i-1]) x20 pro každý jazyk k
KolektivSíla =MAX(0;kolektivSíla[k][i-1]+(Zaměstnanci[k][i]-Zaměstnanci[k][i-1])*ROUND(NORM.INV(RAND();sílaZamE;sílaZamSigma);0)) x20 pro každý jazyk k
Poptávka =MAX(0;Poptávka[k][i-1]+ROUND(NORM.INV(RAND();(IF(agresorIdx[i]=k;poptFaktAgresor;1)*IF(napadenýIdx[i]=k;poptFaktNapaden;1))*(poptSigma+globPoptFakt*VLOOKUP(k;Jazyky;5;FALSE()));poptSigma);0)-Konverzací[k][i-1]) x20 pro každý jazyk k, atd. pro všechny druhy
Konverzací ... Slangů =IF(Slov[k][i-1]>Slovníky[potřebaHesel][konverzace];MAX(Poptávka[k][i-1];CM4);Konverzací[k][i-1])-MIN(Poptávka[k][i-1];Konverzací[k][i-1]) x20 pro každý jazyk k, atd. pro každý druh slovníku