Kaks lugu sellest, kuidas ANKI saab aidata teil võõrkeelt õppida ja intervjuudeks valmistuda

Olen alati uskunud, et laisk programmeerija on hea programmeerija. Miks? Sest paluge kõval tegijal midagi teha, ta läheb ja teeb ära. Ja laisk programmeerija kulutab 2-3 korda rohkem aega, kuid kirjutab skripti, mis teeb selle tema eest ära. Selle esmakordne tegemine võib võtta põhjendamatult kaua aega, kuid korduvate ülesannete puhul tasub selline lähenemine end väga kiiresti ära. Pean ennast laisaks programmeerijaks. See oli preambul, asume nüüd asja juurde.

Lugu üks

Mõni aasta tagasi mõtlesin, kuidas saaksin oma inglise keelt parandada. Midagi paremat ei tulnud pähe kui kirjanduse lugemine. Ostsin elektroonilise lugeja, laadisin alla raamatud ja hakkasin lugema. Lugedes tuli mulle pidevalt ette võõraid sõnu. Tõlkisin need kohe lugejasse sisseehitatud sõnaraamatute abil, kuid märkasin üht omadust: sõnad ei tahtnud meelde jääda. Kui paar lehekülge hiljem selle sõnaga uuesti kokku puutusin, vajasin 90% tõenäosusega uuesti tõlget ja seda juhtus iga kord. Järeldus oli, et ei piisa lihtsalt võõraste sõnade tõlkimisest lugemise ajal, tuleb teha midagi muud. Ideaalne variant oleks see igapäevaellu tutvustada ja kasutama hakata, aga ma ei ela inglise keelt kõnelevas riigis ja see on ebatõenäoline. Siis meenus mulle, et kunagi lugesin Vahedega kordamine.

Mis see on ja millega seda süüakse? Lühidalt, see on olemas unustamise kõver, täiendav tsitaat Wikipediast:

Juba esimese tunniga ununeb kuni 60% kogu saadud infost, 10 tundi pärast päheõppimist jääb mällu 35% õpitust. Seejärel kulgeb unustamisprotsess aeglaselt ja 6 päeva pärast jääb mällu umbes 20% algselt õpitud silpide koguarvust ja sama palju jääb mällu kuu aja pärast.

Ja järeldus siit

Selle kõvera põhjal saab teha järeldusi, et tõhusaks meeldejätmiseks on vaja päheõpitud materjali korrata.

Nii et meil tekkis idee intervallidega kordus.

АNKI on täiesti tasuta ja avatud lähtekoodiga programm, mis rakendab intervalliga korduse ideed. Lihtsamalt öeldes on arvutipõhistel välkmälukaartidel ühel pool küsimus ja teisel pool vastus. Kuna saate küsimusi/vastuseid teha kasutades tavalist html/css/javascript, siis võime öelda, et sellel on tõeliselt piiramatud võimalused. Lisaks on see laiendatav spetsiaalsega pistikprogrammid, ja üks neist on meile tulevikus väga kasulik.

Kaartide käsitsi loomine on pikk, tüütu ja suure tõenäosusega mõne aja pärast see ülesanne ununeb ja nii tekkiski mul mingi hetk küsimus, kas seda ülesannet on võimalik automatiseerida. Vastus on jah, saate. Ja ma tegin seda. Ma ütlen kohe, see on rohkem POC (kontseptsiooni tõestus), kuid mida saab kasutada. Kui on huvi kasutajate poolt ja kaasa löövad teised arendajad, siis saab selle viia valmistooteni, mida saavad kasutada ka tehniliselt kirjaoskamatud kasutajad. Nüüd nõuab minu utiliidi kasutamine mõningaid teadmisi programmeerimisest.

Lugesin programmi abil raamatuid AI lugeja. Sellel on võimalus ühendada väliseid sõnastikke ja sõna tõlkimisel salvestatakse tõlkimiseks kutsutud sõna tekstifaili. Jääb vaid need sõnad tõlkida ja ANKI kaardid luua.

Algul proovisin kasutada tõlkimiseks Google'i tõlge, Lingvo API jne. Kuid tasuta teenustega asjad ei õnnestunud. Tasuta limiidi ammendasin arendusprotsessi käigus, lisaks ei olnud mul litsentsitingimuste kohaselt õigust sõnu vahemällu salvestada. Mingil hetkel taipasin, et pean sõnad ise tõlkima. Selle tulemusena kirjutati moodul dsl2html millega saate ühenduse luua DSL-sõnastikud ja kes teab, kuidas neid teisendada HTML vormingus.

Nii näeb sõnaraamatu kirje välja *. HTML, minu võimalus võrreldes valikuga GoldenDict

Kaks lugu sellest, kuidas ANKI saab aidata teil võõrkeelt õppida ja intervjuudeks valmistuda

Enne kui otsin sõna ühendatud sõnaraamatutest, toon selle siia sõnastikuvorm (lemma) raamatukogu kasutades Stanfordi CoreNLP. Tegelikult hakkasin selle teegi tõttu Java keeles kirjutama ja algne plaan oli kirjutada kõik Java keeles, aga selle käigus leidsin teegi sõlm-java millega saab suhteliselt lihtsalt nodejs'ist Java koodi käivitada ja osa koodist on kirjutatud JavaScriptis. Kui ma oleksin selle teegi varem leidnud, poleks Java keeles kirjutatud ühtegi rida. Teine kõrvalprojekt, mis selle käigus sündis, on looming hoidla koos DSL-dokumentatsiooniga mis leiti võrgust vormingus *.chm, muudetud ja viidud jumalikule kujule. Kui algfaili autor on hüüdnimega kasutaja jozhic Kui ta seda artiklit näeb, tänan teda väga tehtud töö eest; ilma tema dokumentideta poleks see tõenäoliselt õnnestunud.

Niisiis, mul on ingliskeelne sõna, selle sõnastik on vormingus *. HTML, jääb üle vaid kõik kokku panna, sõnade loendist luua ANKI artiklid ja sisestada need ANKI andmebaasi. Sel eesmärgil loodi järgmine projekt data2anki. See võib sisestada sõnade loendi, tõlkida, luua ANKI *. HTML artiklid ja salvestada need ANKI andmebaasi. Artikli lõpus on juhised selle kasutamiseks. Vahepeal on teine ​​lugu, kus vahedega kordused võivad kasuks tulla.

Teine lugu.

Kõik inimesed, kes otsivad rohkem/vähem kvalifitseeritud eriala, sealhulgas programmeerijad, seisavad silmitsi vajadusega valmistuda intervjuuks. Paljusid intervjuudes küsitud mõisteid te igapäevases praktikas ei kasuta ja need unustatakse. Intervjuuks valmistudes, märkmeid, raamatut, teatmeteost lehitsedes seisin silmitsi tõsiasjaga, et juba teada oleva teabe väljasõelumine võtab palju aega ja tähelepanu, sest see pole alati ilmne ja tuleb lugege see hoolikalt läbi, et aru saada, mis see on. ebaoluline. Kui jõuad tõesti kordamist vajava teemani, siis sageli juhtub, et oled juba väsinud ja ettevalmistuse kvaliteet kannatab. Mingil hetkel mõtlesin, et miks mitte kasutada selleks ka ANKI kaarte? Näiteks teema kohta märkmeid tehes loo kohe märge küsimuse ja vastuse vormis ning siis seda kordades saad kohe teada, kas tead sellele küsimusele vastust või mitte.

Ainus probleem, mis tekkis, oli see, et küsimuste väljatrükkimine oli väga pikk ja tüütu. Protsessi lihtsustamiseks data2anki projekt Lisasin teisendusfunktsiooni allahindlus tekst ANKI kaartidel. Kõik, mida vajate, on kirjutada üks suur fail, milles küsimused ja vastused märgitakse etteantud märgijadaga, mille abil parser saab aru, kus on küsimus ja kus on vastus.

Kui see fail on loodud, käivitate data2anki ja see loob ANKI-kaardid. Algset faili on lihtne redigeerida ja jagada, tuleb vaid vastava(d) kaardi(d) kustutada ja programm uuesti käivitada ning luuakse uus versioon.

Paigaldamine ja kasutamine

  1. ANKI + AnkiConnecti installimine

    1. Laadige ANKI alla siit: https://apps.ankiweb.net/
    2. Installige AnkiConnecti pistikprogramm: https://ankiweb.net/shared/info/2055492159

  2. Paigaldamine data2anki

    1. Lae alla data2anki githubi hoidlast
      git clone https://github.com/anatoly314/data2anki
    2. Installige sõltuvused
      cd data2anki && npm install
    3. Laadige alla java sõltuvused https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Lahtipakkimine jar-dependencies.zip ja asetage selle sisu sisse data2anki/java/jars

  3. Kasutage sõnade tõlkimiseks:

    1. Failis data2anki/config.json:

      • võtmes režiimis sisestage väärtus dsl2anki

      • võtmes modules.dsl.anki.deckName и modules.dsl.anki.modelName kirjutage vastavalt Teki nimi и Mudeli nimi (peab olema loodud juba enne kaartide loomist). Praegu toetatakse ainult mudelitüüpi Põhi-:

        Sellel on esi- ja tagaväljad ning see loob ühe kaardi. Esiküljel sisestatud tekst kuvatakse kaardi esiküljel ja tagaküljel sisestatud tekst kaardi tagaküljel.

        kus on algne sõna? Esivälija tõlge tuleb sisse Tagumine väli.

        Toe lisamisega pole probleemi Tavaline (ja vastupidine kaart), kus sõnale ja tõlkele luuakse pöördkaart, kus tõlke põhjal tuleb algsõna meelde jätta. Kõik, mida vajate, on aeg ja soov.

      • võtmes modules.dsl.dictionariesPath registreerige massiiv ühendatud *.dsl sõnaraamatud. Iga ühendatud sõnastik on kataloog, milles asuvad sõnastikufailid vastavalt vormingule: DSL-sõnastiku struktuur

      • võtmes modules.dsl.wordToTranslatePath sisestage tee nende sõnade loendisse, mida soovite tõlkida.

    2. Käivitage ANKI rakendusega
      node data2ankiindex.js
    3. KASUM!!!

  4. Kasutatakse allahindlusest kaartide loomiseks

    1. Failis data2anki/config.json:

      • võtmes režiimis sisestage väärtus markdown2anki
      • võtmes modules.markdown.anki.deckName и modules.dsl.anki.modelName kirjutage vastavalt Teki nimi и Mudeli nimi (peab olema loodud juba enne kaartide loomist). Sest markdown2anki režiimis toetatakse ainult mudelitüüpi Põhi-.
      • võtmes modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors kirjutad valijad, millega märgid vastavalt küsimuse ja vastuse algust. Selektoriga rida ei sõeluta ja see ei satu kaardile, parser hakkab tööle järgmiselt realt.

        Näiteks see küsimuste/vastuste kaart:

        Kaks lugu sellest, kuidas ANKI saab aidata teil võõrkeelt õppida ja intervjuudeks valmistuda

        See näeb allahindluses välja selline:
        #KÜSIMUS# ## Küsimus 5. Kirjutage mul-funktsioon, mis töötab korralikult, kui seda kutsutakse järgmise süntaksiga. ```javascript console.log(mul(2)(3)(4)); // väljund : 24 console.log(mul(4)(3)(4)); // väljund : 48 ``` #ANSWER# Allpool on kood, millele järgneb selle toimimise selgitus: ```javascript function mul (x) { return function (y) { // anonüümne funktsioon return function (z) { // anonüümne funktsioon tagastab x * y * z; }; }; } ``` Siin aktsepteerib funktsioon `mul` esimese argumendi ja tagastab anonüümse funktsiooni, mis võtab teise parameetri ja tagastab anonüümse funktsiooni, mis võtab kolmanda parameetri ja tagastab argumentide korrutise, mis edastatakse järjestikuses JavaScriptis määratletud funktsioonis sisesel on juurdepääs välisele funktsioonimuutujale ja funktsioon on esimese klassi objekt, nii et funktsioon saab selle tagastada ja teises funktsioonis argumendina edasi anda. - Funktsioon on objekti tüüpi eksemplar - Funktsioonil võivad olla omadused ja sellel võib olla link selle konstruktorimeetodile - Funktsiooni saab salvestada muutujana - Funktsiooni saab edastada parameetrina teisele funktsioonile - Funktsioon võib olla tagasi teisest funktsioonist
        

        Näide võetud siit: 123-JavaScript-intervjuu-küsimused

        Projekti kaustas on ka fail näidetega examples/markdown2anki-example.md

      • võtmes modules.markdown.pathToFile
        kirjuta üles faili tee kus *.md küsimuste/vastuste fail

    2. Käivitage ANKI rakendusega
      node data2ankiindex.js
    3. KASUM!!!

Mobiiltelefonis näeb see välja järgmine:

Tulemus

ANKI lauaarvuti versioonis saadud kaardid sünkroonitakse probleemideta ANKI pilvega (kuni 100 mb tasuta) ja seejärel saate neid kõikjal kasutada. Androidile ja iPhone'ile on olemas kliendid ning seda saab kasutada ka brauseris. Selle tulemusel, kui teil on aega, millele teil pole midagi kulutada, saate selle asemel, et sihitult Facebookis või Instagramis kassides scrollida, õppida midagi uut.

Epiloog

Nagu mainisin, on see rohkem töötav POC, mida saate kasutada, kui valmistoode. Umbes 30% DSL-i parseri standardist on rakendamata ja seetõttu Näiteks ei leia kõiki sõnastikes olevaid kirjeid, on ka mõte see ümber kirjutada JavaScript, sest ma tahan “järjepidevust” ja pealegi pole see nüüd väga optimaalselt kirjutatud. Nüüd ehitab parser puud, kuid minu arvates on see tarbetu ja ei pea koodi keeruliseks muutma. IN markdown2anki režiimis pilte ei sõeluta. Püüan vähehaaval kärpida, aga kuna kirjutan enda jaoks, siis lahendan ennekõike need probleemid, mille peale ise astun, aga kui keegi soovib aidata, siis olete oodatud. Kui teil on programmi kohta küsimusi, aitan meeleldi läbi avatud küsimustega vastavates projektides. Kirjutage siia muu kriitika ja ettepanekud. Loodan, et see projekt on kellelegi kasulik.

PS Kui märkate vigu (ja kahjuks neid on), kirjutage mulle isikliku sõnumiga, parandan kõik.

Allikas: www.habr.com

Lisa kommentaar