Dva příběhy o tom, jak vám ANKI může pomoci naučit se cizí jazyk a připravit se na pohovor

Vždy jsem věřil, že líný programátor je dobrý programátor. Proč? Protože požádejte pracanta, aby něco udělal, půjde a udělá to. A líný programátor stráví 2-3x více času, ale napíše skript, který to udělá za něj. Napoprvé to může trvat nepřiměřeně dlouho, ale u opakovaných úkolů se tento přístup velmi rychle vyplatí. Považuji se za líného programátora. To byla preambule, teď pojďme k věci.

První příběh

Před pár lety jsem přemýšlel, jak bych se mohl zlepšit v angličtině. Nic lepšího než čtení literatury mě nenapadlo. Koupil jsem si elektronickou čtečku, stáhl si knihy a začal jsem číst. Při čtení jsem stále narážel na neznámá slova. Okamžitě jsem je přeložil pomocí slovníků zabudovaných ve čtečce, ale všiml jsem si jedné vlastnosti: slova nechtěla, aby si je zapamatovali. Když jsem o pár stránek později na toto slovo narazil znovu, s 90% pravděpodobností jsem znovu potřeboval překlad, a to se stalo pokaždé. Závěr byl takový, že nestačí jen překládat neznámá slova při čtení, musíte dělat něco jiného. Ideální možností by bylo zavést jej do běžného života a začít používat, ale nežiji v anglicky mluvící zemi a je to nepravděpodobné. Pak jsem si vzpomněl, že jsem o tom kdysi četl Rozložené opakování.

Co to je a s čím se to jí? Stručně řečeno, existuje toto křivka zapomínání, další citace z Wikipedie:

Již během první hodiny je zapomenuto až 60 % všech přijatých informací, 10 hodin po zapamatování zůstává v paměti 35 % naučeného. Pak proces zapomínání postupuje pomalu a po 6 dnech zůstává v paměti asi 20 % z celkového počtu původně naučených slabik a stejné množství zůstává v paměti po měsíci.

A závěr odtud

Závěry, které lze na základě této křivky vyvodit, jsou takové, že pro efektivní zapamatování je nutné zapamatovanou látku opakovat.

Tak jsme přišli s nápadem rozložené opakování.

АNKI je zcela bezplatný a open source program, který implementuje myšlenku opakování s mezerami. Jednoduše řečeno, počítačové flash karty mají na jedné straně otázku a na druhé odpověď. Vzhledem k tomu, že můžete dělat otázky/odpovědi pomocí regular html/css/javascript, pak můžeme říci, že má skutečně neomezené možnosti. Navíc je rozšiřitelný o speciální pluginy, a jeden z nich se nám bude v budoucnu velmi hodit.

Ruční vytváření karet je zdlouhavé, zdlouhavé a s velkou pravděpodobností na tento úkol po čase zapomenete, a tak jsem si v určité chvíli položil otázku, zda je možné tento úkol zautomatizovat. Odpověď je ano, můžete. A udělal jsem to. Hned řeknu, je to víc POC (Proof of Concept), ale které lze použít. Pokud bude ze strany uživatelů zájem a zapojí se další vývojáři, lze jej dovést do hotového produktu, který mohou používat i technicky negramotní uživatelé. Nyní použití mé utility vyžaduje určité znalosti programování.

Čtu knihy pomocí programu AI Reader. Má možnost připojit externí slovníky a když přeložíte slovo, uloží slovo, které jste volali k překladu, do textového souboru. Zbývá jen přeložit tato slova a vytvořit karty ANKI.

Nejprve jsem se snažil použít pro překlad Překladač Google, Lingvo API atd. S bezplatnými službami to ale nefungovalo. Bezplatný limit jsem vyčerpal během procesu vývoje, navíc jsem podle podmínek licence neměl právo kešovat slova. V určitém okamžiku jsem si uvědomil, že musím slova přeložit sám. V důsledku toho byl napsán modul dsl2html ke kterému se můžete připojit DSL slovníky a kdo ví, jak je převést na HTML formát.

Takto vypadá položka ve slovníku v *. Html, moje možnost ve srovnání s možností GoldenDict

Dva příběhy o tom, jak vám ANKI může pomoci naučit se cizí jazyk a připravit se na pohovor

Než hledám slovo v připojených slovnících, přivedu ho do slovníková forma (lemma) pomocí knihovny Stanford CoreNLP. Ve skutečnosti jsem kvůli této knihovně začal psát v Javě a původní plán byl napsat vše v Javě, ale během toho jsem knihovnu našel uzel-java pomocí kterého lze relativně snadno spustit Java kód z nodejs a část kódu je napsána v JavaScriptu. Kdybych tuto knihovnu našel dříve, nebyl by v Javě napsán jediný řádek. Dalším vedlejším projektem, který se v průběhu zrodil, je tvorba úložiště s dokumentací DSL který byl nalezen v síti ve formátu *.chmpřeměněna a uvedena do božské podoby. Pokud je autorem původního souboru uživatel podle přezdívky yozhic Když vidí tento článek, moc mu děkuji za práci, kterou odvedl, bez jeho dokumentace bych to s největší pravděpodobností neuspěl.

Takže mám slovo v angličtině, jeho slovníkové heslo ve formátu *. Html, zbývá vše poskládat, ze seznamu slov vytvořit ANKI články a vložit je do ANKI databáze. Za tímto účelem byl vytvořen následující projekt data2anki. Může vzít seznam slov jako vstup, přeložit, vytvořit ANKI *. Html články a zaznamenat je do databáze ANKI. Na konci článku je návod, jak jej používat. Mezitím je druhý příběh, kde mohou být užitečná opakování s odstupem.

Druhý příběh.

Všichni lidé, kteří hledají více/méně kvalifikovanou specializaci, včetně programátorů, se potýkají s potřebou připravit se na pohovor. Mnohé z pojmů, které jsou při pohovorech kladeny, v každodenní praxi nepoužíváte a jsou zapomenuty. Při přípravě na pohovor, listování v poznámkách, v knize, v příručkách jsem se potýkal s tím, že vytřídění informací, které už znáte, zabere hodně času a pozornosti, protože to není vždy zřejmé a musíte přečtěte si to pozorně, abyste pochopili, co to je.irelevantní. Když přijdete na téma, které je opravdu potřeba zopakovat, často se stane, že už jste unavení a utrpí tím kvalita vaší přípravy. V určitém okamžiku jsem si řekl, proč k tomu nevyužít karty ANKI? Například při psaní poznámek k tématu si rovnou vytvořte poznámku v podobě otázky a odpovědi a při jejím opakování pak hned poznáte, zda na tuto otázku znáte odpověď nebo ne.

Jediný problém, který vyvstal, bylo, že psaní otázek bylo velmi dlouhé a zdlouhavé. Aby byl proces jednodušší, data2anki projekt jsem přidal funkci převodu snížení text v kartách ANKI. Stačí napsat jeden velký soubor, ve kterém budou otázky a odpovědi označeny předem určenou sekvencí znaků, podle kterých parser pochopí, kde je otázka a kde odpověď.

Jakmile je tento soubor vytvořen, spustíte data2anki a vytvoří karty ANKI. Původní soubor lze snadno upravovat a sdílet, stačí vymazat odpovídající kartu (karty) a spustit program znovu a vytvoří se nová verze.

Instalace a použití

  1. Instalace ANKI + AnkiConnect

    1. Stáhněte si ANKI odtud: https://apps.ankiweb.net/
    2. Nainstalujte plugin AnkiConnect: https://ankiweb.net/shared/info/2055492159

  2. Instalace data2anki

    1. Stáhnout data2anki z úložiště github
      git clone https://github.com/anatoly314/data2anki
    2. Nainstalujte závislosti
      cd data2anki && npm install
    3. Stáhnout java závislosti https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Vybalování jar-dependencies.zip a vložte jeho obsah data2anki/java/jars

  3. Použijte k překladu slov:

    1. V souboru data2anki/config.json:

      • v klíči způsob zadejte hodnotu dsl2anki

      • v klíči modules.dsl.anki.deckName и modules.dsl.anki.název modelu pište podle toho Název paluby и Název modelu (musí být vytvořeno již před vytvořením karet). V současné době je podporován pouze typ modelu Basic:

        Má přední a zadní pole a vytvoří jednu kartu. Text, který zadáte v přední části, se zobrazí na přední straně karty a text, který zadáte do pole, se zobrazí na zadní straně karty.

        kde je původní slovo? Přední polea překlad bude k dispozici Zadní pole.

        Není problém přidat podporu Základní (a obrácená karta), kde se ke slovu a překladu vytvoří rubová karta, kde si na základě překladu budete muset původní slovo zapamatovat. Vše, co potřebujete, je čas a touha.

      • v klíči modules.dsl.dictionariesPath zaregistrovat pole s připojeným *.dsl slovníky. Každý připojený slovník je adresář, ve kterém jsou umístěny soubory slovníku v souladu s formátem: Struktura slovníku DSL

      • v klíči modules.dsl.wordToTranslatePath zadejte cestu k seznamu slov, která chcete přeložit.

    2. Spusťte se spuštěnou aplikací ANKI
      node data2ankiindex.js
    3. ZISK!!!

  4. Používá se pro vytváření karet z markdown

    1. V souboru data2anki/config.json:

      • v klíči způsob zadejte hodnotu markdown2anki
      • v klíči modules.markdown.anki.deckName и modules.dsl.anki.název modelu pište podle toho Název paluby и Název modelu (musí být vytvořeno již před vytvořením karet). Pro markdown2anki podporován je pouze typ modelu Basic.
      • v klíči modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors píšete selektory, kterými označíte začátek otázky, resp. odpovědi. Řádek se samotným selektorem nebude analyzován a neskončí na kartě, analyzátor začne pracovat od dalšího řádku.

        Například tato karta s otázkami/odpověďmi:

        Dva příběhy o tom, jak vám ANKI může pomoci naučit se cizí jazyk a připravit se na pohovor

        V markdown to bude vypadat takto:
        #QUESTION# ## Otázka 5. Napište funkci mul, která bude správně fungovat při vyvolání s následující syntaxí. ```javascript console.log(mul(2)(3)(4)); // výstup : 24 console.log(mul(4)(3)(4)); // output : 48 ``` #ODPOVĚĎ# Níže je kód následovaný vysvětlením, jak to funguje: ```javascript function mul (x) { return function (y) { // anonymní funkce return function (z) { // anonymní funkce return x * y * z; }; }; } ``` Funkce `mul` zde přijme první argument a vrátí anonymní funkci, která převezme druhý parametr a vrátí anonymní funkci, která převezme třetí parametr a vrátí násobení argumentů, které jsou předávány postupně. Funkce definovaná v JavaScriptu inside má přístup k vnější proměnné funkce a funkce je objekt první třídy, takže ji může funkce také vrátit a předat jako argument v jiné funkci. - Funkce je instancí typu Objekt - Funkce může mít vlastnosti a má odkaz zpět na svou metodu konstruktoru - Funkci lze uložit jako proměnnou - Funkci lze předat jako parametr jiné funkci - Funkce může být vrátil z jiné funkce
        

        Příklad převzat odtud: 123-JavaScript-Interview-Otázky

        Ve složce projektu je také soubor s příklady examples/markdown2anki-example.md

      • v klíči modules.markdown.pathToFile
        zapište si cestu k souboru, kde *.md soubor otázek/odpovědí

    2. Spusťte se spuštěnou aplikací ANKI
      node data2ankiindex.js
    3. ZISK!!!

Takhle to vypadá na mobilu:

Výsledek

Karty přijaté na desktopové verzi ANKI se bez problémů synchronizují s ANKI cloudem (zdarma do 100mb) a pak je můžete používat všude. Existují klienti pro Android a iPhone a můžete jej použít i v prohlížeči. Ve výsledku, pokud máte čas, který nemáte za co utrácet, tak se místo bezcílného rolování po Facebooku nebo kočkách na Instagramu můžete naučit něco nového.

Epilog

Jak jsem již zmínil, jedná se spíše o pracovní POC, které můžete použít, než o hotový produkt. Asi 30 % standardu analyzátoru DSL není implementováno, a proto například nelze najít všechny položky slovníku, které jsou ve slovnících, existuje také nápad to přepsat JavaScript, protože chci „konzistenci“ a kromě toho se to teď nepíše moc optimálně. Nyní parser staví strom, ale podle mého názoru je to zbytečné a nemusí to komplikovat kód. V markdown2anki režimu, snímky nejsou analyzovány. Budu se snažit krájet po troškách, ale jelikož píšu za sebe, tak v první řadě vyřeším problémy, na které si sám šlápnu, ale pokud by někdo chtěl pomoci, tak jste vítáni. Máte-li dotazy k programu, rád pomohu prostřednictvím otevřených problémů v příslušných projektech. Zde pište další kritiku a návrhy. Doufám, že tento projekt bude pro někoho užitečný.

PS Pokud si všimnete nějaké chyby (a bohužel nějaké jsou), napište mi do osobní zprávy, vše opravím.

Zdroj: www.habr.com

Přidat komentář