Twee stories oor hoe ANKI jou kan help om 'n vreemde taal te leer en vir 'n onderhoud voor te berei

Ek het altyd geglo dat 'n lui programmeerder 'n goeie programmeerder is. Hoekom? Want vra 'n harde werker om iets te doen, hy sal dit gaan doen. En 'n lui programmeerder sal 2-3 keer meer tyd spandeer, maar sal 'n draaiboek skryf wat dit vir hom sal doen. Dit kan 'n onredelike lang tyd neem om dit die eerste keer te doen, maar met herhaalde take sal hierdie benadering baie vinnig vrugte afwerp. Ek beskou myself as 'n lui programmeerder. Dit was die aanhef, kom ons gaan nou tot sake.

Storie een

'n Paar jaar gelede het ek gewonder hoe ek my Engels kan verbeter. Niks het beter by my opgekom as om literatuur te lees nie. Ek het 'n elektroniese leser gekoop, boeke afgelaai en ek begin lees. Terwyl ek gelees het, het ek heeltyd op onbekende woorde afgekom. Ek het dit dadelik vertaal met behulp van die woordeboeke wat in die leser ingebou is, maar ek het een kenmerk opgemerk: die woorde wou nie onthou word nie. Toe ek 'n paar bladsye later weer op hierdie woord afkom, het ek met 'n 90% waarskynlikheid weer vertaling nodig gehad, en dit het elke keer gebeur. Die gevolgtrekking was dat dit nie genoeg was om bloot onbekende woorde te vertaal terwyl jy lees nie, jy moet iets anders doen. Die ideale opsie sou wees om dit in die alledaagse lewe in te voer en dit te begin gebruik, maar ek woon nie in 'n Engelssprekende land nie en dit is onwaarskynlik. Toe onthou ek dat ek eenkeer gelees het oor Spasieuse herhalings.

Wat is dit en waarmee word dit geëet? Kortom, daar is dit kromme vergeet, verdere aanhaling uit Wikipedia:

Reeds binne die eerste uur word tot 60% van alle inligting wat ontvang is vergeet; 10 uur na memorisering bly 35% van wat geleer is in die geheue. Dan gaan die proses van vergeet stadig voort, en na 6 dae bly ongeveer 20% van die totale aantal aanvanklik geleerde lettergrepe in die geheue, en dieselfde hoeveelheid bly in die geheue na 'n maand.

En die gevolgtrekking van hier af

Die gevolgtrekkings wat op grond van hierdie kurwe gemaak kan word, is dat dit vir effektiewe memorisering nodig is om die gememoriseerde materiaal te herhaal.

So ons het met 'n idee vorendag gekom gespasieerde herhaling.

ANKI is 'n heeltemal gratis en oopbronprogram wat die idee van gespasieerde herhaling implementeer. Eenvoudig gestel, gerekenariseerde flitskaarte het 'n vraag aan die een kant en 'n antwoord aan die ander kant. Aangesien jy vrae/antwoorde kan doen deur gebruik te maak van gereelde html/css/javascript, dan kan ons sê dat dit werklik onbeperkte moontlikhede het. Daarbenewens is dit uitbreibaar met spesiale plugins, en een van hulle sal in die toekoms baie nuttig vir ons wees.

Om kaarte met die hand te skep is lank, vervelig, en met 'n hoë waarskynlikheid sal jy na 'n rukkie van hierdie taak vergeet, en so op 'n stadium het ek myself die vraag gevra, is dit moontlik om hierdie taak te outomatiseer. Die antwoord is ja, jy kan. En ek het dit gedoen. Ek sal dadelik sê, dit is meer POC (Bewys van konsep), maar wat gebruik kan word. As daar belangstelling van gebruikers is en ander ontwikkelaars betrokke raak, kan dit tot 'n voltooide produk gebring word wat selfs tegnies ongeletterde gebruikers kan gebruik. Nou, die gebruik van my nut vereis 'n mate van kennis van programmering.

Ek lees boeke deur die program te gebruik LUGleser. Dit het die vermoë om eksterne woordeboeke te verbind, en wanneer jy 'n woord vertaal, stoor dit die woord wat jy vir vertaling geroep het in 'n tekslêer. Al wat oorbly is om hierdie woorde te vertaal en ANKI-kaarte te skep.

Ek het eers probeer gebruik vir vertaling Google Translate, Lingvo API ens. Maar dinge het nie uitgewerk met gratis dienste nie. Ek het die vrye limiet tydens die ontwikkelingsproses uitgeput, en daarby, volgens die bepalings van die lisensie, het ek nie die reg gehad om woorde te kas nie. Op 'n stadium het ek besef dat ek self die woorde moet vertaal. Gevolglik is 'n module geskryf dsl2html waaraan jy kan koppel DSL woordeboeke en wie weet hoe om hulle in te omskep HTML formaat.

Dit is hoe 'n woordeboekinskrywing lyk in *. Html, my opsie in vergelyking met die opsie GoldenDict

Twee stories oor hoe ANKI jou kan help om 'n vreemde taal te leer en vir 'n onderhoud voor te berei

Voordat ek na 'n woord in gekoppelde woordeboeke soek, bring ek dit na woordeboekvorm (lemma) die biblioteek gebruik Stanford CoreNLP. Om die waarheid te sê, as gevolg van hierdie biblioteek het ek in Java begin skryf en die oorspronklike plan was om alles in Java te skryf, maar in die proses het ek die biblioteek gevind node-java waarmee jy relatief maklik Java-kode vanaf nodejs kan uitvoer en sommige van die kode is in JavaScript geskryf. As ek hierdie biblioteek vroeër gevind het, sou nie 'n enkele reël in Java geskryf gewees het nie. Nog ’n byprojek wat in die proses gebore is, is die skepping bewaarplek met DSL-dokumentasie wat op die netwerk gevind is in die formaat *.chm, bekeer en in goddelike vorm gebring. As die outeur van die oorspronklike lêer 'n gebruiker volgens bynaam is yozhic Wanneer hy hierdie artikel sien, bedank ek hom baie vir die werk wat hy gedoen het; sonder sy dokumentasie sou ek heel waarskynlik nie daarin geslaag het nie.

So, ek het 'n woord in Engels, sy woordeboekinskrywing in die formaat *. Html, al wat oorbly is om alles bymekaar te sit, ANKI-artikels uit die lys woorde te skep en dit in die ANKI-databasis in te voer. Vir hierdie doel is die volgende projek geskep data2anki. Dit kan 'n lys woorde neem as invoer, vertaal, skep ANKI *. Html artikels en teken dit in die ANKI-databasis aan. Aan die einde van die artikel is daar instruksies oor hoe om dit te gebruik. Intussen is die tweede storie waar gespasieerde herhalings nuttig kan wees.

Die tweede storie.

Alle mense wat op soek is na 'n meer/minder gekwalifiseerde spesialiteit, insluitend programmeerders, word gekonfronteer met die behoefte om vir 'n onderhoud voor te berei. Baie van die konsepte wat in onderhoude gevra word, gebruik jy nie in die alledaagse praktyk nie en hulle word vergeet. Toe ek vir 'n onderhoud voorberei, deur notas, 'n boek, 'n naslaanboek blaai, het ek te doen gekry met die feit dat dit baie tyd en aandag verg om inligting wat jy reeds weet uit te sif, want dit is nie altyd voor die hand liggend nie en jy moet lees dit noukeurig om te verstaan ​​wat dit is irrelevant. Wanneer jy by ’n onderwerp kom wat regtig herhaal moet word, gebeur dit dikwels dat jy reeds moeg is en die kwaliteit van jou voorbereiding daaronder ly. Op 'n stadium het ek gedink, hoekom nie ANKI-kaarte ook hiervoor gebruik nie? Byvoorbeeld, wanneer jy aantekeninge maak oor 'n onderwerp, maak dadelik 'n aantekening in die vorm van 'n vraag en antwoord, en dan wanneer jy dit herhaal, sal jy dadelik weet of jy die antwoord op hierdie vraag ken of nie.

Die enigste probleem wat ontstaan ​​het, was dat die uittik van vrae baie lank en vervelig was. Om die proses makliker te maak, data2anki projek Ek het omskakelfunksionaliteit bygevoeg markdown teks in ANKI-kaarte. Al wat jy nodig het is om een ​​groot lêer te skryf waarin vrae en antwoorde gemerk sal word met 'n voorafbepaalde volgorde van karakters, waardeur die ontleder sal verstaan ​​waar die vraag is en waar die antwoord is.

Sodra hierdie lêer geskep is, loop jy data2anki en dit skep ANKI-kaarte. Die oorspronklike lêer is maklik om te wysig en te deel, jy hoef net die ooreenstemmende kaart(e) uit te vee en die program weer te laat loop, en 'n nuwe weergawe sal geskep word.

Installasie en gebruik

  1. Installeer ANKI + AnkiConnect

    1. Laai ANKI van hier af af: https://apps.ankiweb.net/
    2. Installeer AnkiConnect-inprop: https://ankiweb.net/shared/info/2055492159

  2. installasie data2anki

    1. Aflaai data2anki vanaf github-bewaarplek
      git clone https://github.com/anatoly314/data2anki
    2. Installeer afhanklikhede
      cd data2anki && npm install
    3. Laai java-afhanklikhede af https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Uitpak jar-afhanklikhede.zip en plaas die inhoud daarvan in data2anki/java/jars

  3. Gebruik om woorde te vertaal:

    1. In lêer data2anki/config.json:

      • in die sleutel af voer die waarde in dsl2anki

      • in die sleutel modules.dsl.anki.deckName и modules.dsl.anki.modelName skryf daarvolgens Dek Naam и Model Naam (moet reeds geskep word voordat kaarte geskep word). Tans word slegs die modeltipe ondersteun Basiese:

        Het voor- en agtervelde en sal een kaart skep. Teks wat jy voor intik, sal op die voorkant van die kaart verskyn, en teks wat jy in Agter invoer, sal op die agterkant van die kaart verskyn.

        waar is die oorspronklike woord? Voorste veld, en die vertaling sal in wees Agter veld.

        Daar is geen probleem om ondersteuning by te voeg nie Basiese (en omgekeerde kaart), waar 'n omgekeerde kaart vir die woord en vertaling geskep sal word, waar jy op grond van die vertaling die oorspronklike woord sal moet onthou. Al wat jy nodig het is tyd en begeerte.

      • in die sleutel modules.dsl.dictionariesPad registreer 'n skikking met gekoppelde *.dsl woordeboeke. Elke gekoppelde woordeboek is 'n gids waarin die woordeboeklêers in ooreenstemming met die formaat geleë is: DSL woordeboek struktuur

      • in die sleutel modules.dsl.wordToTranslatePath voer die pad in na die lys woorde wat jy wil vertaal.

    2. Begin met die ANKI-toepassing aan die gang
      node data2ankiindex.js
    3. WINS!!!

  4. Gebruik vir die skep van kaarte vanaf markdown

    1. In lêer data2anki/config.json:

      • in die sleutel af voer die waarde in markdown2anki
      • in die sleutel modules.markdown.anki.deckName и modules.dsl.anki.modelName skryf daarvolgens Dek Naam и Model Naam (moet reeds geskep word voordat kaarte geskep word). Vir markdown2anki Slegs modus modeltipe word ondersteun Basiese.
      • in die sleutel modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors jy skryf keurders waarmee jy die begin van die vraag en antwoord onderskeidelik merk. Die reël met die kieser self sal nie ontleed word nie en sal nie in die kaart beland nie; die ontleder sal vanaf die volgende reël begin werk.

        Byvoorbeeld, hierdie vraag/antwoordkaart:

        Twee stories oor hoe ANKI jou kan help om 'n vreemde taal te leer en vir 'n onderhoud voor te berei

        Dit sal so lyk in markdown:
        #QUESTION# ## Vraag 5. Skryf 'n mul-funksie wat behoorlik sal werk wanneer dit met die volgende sintaksis opgeroep word. ```javascript console.log(mul(2)(3)(4)); // uitset : 24 console.log(mul(4)(3)(4)); // uitvoer : 48 ``` #ANTWOORD# Hieronder is die kode gevolg deur die verduideliking van hoe dit werk: ```javascript funksie mul (x) { return function (y) { // anonymous function return function (z) { // anonieme funksie gee x * y * z; }; }; } ``` Hier aanvaar die `mul`-funksie die eerste argument en gee die anonieme funksie terug wat die tweede parameter neem en gee die anonieme funksie terug wat die derde parameter neem en gee die vermenigvuldiging van argumente terug wat in opeenvolgende deurgegee word In Javascript-funksie gedefinieer binne het toegang tot buitenste funksie veranderlike en funksie is die eerste klas objek sodat dit ook deur die funksie teruggestuur kan word en as 'n argument in 'n ander funksie deurgegee kan word. - 'n Funksie is 'n voorbeeld van die objektipe - 'n Funksie kan eienskappe hê en het 'n skakel terug na sy konstruktormetode - 'n Funksie kan as veranderlike gestoor word - 'n Funksie kan as 'n parameter na 'n ander funksie oorgedra word - 'n Funksie kan teruggekeer van 'n ander funksie
        

        Voorbeeld van hier af geneem: 123-JavaScript-Onderhoud-Vrae

        Daar is ook 'n lêer met voorbeelde in die projeklêer examples/markdown2anki-example.md

      • in die sleutel modules.markdown.pathToFile
        skryf die pad na die lêer neer waar *md vraag/antwoord lêer

    2. Begin met die ANKI-toepassing aan die gang
      node data2ankiindex.js
    3. WINS!!!

Dit is hoe dit op 'n selfoon lyk:

Gevolg

Kaarte wat op die rekenaarweergawe van ANKI ontvang word, word sonder probleme met die ANKI-wolk gesinchroniseer (gratis tot 100mb), en dan kan jy dit oral gebruik. Daar is kliënte vir Android en iPhone, en jy kan dit ook in 'n blaaier gebruik. As gevolg hiervan, as jy tyd het waaraan jy niks het om aan te spandeer nie, kan jy iets nuuts leer in plaas daarvan om doelloos deur Facebook of katte op Instagram te blaai.

Epiloog

Soos ek genoem het, is dit meer 'n werkende POC wat u kan gebruik as 'n voltooide produk. Ongeveer 30% van die DSL-ontlederstandaard word nie geïmplementeer nie, en daarom, byvoorbeeld, nie alle woordeboekinskrywings wat in woordeboeke is, kan gevind word nie, is daar ook 'n idee om dit in te herskryf JavaScript, want ek wil “konsekwentheid” hê, en bowendien is dit nou nie baie optimaal geskryf nie. Nou bou die ontleder 'n boom, maar na my mening is dit onnodig en hoef dit nie die kode te kompliseer nie. IN markdown2anki modus, word die beelde nie ontleed nie. Ek sal bietjie vir bietjie probeer sny, maar aangesien ek vir myself skryf, sal ek eerstens die probleme oplos waarop ek self gaan trap, maar as iemand wil help, dan is jy welkom. As jy vrae het oor die program, sal ek graag deur oop kwessies in die betrokke projekte help. Skryf ander kritiek en voorstelle hier. Ek hoop hierdie projek sal vir iemand nuttig wees.

NS As jy enige foute opmerk (en ongelukkig is daar sommige), skryf vir my in 'n persoonlike boodskap, ek sal alles regstel.

Bron: will.com

Voeg 'n opmerking