ANKI sizga chet tilini o'rganish va suhbatlarga tayyorgarlik ko'rishda qanday yordam berishi haqida ikkita hikoya

Men har doim dangasa dasturchi yaxshi dasturchi ekanligiga ishonganman. Nega? Chunki mehnatkashdan biror narsa soβ€˜rasangiz, u borib bajaradi. Va dangasa dasturchi 2-3 barobar ko'proq vaqt sarflaydi, lekin u uchun buni amalga oshiradigan skript yozadi. Buni birinchi marta bajarish uchun asossiz uzoq vaqt talab qilinishi mumkin, ammo takroriy vazifalar bilan bu yondashuv juda tez o'z samarasini beradi. Men o'zimni dangasa dasturchi deb hisoblayman. Bu muqaddima edi, endi ishga kirishaylik.

Birinchi hikoya

Bir necha yil oldin men ingliz tilini qanday yaxshilashim mumkinligi haqida o'yladim. Adabiy o'qishdan ko'ra yaxshiroq narsa xayolga kelmagan. Men elektron o'quvchi sotib oldim, kitoblarni yuklab oldim va o'qishni boshladim. Oβ€˜qiyotganimda notanish soβ€˜zlarga duch kelaverdim. Men ularni darhol o'quvchi ichiga o'rnatilgan lug'atlardan foydalanib tarjima qildim, lekin men bir xususiyatni payqadim: so'zlar esda qolishni xohlamadi. Men bu so'zni bir necha sahifadan keyin yana uchratganimda, 90% ehtimol bilan yana tarjimaga muhtoj bo'ldim va bu har safar sodir bo'ldi. Xulosa shuki, o'qish paytida notanish so'zlarni shunchaki tarjima qilishning o'zi etarli emas, siz boshqa narsa qilishingiz kerak. Ideal variant uni kundalik hayotga kiritish va undan foydalanishni boshlash bo'ladi, lekin men ingliz tilida so'zlashadigan mamlakatda yashamayman va bu dargumon. Keyin men bir marta o'qiganimni esladim Intervalli takrorlash.

Bu nima va u nima bilan iste'mol qilinadi? Qisqasi, bu bor unutish egri chizig'i, Vikipediyadan qo'shimcha iqtibos:

Birinchi soat ichida qabul qilingan barcha ma'lumotlarning 60% ga yaqini unutiladi; yodlab olingandan 10 soat o'tgach, o'rganilganlarning 35% xotirada qoladi. Keyin unutish jarayoni asta-sekin davom etadi va 6 kundan keyin dastlab o'rganilgan bo'g'inlarning umumiy sonining taxminan 20% xotirada qoladi va bir oydan keyin ham xuddi shunday miqdor xotirada qoladi.

Va bu erdan xulosa

Bu egri chiziqqa asoslanib xulosa qilish mumkinki, samarali yodlash uchun yodlangan materialni takrorlash kerak.

Shunday qilib, biz bir fikrga keldik intervalgacha takrorlash.

ANKI intervalgacha takrorlash g'oyasini amalga oshiradigan mutlaqo bepul va ochiq kodli dastur. Oddiy qilib aytganda, kompyuterlashtirilgan flesh-kartalarning bir tomonida savol, ikkinchi tomonida javob bor. Chunki siz savollar/javoblarni muntazam ravishda bajarishingiz mumkin html/css/javascript, unda biz haqiqatan ham cheksiz imkoniyatlarga ega deb ayta olamiz. Bundan tashqari, u maxsus bilan kengaytirilishi mumkin plaginlar, va ulardan biri kelajakda biz uchun juda foydali bo'ladi.

Kartalarni qo'lda yaratish uzoq, zerikarli va yuqori ehtimollik bilan bir muncha vaqt o'tgach, siz bu vazifani unutasiz va shuning uchun men o'zimga savol berdim, bu vazifani avtomatlashtirish mumkinmi? Javob ha, mumkin. Va men buni qildim. Men darhol aytaman, bu ko'proq POC (kontseptsiya isboti), lekin qaysi biri ishlatilishi mumkin. Agar foydalanuvchilar tomonidan qiziqish bo'lsa va boshqa ishlab chiquvchilar ishtirok etsa, u hatto texnik jihatdan savodsiz foydalanuvchilar ham foydalanishi mumkin bo'lgan tayyor mahsulotga keltirilishi mumkin. Endi mening yordam dasturimdan foydalanish dasturlash bo'yicha ba'zi bilimlarni talab qiladi.

Men dastur yordamida kitob o'qiyman AI Reader. U tashqi lug'atlarni ulash imkoniyatiga ega va siz so'zni tarjima qilganingizda, siz tarjima qilish uchun chaqirgan so'zni matnli faylga saqlaydi. Faqat bu so'zlarni tarjima qilish va ANKI kartalarini yaratish qoladi.

Avvaliga tarjima uchun foydalanishga harakat qildim Google tarjima, Lingvo API va hokazo. Ammo bepul xizmatlar bilan hammasi yaxshi bo'lmadi. Ishlab chiqish jarayonida men bepul limitni tugatdim, bundan tashqari, litsenziya shartlariga ko'ra, men so'zlarni keshlash huquqiga ega emas edim. Bir payt men so'zlarni o'zim tarjima qilishim kerakligini angladim. Natijada modul yozildi dsl2html unga ulanishingiz mumkin DSL lug'atlar va ularni qanday aylantirishni kim biladi HTML format.

Lug'at yozuvi * da shunday ko'rinadi.html, variant bilan solishtirganda mening variantim GoldenDict

ANKI sizga chet tilini o'rganish va suhbatlarga tayyorgarlik ko'rishda qanday yordam berishi haqida ikkita hikoya

Bog'langan lug'atlarda so'z izlashdan oldin, men uni keltiraman lug'at shakli (lemma) kutubxonadan foydalanish Stenford CoreNLP. Aslida, bu kutubxona tufayli men Java-da yozishni boshladim va asl reja hamma narsani Java-da yozish edi, lekin bu jarayonda men kutubxonani topdim. tugun-java uning yordamida siz nodejs dan Java kodini nisbatan oson bajarishingiz mumkin va kodning bir qismi JavaScript-da yozilgan. Agar men bu kutubxonani avvalroq topganimda, Java-da bitta qator ham yozilmagan bo'lardi. Jarayonda tug'ilgan yana bir yon loyiha - bu yaratish DSL hujjatlari bilan ombor tarmoqda * formatida topilgan.chm, aylantirildi va ilohiy shaklga keltirildi. Agar asl fayl muallifi taxallusli foydalanuvchi bo'lsa yozhic U ushbu maqolani ko'rganida, men unga qilgan ishi uchun juda minnatdorman; uning hujjatlarisiz men muvaffaqiyatga erisha olmagan bo'lardim.

Shunday qilib, menda ingliz tilida so'z bor, uning lug'at yozuvi * formatida.html, hamma narsani bir joyga qo'yish, so'zlar ro'yxatidan ANKI maqolalarini yaratish va ularni ANKI ma'lumotlar bazasiga kiritish qoladi. Shu maqsadda quyidagi loyiha yaratildi data2anki. U so'zlar ro'yxatini kiritish, tarjima qilish, ANKI yaratish sifatida qabul qilishi mumkin *.html maqolalar va ularni ANKI ma'lumotlar bazasiga yozib oling. Maqolaning oxirida uni qanday ishlatish bo'yicha ko'rsatmalar mavjud. Ayni paytda, ikkinchi hikoya, intervalgacha takrorlash foydali bo'lishi mumkin.

Ikkinchi hikoya.

Ko'proq/kamroq malakali mutaxassislikni qidirayotgan barcha odamlar, shu jumladan dasturchilar, suhbatga tayyorgarlik ko'rish zarurati bilan duch kelishadi. Suhbatlarda so'raladigan ko'plab tushunchalar kundalik amaliyotda ishlatilmaydi va ular unutiladi. Suhbatga tayyorgarlik ko'rayotganda, eslatmalarni, kitobni, ma'lumotnomani varaqlayotganda, men allaqachon bilgan ma'lumotlarni elakdan o'tkazish juda ko'p vaqt va e'tibor talab qilishiga duch keldim, chunki bu har doim ham aniq emas va siz buni qilishingiz kerak. nima ekanligini tushunish uchun uni diqqat bilan o'qing. Haqiqatan ham takrorlanishi kerak bo'lgan mavzuga kelganingizda, ko'pincha siz allaqachon charchagansiz va tayyorgarlik sifati yomonlashadi. Bir payt men o'yladim, nega buning uchun ANKI kartalaridan foydalanmaslik kerak? Masalan, mavzu bo'yicha eslatma olishda darhol savol-javob ko'rinishida eslatma tuzing, keyin uni takrorlaganingizda, bu savolga javobni bilasizmi yoki yo'qmi, darhol bilib olasiz.

Yagona muammo shundaki, savollarni yozish juda uzoq va zerikarli edi. Jarayonni osonlashtirish uchun, data2anki loyihaga aylantirish funksiyasini qo'shdim Markdown ANKI kartalaridagi matn. Sizga kerak bo'lgan narsa bitta katta faylni yozishdir, unda savollar va javoblar oldindan belgilangan belgilar ketma-ketligi bilan belgilanadi, bunda tahlilchi savolning qaerdaligini va javobning qaerdaligini tushunadi.

Ushbu fayl yaratilgandan so'ng siz data2anki-ni ishga tushirasiz va u ANKI kartalarini yaratadi. Asl faylni tahrirlash va almashish oson, siz faqat tegishli karta(lar) ni o'chirib, dasturni qayta ishga tushirishingiz kerak, shunda yangi versiya yaratiladi.

O'rnatish va foydalanish

  1. ANKI + AnkiConnect o'rnatilmoqda

    1. ANKI-ni bu yerdan yuklab oling: https://apps.ankiweb.net/
    2. AnkiConnect plaginini o'rnating: https://ankiweb.net/shared/info/2055492159

  2. sozlama data2anki

    1. Yuklab oling data2anki github omboridan
      git clone https://github.com/anatoly314/data2anki
    2. Bog'liqlarni o'rnating
      cd data2anki && npm install
    3. Java bog'liqliklarini yuklab oling https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Paketdan yechish jar-dependencies.zip va uning tarkibini joylashtiring data2anki/java/jars

  3. So'zlarni tarjima qilish uchun foydalaning:

    1. Fayl ichida data2anki/config.json:

      • kalitda usul qiymatini kiriting dsl2anki

      • kalitda modules.dsl.anki.deckName ΠΈ modules.dsl.anki.modelName mos ravishda yozing Pastki nomi ΠΈ Model nomi (kartalarni yaratishdan oldin allaqachon yaratilgan bo'lishi kerak). Hozirda faqat model turi qo'llab-quvvatlanadi Asosiy:

        Old va Orqa maydonlariga ega va bitta kartani yaratadi. Oldinga kiritgan matn kartaning old tomonida, Orqaga kiritgan matn esa kartaning orqa tomonida paydo bo'ladi.

        asl so'z qayerda? Old maydon, va tarjima bo'ladi Orqa maydon.

        Yordamni qo'shishda hech qanday muammo yo'q Asosiy (va teskari karta), bu erda so'z va tarjima uchun teskari karta yaratiladi, bu erda tarjima asosida siz asl so'zni eslab qolishingiz kerak bo'ladi. Sizga kerak bo'lgan yagona narsa - vaqt va xohish.

      • kalitda modules.dsl.dictionariesPath ulangan * bilan massivni ro'yxatdan o'tkazing.dsl lug'atlar. Har bir bog'langan lug'at lug'at fayllari formatga muvofiq joylashgan katalogdir: DSL lug'at tuzilishi

      • kalitda modules.dsl.wordToTranslatePath tarjima qilmoqchi bo'lgan so'zlar ro'yxatiga yo'lni kiriting.

    2. ANKI ilovasi ishlayotgan holda ishga tushiring
      node data2ankiindex.js
    3. FOYDA!!!

  4. Markdown dan kartalar yaratish uchun foydalanadi

    1. Fayl ichida data2anki/config.json:

      • kalitda usul qiymatini kiriting markdown2anki
      • kalitda modules.markdown.anki.deckName ΠΈ modules.dsl.anki.modelName mos ravishda yozing Pastki nomi ΠΈ Model nomi (kartalarni yaratishdan oldin allaqachon yaratilgan bo'lishi kerak). Uchun markdown2anki rejim faqat model turi qo'llab-quvvatlanadi Asosiy.
      • kalitda modules.markdown.selectors.startQuestionSelectors ΠΈ modules.markdown.selectors.startAnswerSelectors siz mos ravishda savol va javobning boshlanishini belgilagan selektorlarni yozasiz. Selektor bilan chiziq tahlil qilinmaydi va kartada tugamaydi, tahlil qiluvchi keyingi satrdan ishlay boshlaydi.

        Masalan, ushbu savol/javob kartasi:

        ANKI sizga chet tilini o'rganish va suhbatlarga tayyorgarlik ko'rishda qanday yordam berishi haqida ikkita hikoya

        Bu markdownda shunday ko'rinadi:
        #SAvol# ## 5-savol. Quyidagi sintaksis bilan chaqirilganda to'g'ri ishlaydigan mul funksiyasini yozing. ```javascript console.log(mul(2)(3)(4)); // chiqish: 24 console.log(mul(4)(3)(4)); // chiqish : 48 ``` #ANWER# Quyida kod va uning qanday ishlashi tushuntirishi berilgan: ```javascript funktsiyasi mul (x) { qaytarish funktsiyasi (y) { // anonim funktsiyani qaytarish funktsiyasi (z) { // anonim funktsiyani qaytarish x * y * z; }; }; } ``` Bu yerda `mul` funksiyasi birinchi argumentni qabul qiladi va ikkinchi parametrni qabul qiluvchi anonim funksiyani qaytaradi va uchinchi parametrni qabul qiluvchi anonim funksiyani qaytaradi va ketma-ket uzatilayotgan argumentlarni ko`paytirishni qaytaradi Javascriptda funksiya aniqlangan inside tashqi funktsiya o'zgaruvchisiga kirish huquqiga ega va funktsiya birinchi sinf ob'ektidir, shuning uchun u funktsiya tomonidan ham qaytarilishi va boshqa funktsiyada argument sifatida berilishi mumkin. - Funksiya Ob'ekt tipidagi namunadir - Funksiya xossalarga ega bo'lishi va uning konstruktor usuliga havolaga ega bo'lishi mumkin - Funktsiya o'zgaruvchi sifatida saqlanishi mumkin - Funktsiya boshqa funktsiyaga parametr sifatida o'tkazilishi mumkin - Funktsiya shunday bo'lishi mumkin. boshqa funksiyadan qaytdi
        

        Bu yerdan olingan misol: 123-JavaScript-Intervyu-Savollar

        Loyiha papkasida misollar bilan fayl ham mavjud examples/markdown2anki-example.md

      • kalitda modules.markdown.pathToFile
        faylga yo'lni yozing, bu erda *.md savol/javob fayli

    2. ANKI ilovasi ishlayotgan holda ishga tushiring
      node data2ankiindex.js
    3. FOYDA!!!

Bu mobil telefonda shunday ko'rinadi:

natija

ANKI ning ish stoli versiyasida olingan kartalar ANKI buluti bilan muammosiz sinxronlashtiriladi (100 mb gacha bepul) va keyin siz ularni hamma joyda ishlatishingiz mumkin. Android va iPhone uchun mijozlar mavjud va siz uni brauzerda ham ishlatishingiz mumkin. Natijada, agar sizda hech narsa sarflamaydigan vaqtingiz bo'lsa, unda Facebook yoki Instagram-da mushuklar orqali maqsadsiz aylanib o'tish o'rniga, siz yangi narsalarni o'rganishingiz mumkin.

Epilog

Men aytib o'tganimdek, bu tayyor mahsulotdan ko'ra ko'proq foydalanishingiz mumkin bo'lgan ishlaydigan POC. DSL parser standartining taxminan 30% amalga oshirilmagan, shuning uchun masalan, lug'atlardagi barcha lug'at yozuvlarini topib bo'lmaydi, uni qayta yozish fikri ham bor JavaScript, chunki men "mustahkamlik" ni xohlayman va bundan tashqari, endi u juda maqbul tarzda yozilmagan. Endi tahlilchi daraxt qurmoqda, lekin menimcha, bu keraksiz va kodni murakkablashtirishga hojat yo'q. IN markdown2anki rejimida tasvirlar tahlil qilinmaydi. Asta-sekin qisqartirishga harakat qilaman, lekin o'zim uchun yozayotganim uchun birinchi navbatda o'zim qadam qo'yadigan muammolarni hal qilaman, lekin kimdir yordam berishni xohlasa, marhamat. Agar dastur haqida savollaringiz bo'lsa, men tegishli loyihalarda ochiq masalalar orqali yordam berishdan xursand bo'laman. Boshqa tanqid va takliflarni shu yerda yozing. Umid qilamanki, bu loyiha kimgadir foydali bo'ladi.

P.S. Agar biron-bir xatolikni sezsangiz (va, afsuski, ular ham bor), menga shaxsiy xabar orqali yozing, men hammasini tuzataman.

Manba: www.habr.com

a Izoh qo'shish