Dvije priče o tome kako vam ANKI može pomoći u učenju stranog jezika i pripremi za intervjue

Uvijek sam vjerovao da je lijen programer dobar programer. Zašto? Jer tražite od vrijednog radnika da nešto učini, on će otići i učiniti. A lijeni programer će potrošiti 2-3 puta više vremena, ali će napisati skriptu koja će to učiniti umjesto njega. Možda će vam trebati nerazumno dugo da to učinite prvi put, ali s ponovljenim zadacima ovaj će se pristup vrlo brzo isplatiti. Smatram se lijenim programerom. To je bila preambula, a sada prijeđimo na posao.

Priča prva

Prije nekoliko godina pitao sam se kako bih mogao poboljšati svoj engleski. Ništa mi bolje nije padalo na pamet od čitanja literature. Kupio sam elektronički čitač, skinuo knjige i počeo čitati. Dok sam čitala, stalno sam nailazila na nepoznate riječi. Odmah sam ih preveo pomoću rječnika ugrađenih u čitač, ali sam primijetio jednu značajku: riječi nisu htjele biti zapamćene. Kad sam nekoliko stranica kasnije ponovno naišao na ovu riječ, s 90% vjerojatnosti ponovno mi je trebao prijevod, a to se svaki put dogodilo. Zaključak je bio da nije dovoljno samo prevoditi nepoznate riječi tijekom čitanja, potrebno je učiniti nešto drugo. Idealna opcija bila bi uvesti ga u svakodnevni život i početi ga koristiti, ali ne živim u zemlji engleskog govornog područja i to je malo vjerojatno. Tada sam se sjetio o čemu sam jednom čitao Razmaknuto ponavljanje.

Što je to i s čime se jede? Ukratko, postoji ovo krivulja zaborava, daljnji citat iz Wikipedije:

Već u prvom satu zaboravlja se do 60% svih primljenih informacija; 10 sati nakon pamćenja ostaje u sjećanju 35% naučenog. Zatim proces zaboravljanja teče sporo i nakon 6 dana u pamćenju ostaje oko 20% od ukupnog broja inicijalno naučenih slogova, a isto toliko ostaje u pamćenju nakon mjesec dana.

I zaključak odavde

Zaključci koji se mogu izvući na temelju ove krivulje su da je za učinkovito pamćenje potrebno ponavljati zapamćeno gradivo.

Pa smo došli na ideju razmaknuto ponavljanje.

ANKI je potpuno besplatan program otvorenog koda koji implementira ideju razmaknutog ponavljanja. Jednostavno rečeno, kompjuterizirane flash kartice imaju pitanje na jednoj strani i odgovor na drugoj. Budući da možete postaviti pitanja/odgovore koristeći regular html/css/javascript, onda možemo reći da ima uistinu neograničene mogućnosti. Osim toga, proširiv je posebnim dodaci, a jedan od njih će nam biti od velike koristi u budućnosti.

Ručno kreiranje kartica je dugotrajno, zamorno i vrlo je vjerojatno da ćete nakon nekog vremena zaboraviti na ovaj zadatak, pa sam se u jednom trenutku zapitao je li moguće automatizirati ovaj zadatak. Odgovor je da, možete. I uspjela sam. Odmah ću reći, to je više POC (dokaz koncepta), ali koji se može koristiti. Ako postoji interes korisnika i uključe se drugi programeri, onda se može doći do gotovog proizvoda koji mogu koristiti i tehnički nepismeni korisnici. Korištenje mog uslužnog programa zahtijeva malo znanja o programiranju.

Čitam knjige pomoću programa AI čitač. Ima mogućnost povezivanja vanjskih rječnika, a kada prevedete riječ, sprema riječ koju ste pozvali na prijevod u tekstualnu datoteku. Sve što preostaje je prevesti ove riječi i kreirati ANKI kartice.

Isprva sam pokušao koristiti za prijevod Google Translate, Lingvo API itd. Ali stvari nisu išle s besplatnim uslugama. Iscrpio sam besplatno ograničenje tijekom procesa razvoja, osim toga, prema uvjetima licence, nisam imao pravo predmemorirati riječi. U jednom sam trenutku shvatio da moram sam prevesti riječi. Kao rezultat, napisan je modul dsl2html na koje se možete spojiti DSL rječnici i tko zna kako ih pretvoriti u HTML format.

Ovako izgleda rječnička natuknica u *. Html, moja opcija u usporedbi s opcijom GoldenDict

Dvije priče o tome kako vam ANKI može pomoći u učenju stranog jezika i pripremi za intervjue

Prije traženja riječi u povezanim rječnicima, donosim je na rječnički oblik (lema) koristeći knjižnicu Stanford CoreNLP. Zapravo, zbog ove biblioteke počeo sam pisati u Javi i prvotni plan je bio da sve pišem u Javi, ali u procesu sam pronašao biblioteku čvor-java s kojim možete relativno lako izvršiti Java kod iz nodejs-a, a dio koda je napisan u JavaScript-u. Da sam ovu biblioteku pronašao ranije, niti jedan red ne bi bio napisan u Javi. Još jedan sporedni projekt koji je rođen u procesu je kreacija repozitorij s DSL dokumentacijom koji je pronađen na mreži u formatu *.chm, pretvoren i doveden u božanski oblik. Ako je autor originalne datoteke korisnik po nadimku yozhic Kad vidi ovaj članak, ja mu puno zahvaljujem na obavljenom poslu, bez njegove dokumentacije vjerojatno ne bih uspio.

Dakle, imam riječ na engleskom, njenu rječničku stavku u formatu *. Html, preostaje samo sve složiti, kreirati ANKI članke iz popisa riječi i unijeti ih u ANKI bazu. U tu svrhu kreiran je sljedeći projekt data2anki. Može uzeti popis riječi kao unos, prevesti, stvoriti ANKI *. Html članke i evidentirati ih u ANKI bazi podataka. Na kraju članka nalaze se upute kako ga koristiti. U međuvremenu, druga priča je gdje razmaknuta ponavljanja mogu biti korisna.

Druga priča.

Svi ljudi u potrazi za više/manje kvalificiranom specijalnošću, uključujući programere, suočeni su s potrebom da se pripreme za intervju. Mnoge pojmove koji se postavljaju na intervjuima ne koristite u svakodnevnoj praksi i zaboravljaju se. Pripremajući se za intervju, prelistavajući bilješke, knjigu, priručnik, suočila sam se s činjenicom da je potrebno puno vremena i pažnje da procijedite informacije koje već znate jer nisu uvijek očite i morate pažljivo pročitajte da shvatite o čemu se radi.nebitno. Kada dođete do teme koju stvarno treba ponoviti, često se dogodi da ste već umorni i kvaliteta vaše pripreme trpi. U nekom trenutku sam pomislio, zašto ne koristiti i ANKI kartice za ovo? Na primjer, kada pravite bilješke o nekoj temi, odmah napravite bilješku u obliku pitanja i odgovora, a onda kada to ponovite, odmah ćete znati znate li odgovor na to pitanje ili ne.

Jedini problem koji se pojavio je taj što je tipkanje pitanja bilo jako dugo i zamorno. Da biste olakšali proces, data2anki projektu Dodao sam funkciju pretvaranja smanjenje tekst u ANKI karticama. Sve što trebate je napisati jednu veliku datoteku u kojoj će pitanja i odgovori biti označeni unaprijed određenim nizom znakova, po čemu će parser shvatiti gdje je pitanje, a gdje odgovor.

Nakon što se ova datoteka stvori, pokrećete data2anki i ona stvara ANKI kartice. Izvornu datoteku lako je uređivati ​​i dijeliti, samo trebate obrisati odgovarajuću karticu(e) i ponovno pokrenuti program, a nova verzija će se stvoriti.

Instalacija i korištenje

  1. Instalacija ANKI + AnkiConnect

    1. Preuzmite ANKI odavde: https://apps.ankiweb.net/
    2. Instalirajte AnkiConnect dodatak: https://ankiweb.net/shared/info/2055492159

  2. Instalacija data2anki

    1. preuzimanje datoteka data2anki iz github repozitorija
      git clone https://github.com/anatoly314/data2anki
    2. Instalirajte ovisnosti
      cd data2anki && npm install
    3. Preuzmite java ovisnosti https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Raspakiranje jar-dependencies.zip i stavite njegov sadržaj data2anki/java/jars

  3. Koristite za prijevod riječi:

    1. U spisu data2anki/config.json:

      • u ključu način unesite vrijednost dsl2anki

      • u ključu modules.dsl.anki.deckName и modules.dsl.anki.modelName pisati u skladu s tim Naziv špila и Naziv modela (moraju biti već kreirani prije kreiranja kartica). Trenutno je podržan samo tip modela osnovni:

        Ima prednja i stražnja polja i stvorit će jednu karticu. Tekst koji unesete na prednjoj strani pojavit će se na prednjoj strani kartice, a tekst koji unesete na stražnjoj strani pojavit će se na poleđini kartice.

        gdje je izvorna riječ? Prednje polje, a prijevod će biti in Stražnje polje.

        Nema problema dodati podršku Osnovna (i obrnuta kartica), gdje će se kreirati obrnuta kartica za riječ i prijevod, gdje ćete se na temelju prijevoda morati sjetiti izvorne riječi. Sve što trebate je vrijeme i želja.

      • u ključu modules.dsl.dictionariesPath registrirajte niz s povezanim *.dsl rječnicima. Svaki povezani rječnik je direktorij u kojem se nalaze datoteke rječnika u skladu s formatom: Struktura DSL rječnika

      • u ključu modules.dsl.wordToTranslatePath unesite put do popisa riječi koje želite prevesti.

    2. Pokrenite s pokrenutom ANKI aplikacijom
      node data2ankiindex.js
    3. DOBIT!!!

  4. Koristi se za izradu kartica iz markdowna

    1. U spisu data2anki/config.json:

      • u ključu način unesite vrijednost markdown2anki
      • u ključu modules.markdown.anki.deckName и modules.dsl.anki.modelName pisati u skladu s tim Naziv špila и Naziv modela (moraju biti već kreirani prije kreiranja kartica). Za markdown2anki način rada podržan je samo tip modela osnovni.
      • u ključu modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors upisujete selektore kojima označavate početak pitanja odnosno odgovora. Sam redak sa selektorom neće biti analiziran i neće završiti na kartici; parser će početi raditi od sljedećeg retka.

        Na primjer, ova kartica pitanja/odgovora:

        Dvije priče o tome kako vam ANKI može pomoći u učenju stranog jezika i pripremi za intervjue

        U markdownu će izgledati ovako:
        #QUESTION# ## Pitanje 5. Napišite mul funkciju koja će ispravno raditi kada se pozove sa sljedećom sintaksom. ```javascript konzola.log(mul(2)(3)(4)); // izlaz: 24 console.log(mul(4)(3)(4)); // output : 48 ``` #ANSWER# Ispod je kod iza kojeg slijedi objašnjenje kako radi: ```javascript funkcija mul (x) { return funkcija (y) { // anonimna funkcija return funkcija (z) { // anonimna funkcija return x * y * z; }; }; } ``` Ovdje funkcija `mul` prihvaća prvi argument i vraća anonimnu funkciju koja uzima drugi parametar i vraća anonimnu funkciju koja uzima treći parametar i vraća množenje argumenata koji se prosljeđuju uzastopno U Javascript funkciji definiranoj unutar ima pristup vanjskoj funkcijskoj varijabli, a funkcija je objekt prve klase tako da ga funkcija može vratiti i proslijediti kao argument u drugoj funkciji. - Funkcija je instanca tipa Object - Funkcija može imati svojstva i vezu natrag na svoju metodu konstruktora - Funkcija se može pohraniti kao varijabla - Funkcija se može proslijediti kao parametar drugoj funkciji - Funkcija se može vratio s druge funkcije
        

        Primjer preuzet odavde: 123-JavaScript-Intervju-Pitanja

        U mapi projekta postoji i datoteka s primjerima examples/markdown2anki-example.md

      • u ključu modules.markdown.pathToFile
        zapišite put do datoteke gdje je *.doktor medicine datoteka pitanja/odgovora

    2. Pokrenite s pokrenutom ANKI aplikacijom
      node data2ankiindex.js
    3. DOBIT!!!

Ovako to izgleda na mobitelu:

Rezultirati

Kartice primljene na desktop verziji ANKI-ja se bez problema sinkroniziraju s ANKI oblakom (besplatno do 100mb), a zatim ih možete koristiti svugdje. Postoje klijenti za Android i iPhone, a možete ga koristiti i u pregledniku. Kao rezultat toga, ako imate vremena koje nemate na što potrošiti, tada umjesto besciljnog skrolanja po Facebooku ili mačkama na Instagramu možete naučiti nešto novo.

Epilog

Kao što sam spomenuo, ovo je više radni POC koji možete koristiti nego gotov proizvod. Oko 30% standarda DSL parsera nije implementirano, i stoga, na primjer, ne mogu se pronaći sve rječničke natuknice koje se nalaze u rječnicima, postoji i ideja da se to prepiše JavaScript, jer želim "dosljednost", a osim toga, sada nije napisano baš optimalno. Sada parser gradi stablo, ali po mom mišljenju to je nepotrebno i ne treba komplicirati kod. U markdown2anki način rada, slike se ne analiziraju. Pokušat ću rezati malo po malo, ali pošto pišem za sebe, prije svega ću riješiti probleme na koje ću sam stati, ali ako netko želi pomoći, dobrodošao je. Ako imate pitanja o programu, rado ću vam pomoći kroz otvorena pitanja u relevantnim projektima. Ovdje napišite ostale kritike i prijedloge. Nadam se da će ovaj projekt nekome biti od koristi.

PS Ako primijetite bilo kakve greške (a, nažalost, ima ih), pišite mi u osobnoj poruci, sve ću ispraviti.

Izvor: www.habr.com

Dodajte komentar