Dvi istorijos, kaip ANKI gali padėti išmokti užsienio kalbos ir pasiruošti interviu

Visada tikėjau, kad tingus programuotojas yra geras programuotojas. Kodėl? Nes paprašyk darbščiojo ką nors padaryti, jis nueis ir padarys. O tingus programuotojas praleis 2-3 kartus daugiau laiko, bet parašys scenarijų, kuris tai padarys už jį. Pirmą kartą tai padaryti gali užtrukti nepagrįstai ilgai, tačiau atliekant kartotines užduotis toks požiūris labai greitai atsipirks. Laikau save tingiu programuotoju. Tokia buvo preambulė, o dabar eikime prie reikalo.

Istorija viena

Prieš keletą metų galvojau, kaip galėčiau pagerinti anglų kalbos žinias. Nieko geresnio neatėjo į galvą, kaip skaityti literatūrą. Įsigijau elektroninį skaitytuvą, atsisiunčiau knygų ir pradėjau skaityti. Skaitydamas vis užtikdavau nepažįstamus žodžius. Iš karto juos išverčiau naudodamasis skaityklėje įtaisytais žodynais, tačiau pastebėjau vieną ypatybę: žodžiai nenorėjo įsiminti. Kai po kelių puslapių vėl sutikau šį žodį, su 90% tikimybe, man vėl reikėjo vertimo, ir taip nutikdavo kiekvieną kartą. Peršasi išvada, kad skaitant neužtenka tiesiog išversti nepažįstamų žodžių, reikia daryti ką nors kita. Idealus variantas būtų įvesti jį į kasdienį gyvenimą ir pradėti naudoti, bet aš negyvenu angliškai kalbančioje šalyje ir tai mažai tikėtina. Tada prisiminiau, kad kažkada skaičiau apie Kartojimas tarpais.

Kas tai yra ir su kuo valgoma? Trumpai tariant, tai yra užmiršimo kreivė, papildoma citata iš Vikipedijos:

Jau per pirmą valandą pamirštama iki 60% visos gautos informacijos, praėjus 10 valandų po įsiminimo, atmintyje lieka 35% to, kas buvo išmokta. Tada užmiršimo procesas vyksta lėtai ir po 6 dienų atmintyje lieka apie 20% viso iš pradžių išmoktų skiemenų skaičiaus, o po mėnesio – tiek pat.

Ir išvada iš čia

Remiantis šia kreive galima padaryti išvadas, kad norint efektyviai įsiminti, reikia pakartoti įsimintą medžiagą.

Taigi mes sugalvojome idėją intervalais pasikartojantis.

АNKI yra visiškai nemokama ir atviro kodo programa, įgyvendinanti intervalinio pasikartojimo idėją. Paprasčiau tariant, kompiuterizuotose „flash“ kortelėse vienoje pusėje yra klausimas, o kitoje – atsakymas. Kadangi klausimus / atsakymus galite pateikti naudodami įprastą html/css/javascript, tuomet galime pasakyti, kad jos galimybės tikrai neribotos. Be to, jį galima išplėsti specialiais įskiepių, ir vienas iš jų mums labai pravers ateityje.

Kortelių kūrimas rankiniu būdu yra ilgas, varginantis ir su didele tikimybe po kurio laiko šią užduotį pamiršite, todėl kažkada uždaviau sau klausimą, ar įmanoma šią užduotį automatizuoti. Atsakymas yra taip, galite. Ir aš tai padariau. Iš karto pasakysiu, tai daugiau POC (koncepcijos įrodymas), bet kuriuos galima naudoti. Jei yra vartotojų susidomėjimas ir įsitraukia kiti kūrėjai, tai gali būti sukurta iki galutinio produkto, kurį gali naudoti net techniškai neraštingi vartotojai. Dabar, norint naudoti mano įrankį, reikia tam tikrų programavimo žinių.

Naudodamasis programa skaitau knygas AI skaitytuvas. Jis turi galimybę prijungti išorinius žodynus, o kai išverčiate žodį, jis išsaugo žodį, kurį raginote versti, tekstiniame faile. Belieka išversti šiuos žodžius ir sukurti ANKI korteles.

Iš pradžių bandžiau naudoti vertimui Google Translate, Lingvo API ir tt Tačiau su nemokamomis paslaugomis viskas nepavyko. Kūrimo proceso metu išnaudojau nemokamą limitą, be to, pagal licencijos sąlygas neturėjau teisės saugoti žodžių. Kažkuriuo momentu supratau, kad žodžius reikia išversti pačiam. Dėl to buvo parašytas modulis dsl2html prie kurio galite prisijungti DSL žodynai ir kas žino, kaip juos paversti HTML formatu.

Taip atrodo žodyno įrašas *. Html, mano variantas lyginant su galimybe GoldenDict

Dvi istorijos, kaip ANKI gali padėti išmokti užsienio kalbos ir pasiruošti interviu

Prieš ieškodamas žodžio prijungtuose žodynuose, aš jį atnešu į žodyno forma (lemma) naudojantis biblioteka „Stanford CoreNLP“. Tiesą sakant, dėl šios bibliotekos aš pradėjau rašyti Java ir pradinis planas buvo viską rašyti Java, bet eidamas radau biblioteką mazgas-java su kuria galite palyginti lengvai vykdyti Java kodą iš nodejs, o dalis kodo yra parašyta JavaScript. Jei šią biblioteką būčiau radęs anksčiau, Java nebūtų parašyta nė viena eilutė. Kitas šalutinis projektas, kuris gimė proceso metu, yra kūrimas saugykla su DSL dokumentacija kuris buvo rastas tinkle formatu *.chm, paverstas ir įneštas į dievišką pavidalą. Jei pradinio failo autorius yra vartotojas pagal slapyvardį yozhic Kai jis pamato šį straipsnį, labai dėkoju jam už atliktą darbą, be jo dokumentų greičiausiai nebūčiau pasisekęs.

Taigi, aš turiu žodį anglų kalba, jo žodyno įrašas formatu *. Html, belieka viską sudėti, iš žodžių sąrašo sukurti ANKI straipsnius ir suvesti juos į ANKI duomenų bazę. Tuo tikslu buvo sukurtas toks projektas data2anki. Galima įvesti žodžių sąrašą, išversti, sukurti ANKI *. Html straipsnius ir įrašyti juos į ANKI duomenų bazę. Straipsnio pabaigoje pateikiamos instrukcijos, kaip ją naudoti. Tuo tarpu antroji istorija yra ta, kur pasikartojimai intervalais gali būti naudingi.

Antroji istorija.

Visi žmonės, ieškantys daugiau/mažiau kvalifikuotos specialybės, įskaitant programuotojus, susiduria su poreikiu ruoštis pokalbiui. Daugelio interviu metu užduodamų sąvokų kasdienėje praktikoje nevartojate ir jos pamirštamos. Ruošdamasi interviu, vartydama užrašus, knygą, žinyną, susidūriau su tuo, kad reikia daug laiko ir dėmesio atsijoti informaciją, kurią jau žinai, nes ji ne visada akivaizdi ir tenka atidžiai perskaitykite, kad suprastumėte, kas tai yra. Nesvarbu. Atėjus prie temos, kurią tikrai reikia kartoti, dažnai nutinka taip, kad jau pavargote ir nukenčia pasiruošimo kokybė. Kažkuriuo metu pagalvojau, kodėl gi nepanaudojus ir ANKI kortelių? Pavyzdžiui, užsirašinėdami tema, iš karto sukurkite pastabą klausimo ir atsakymo forma, o tada pakartoję iš karto sužinosite, ar žinote atsakymą į šį klausimą, ar ne.

Vienintelė iškilusi problema buvo ta, kad klausimų spausdinimas buvo labai ilgas ir varginantis. Kad procesas būtų lengvesnis, data2anki projektas pridėjau konvertavimo funkciją užsirašyk tekstas ANKI kortelėse. Tereikia parašyti vieną didelį failą, kuriame klausimai ir atsakymai bus pažymėti iš anksto nustatyta simbolių seka, pagal kurią analizatorius supras, kur yra klausimas, o kur yra atsakymas.

Sukūrę šį failą, paleidžiate data2anki ir jis sukuria ANKI korteles. Originalų failą lengva redaguoti ir bendrinti, tereikia ištrinti atitinkamą (-as) kortelę (-es) ir paleisti programą dar kartą, ir bus sukurta nauja versija.

Montavimas ir naudojimas

  1. ANKI + AnkiConnect diegimas

    1. Atsisiųskite ANKI iš čia: https://apps.ankiweb.net/
    2. Įdiekite AnkiConnect papildinį: https://ankiweb.net/shared/info/2055492159

  2. Montavimas data2anki

    1. parsisiųsti data2anki iš github saugyklos
      git clone https://github.com/anatoly314/data2anki
    2. Įdiekite priklausomybes
      cd data2anki && npm install
    3. Parsisiųsti java priklausomybes https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Išpakavimas jar-dependencies.zip ir įdėkite jo turinį data2anki/java/jars

  3. Naudokite norėdami išversti žodžius:

    1. Byloje data2anki/config.json:

      • raktu režimas įveskite vertę dsl2anki

      • raktu modules.dsl.anki.deckName и modules.dsl.anki.modelName atitinkamai parašyk Denio pavadinimas и Modelio pavadinimas (jau turi būti sukurta prieš kuriant korteles). Šiuo metu palaikomas tik modelio tipas Pagrindinis:

        Turi priekio ir nugaros laukus ir sukuria vieną kortelę. Tekstas, kurį įvedėte į priekį, bus rodomas kortelės priekyje, o tekstas, kurį įvedėte atgal, kortelės gale.

        kur originalus žodis? Priekinis laukas, ir bus vertimas Užpakalinis laukas.

        Nėra jokių problemų pridėti paramą Pagrindinė (ir atvirkštinė kortelė), kur žodžiui ir vertimui bus sukurta atvirkštinė kortelė, kur pagal vertimą reikės atsiminti originalų žodį. Viskas, ko jums reikia, yra laiko ir noro.

      • raktu modules.dsl.dictionariesPath užregistruokite masyvą su prijungtu *.dsl žodynai. Kiekvienas prijungtas žodynas yra katalogas, kuriame yra žodyno failai pagal formatą: DSL žodyno struktūra

      • raktu modules.dsl.wordToTranslatePath įveskite kelią į žodžių, kuriuos norite išversti, sąrašą.

    2. Paleiskite, kai veikia ANKI programa
      node data2ankiindex.js
    3. PELNAS!!!

  4. Naudojama kortelių kūrimui iš žymėjimo

    1. Byloje data2anki/config.json:

      • raktu režimas įveskite vertę markdown2anki
      • raktu modules.markdown.anki.deckName и modules.dsl.anki.modelName atitinkamai parašyk Denio pavadinimas и Modelio pavadinimas (jau turi būti sukurta prieš kuriant korteles). Dėl markdown2anki režimu palaikomas tik modelio tipas Pagrindinis.
      • raktu modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors rašote rinkiklius, kuriais atitinkamai pažymite klausimo ir atsakymo pradžią. Linija su pačiu parinkikliu nebus analizuojama ir nepateks į kortelę; analizatorius pradės veikti nuo kitos eilutės.

        Pavyzdžiui, ši klausimų/atsakymų kortelė:

        Dvi istorijos, kaip ANKI gali padėti išmokti užsienio kalbos ir pasiruošti interviu

        Tai atrodys taip:
        #KLAUSIMAS# ## 5 klausimas. Parašykite mul funkciją, kuri tinkamai veiks, kai bus iškviesta tokia sintaksė. ``` javascript console.log(mul(2)(3)(4)); // išvestis : 24 console.log(mul(4)(3)(4)); // išvestis : 48 ``` #ANSWER# Žemiau pateikiamas kodas ir paaiškinimas, kaip jis veikia: ```javascript function mul (x) { return function (y) { // anoniminė funkcija return funkcija (z) { // anoniminė funkcija return x * y * z; }; }; } ``` Čia funkcija `mul` priima pirmąjį argumentą ir grąžina anoniminę funkciją, kuri paima antrą parametrą ir grąžina anoniminę funkciją, kuri paima trečiąjį parametrą ir grąžina argumentų dauginimą, kuris perduodamas nuosekliai. Apibrėžiama Javascript funkcija Inside turi prieigą prie išorinio funkcijos kintamojo, o funkcija yra pirmos klasės objektas, todėl funkcija taip pat gali ją grąžinti ir perduoti kaip argumentą kitoje funkcijoje. - Funkcija yra objekto tipo egzempliorius - Funkcija gali turėti savybių ir turėti nuorodą atgal į jos konstruktoriaus metodą - Funkcija gali būti saugoma kaip kintamasis - Funkcija gali būti perduodama kaip parametras kitai funkcijai - Funkcija gali būti grįžo iš kitos funkcijos
        

        Pavyzdys paimtas iš čia: 123-JavaScript-Interviu-Klausimai

        Taip pat projekto aplanke yra failas su pavyzdžiais examples/markdown2anki-example.md

      • raktu modules.markdown.pathToFile
        užsirašykite kelią į failą, kur *.md klausimų/atsakymų failas

    2. Paleiskite, kai veikia ANKI programa
      node data2ankiindex.js
    3. PELNAS!!!

Štai kaip tai atrodo mobiliajame telefone:

Rezultatas

ANKI darbalaukio versijoje gautos kortelės be problemų sinchronizuojamos su ANKI debesiu (nemokamai iki 100 mb), tada galėsite jas naudoti visur. Yra „Android“ ir „iPhone“ skirtų klientų, taip pat galite juos naudoti naršyklėje. Dėl to, jei turite laiko, kuriam neturite ką leisti, užuot be tikslo naršydami „Facebook“ ar „Instagram“ katėmis, galite išmokti ko nors naujo.

Epilogas

Kaip jau minėjau, tai labiau veikiantis POC, kurį galite naudoti, nei gatavas produktas. Apie 30 % DSL analizatoriaus standarto neįdiegta, todėl pavyzdžiui, galima rasti ne visus žodyno įrašus, esančius žodynuose, taip pat yra mintis jį perrašyti JavaScript, nes noriu “nuoseklumo”, o be to dabar nelabai optimaliai parašyta. Dabar analizatorius kuria medį, bet, mano nuomone, tai nereikalinga ir nereikia apsunkinti kodo. IN markdown2anki režimu, vaizdai nėra analizuojami. Bandysiu karpyti po truputi, bet kadangi rašau sau, tai visų pirma išspręsiu tas problemas, kurias pats užlipsiu, bet jei kas nori padėti, tai laukiame. Jei turite klausimų apie programą, mielai padėsiu išspręsti iškilusias problemas susijusiuose projektuose. Kitą kritiką ir pasiūlymus rašykite čia. Tikiuosi, kad šis projektas bus kam nors naudingas.

PS Jei pastebėsite klaidų (o, deja, jų yra), rašykite man asmenine žinute, viską ištaisysiu.

Šaltinis: www.habr.com

Добавить комментарий