ANKI-nin sizə xarici dil öyrənməyə və müsahibəyə hazırlaşmağa necə kömək edə biləcəyi haqqında iki hekayə

Mən həmişə tənbəl proqramçının yaxşı proqramçı olduğuna inanırdım. Niyə? Çünki zəhmətkeşdən nəyisə tələb et, gedib onu edəcək. Və tənbəl bir proqramçı 2-3 dəfə çox vaxt sərf edəcək, lakin onun üçün bunu edəcək bir ssenari yazacaq. Bunu ilk dəfə etmək əsassız olaraq uzun müddət çəkə bilər, lakin təkrar tapşırıqlarla bu yanaşma çox tez nəticə verəcəkdir. Mən özümü tənbəl proqramçı hesab edirəm. Bu, preambula idi, indi işə keçək.

Birinci hekayə

Bir neçə il əvvəl mən ingilis dilimi necə təkmilləşdirə biləcəyimi düşünürdüm. Ədəbiyyat oxumaqdan yaxşı heç nə ağlıma gəlmədi. Elektron oxucu aldım, kitablar yüklədim və oxumağa başladım. Oxuyanda tanımadığım sözlərlə rastlaşırdım. Mən onları dərhal oxucuya daxil edilmiş lüğətlərdən istifadə edərək tərcümə etdim, lakin bir xüsusiyyəti qeyd etdim: sözlər yadda qalmaq istəmədi. Bir neçə səhifədən sonra bu sözə yenidən rast gələndə 90% ehtimalla yenidən tərcüməyə ehtiyacım oldu, vəssalam. Nəticə belə oldu ki, oxuyarkən tanış olmayan sözləri sadəcə tərcümə etmək kifayət deyil, başqa bir şey etmək lazımdır. İdeal seçim onu ​​gündəlik həyata tanıtmaq və istifadə etməyə başlamaq olardı, amma mən ingilisdilli ölkədə yaşamıram və bu mümkün deyil. Sonra bir dəfə oxuduğum yadıma düşdü Aralıq təkrarlama.

Bu nədir və nə ilə yeyilir? Bir sözlə, bu var unutma əyrisi, Vikipediyadan əlavə sitat:

Artıq ilk bir saat ərzində alınan bütün məlumatların 60%-ə qədəri unudulur, yadda saxladıqdan 10 saat sonra öyrənilənlərin 35%-i yaddaşda qalır. Sonra unutma prosesi yavaş-yavaş gedir və 6 gündən sonra ilkin öyrənilən hecaların ümumi sayının təxminən 20%-i yaddaşda, bir aydan sonra isə eyni miqdar yaddaşda qalır.

Və buradan nəticə

Bu əyri əsasında çıxarıla bilən nəticələr ondan ibarətdir ki, effektiv yadda saxlamaq üçün yadda saxlanan materialı təkrarlamaq lazımdır.

Beləliklə, bir fikir əldə etdik aralı təkrar.

ANKI aralıqlı təkrarlama ideyasını həyata keçirən tamamilə pulsuz və açıq mənbə proqramıdır. Sadə dillə desək, kompüterləşdirilmiş fleş kartların bir tərəfində sual, digər tərəfində isə cavab var. Siz müntəzəm istifadə edərək sual/cavab edə bildiyiniz üçün html/css/javascript, onda onun həqiqətən sonsuz imkanlara malik olduğunu deyə bilərik. Bundan əlavə, xüsusi ilə genişləndirilə bilər plaginlər, və onlardan biri gələcəkdə bizim üçün çox faydalı olacaq.

Kartları əl ilə yaratmaq uzun, yorucu və yüksək ehtimalla, bir müddət sonra bu tapşırığı unudacaqsınız və buna görə də nə vaxtsa özümə sual verdim ki, bu işi avtomatlaşdırmaq olarmı? Cavab bəli, edə bilərsiniz. Mən bunu etdim. Dərhal deyəcəyəm, daha çoxdur POC (Konseptin sübutu), lakin hansı istifadə edilə bilər. İstifadəçilər tərəfindən maraq yaranarsa və digər tərtibatçılar işə cəlb olunarsa, o, hətta texniki cəhətdən savadsız istifadəçilərin də istifadə edə biləcəyi hazır məhsula gətirilə bilər. İndi mənim yardım proqramımdan istifadə etmək bəzi proqramlaşdırma biliklərini tələb edir.

Proqramdan istifadə edərək kitablar oxuyuram AI Reader. O, xarici lüğətləri birləşdirmək qabiliyyətinə malikdir və siz sözü tərcümə edərkən tərcümə üçün çağırdığınız sözü mətn faylına saxlayır. Yalnız bu sözləri tərcümə etmək və ANKI kartlarını yaratmaq qalır.

Əvvəlcə tərcümə üçün istifadə etməyə çalışdım Google Translate, Lingvo API və s. Ancaq pulsuz xidmətlərlə hər şey nəticə vermədi. Mən inkişaf prosesi zamanı pulsuz limiti tükətdim, əlavə olaraq, lisenziyanın şərtlərinə görə sözləri keş etmək hüququm yox idi. Nə vaxtsa başa düşdüm ki, sözləri özüm tərcümə etməliyəm. Nəticədə bir modul yazılmışdır dsl2html qoşula biləcəyiniz DSL lüğətləri və kim onları necə çevirəcəyini bilir HTML format.

*-da lüğət girişi belə görünür. Html, mənim variantım variantla müqayisədə GoldenDict

ANKI-nin sizə xarici dil öyrənməyə və müsahibəyə hazırlaşmağa necə kömək edə biləcəyi haqqında iki hekayə

Əlaqədar lüğətlərdə söz axtarmazdan əvvəl onu gətirirəm lüğət forması (lemma) kitabxanadan istifadə etməklə Stanford CoreNLP. Əslində, bu kitabxanaya görə mən Java-da yazmağa başladım və ilk planım hər şeyi Java-da yazmaq idi, lakin prosesdə kitabxananı tapdım. node-java Bununla siz nisbətən asanlıqla nodejs-dən Java kodunu icra edə bilərsiniz və kodun bir hissəsi JavaScript-də yazılmışdır. Bu kitabxananı əvvəllər tapsaydım, Java-da bir sətir belə yazılmayacaqdı. Prosesdə yaranan digər yan layihə isə yaradılışdır DSL sənədləri ilə depo şəbəkədə * formatında tapılan.chm, çevrilmiş və ilahi surətə gətirilmişdir. Orijinal faylın müəllifi ləqəbli istifadəçidirsə yozhic Bu yazını görəndə ona gördüyü işlərə görə çox təşəkkür edirəm, onun sənədləri olmasaydı, çox güman ki, uğur qazana bilməzdim.

Beləliklə, mənim ingilis dilində bir sözüm var, onun lüğət girişi * formatında. Html, qalan hər şeyi bir yerə yığmaq, sözlər siyahısından ANKI məqalələri yaratmaq və onları ANKI məlumat bazasına daxil etməkdir. Bu məqsədlə aşağıdakı layihə yaradılmışdır data2anki. Sözlərin siyahısını daxil edə, tərcümə edə, ANKI yarada bilər *. Html məqalələr və onları ANKI məlumat bazasında qeyd edin. Məqalənin sonunda onu necə istifadə etmək barədə təlimat var. Bu arada ikinci hekayə, aralıqlı təkrarların faydalı ola biləcəyi yerdir.

İkinci hekayə.

Daha çox/az ixtisaslı ixtisas axtarışında olan bütün insanlar, o cümlədən proqramçılar, müsahibəyə hazırlaşmaq ehtiyacı ilə üzləşirlər. Müsahibələrdə soruşulan bir çox anlayışlar gündəlik praktikada istifadə etmirsiniz və unudulur. Müsahibəyə hazırlaşarkən, qeydləri, kitabı, arayış kitabını vərəqləyərkən belə bir faktla qarşılaşdım ki, artıq bildiyiniz məlumatları silmək çox vaxt və diqqət tələb edir, çünki həmişə açıq-aydın görünmür və bunu etmək məcburiyyətindəsiniz. nə olduğunu anlamaq üçün diqqətlə oxuyun. Həqiqətən təkrarlanması lazım olan bir mövzuya gəldikdə, çox vaxt olur ki, siz artıq yorulmusunuz və hazırlığın keyfiyyəti pisləşir. Bir anda düşündüm ki, niyə bunun üçün də ANKI kartlarından istifadə etməyək? Məsələn, mövzu ilə bağlı qeydlər apararkən dərhal sual-cavab şəklində qeyd yaradın, sonra onu təkrarlayanda bu sualın cavabını bildiyinizi bildiyinizi dərhal biləcəksiniz.

Ortaya çıxan yeganə problem sualları yazmağın çox uzun və yorucu olması idi. Prosesi asanlaşdırmaq üçün, data2anki layihəyə çevirmə funksiyasını əlavə etdim Markdown ANKI kartlarında mətn. Sizə lazım olan tək bir böyük fayl yazmaqdır ki, orada suallar və cavablar əvvəlcədən müəyyən edilmiş simvol ardıcıllığı ilə işarələnəcək, bunun vasitəsilə təhlilçi sualın harada olduğunu və cavabın harada olduğunu başa düşəcək.

Bu fayl yaradıldıqdan sonra siz data2anki-ni işə salırsınız və o, ANKI kartları yaradır. Orijinal faylı redaktə etmək və paylaşmaq asandır, sadəcə müvafiq kartı(ları) silmək və proqramı yenidən işə salmaq lazımdır və yeni versiya yaradılacaq.

Quraşdırma və istifadə

  1. ANKI + AnkiConnect quraşdırılması

    1. ANKI-ni buradan yükləyin: https://apps.ankiweb.net/
    2. AnkiConnect plaginini quraşdırın: https://ankiweb.net/shared/info/2055492159

  2. Quraşdırma data2anki

    1. Yüklə data2anki github deposundan
      git clone https://github.com/anatoly314/data2anki
    2. Asılılıqları quraşdırın
      cd data2anki && npm install
    3. Java asılılıqlarını yükləyin https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Qablaşdırma jar-dependencies.zip və içindəkiləri yerləşdirin data2anki/java/jars

  3. Sözləri tərcümə etmək üçün istifadə edin:

    1. Faylda data2anki/config.json:

      • açarda rejimində dəyəri daxil edin dsl2anki

      • açarda modules.dsl.anki.deckName и modules.dsl.anki.modelName uyğun yazın Göyərtənin adı и Model adı (kartlar yaratmazdan əvvəl artıq yaradılmalıdır). Hazırda yalnız model növü dəstəklənir Əsas:

        Ön və Arxa sahələri var və bir kart yaradacaq. Önə daxil etdiyiniz mətn kartın ön hissəsində, Arxaya daxil etdiyiniz mətn isə kartın arxasında görünəcək.

        orijinal söz haradadır? Ön sahə, və tərcümə olacaq Arxa sahə.

        Dəstək əlavə etmək üçün heç bir problem yoxdur Əsas (və tərs kart), burada söz və tərcümə üçün əks kart yaradılacaq, burada tərcümə əsasında orijinal sözü yadda saxlamalısınız. Sizə lazım olan tək şey vaxt və arzudur.

      • açarda modules.dsl.dictionariesPath * ilə bir sıra qeyd edin.dsl lüğətlər. Hər bir əlaqəli lüğət lüğət fayllarının formata uyğun yerləşdiyi bir kataloqdur: DSL lüğət strukturu

      • açarda modules.dsl.wordToTranslatePath tərcümə etmək istədiyiniz sözlərin siyahısına gedən yolu daxil edin.

    2. ANKI tətbiqi ilə işə salın
      node data2ankiindex.js
    3. MƏNFƏR!!!

  4. Markdown-dan kartlar yaratmaq üçün istifadə edir

    1. Faylda data2anki/config.json:

      • açarda rejimində dəyəri daxil edin markdown2anki
      • açarda modules.markdown.anki.deckName и modules.dsl.anki.modelName uyğun yazın Göyərtənin adı и Model adı (kartlar yaratmazdan əvvəl artıq yaradılmalıdır). üçün markdown2anki rejim yalnız model növü dəstəklənir Əsas.
      • açarda modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors siz müvafiq olaraq sualın və cavabın başlanğıcını qeyd etdiyiniz seçiciləri yazırsınız. Selektorun özü olan sətir təhlil edilməyəcək və kartda bitməyəcək, təhlilçi növbəti sətirdən işə başlayacaq.

        Məsələn, bu sual/cavab kartı:

        ANKI-nin sizə xarici dil öyrənməyə və müsahibəyə hazırlaşmağa necə kömək edə biləcəyi haqqında iki hekayə

        Markdown-da belə görünəcək:
        #SUAL# ## Sual 5. Aşağıdakı sintaksislə çağırıldıqda düzgün işləyəcək mul funksiyasını yazın. ```javascript console.log(mul(2)(3)(4)); // çıxış : 24 console.log(mul(4)(3)(4)); // çıxış : 48 ``` #CAVAB# Aşağıda kod və onun necə işlədiyi izah edilir: ```javascript funksiyası mul (x) { qaytarma funksiyası (y) { // anonim funksiya qaytarma funksiyası (z) { // anonim funksiya qaytarılması x * y * z; }; }; } ``` Burada `mul` funksiyası birinci arqumenti qəbul edir və ikinci parametri götürən anonim funksiyanı qaytarır və üçüncü parametri götürən anonim funksiyanı qaytarır və ardıcıl olaraq ötürülən arqumentlərin çoxalmasını qaytarır Javascript funksiyasında müəyyən edilmiş daxilində xarici funksiya dəyişəninə çıxışı var və funksiya birinci sinif obyektdir, ona görə də funksiya tərəfindən qaytarıla və başqa funksiyada arqument kimi ötürülə bilər. - Funksiya Obyekt tipli bir nümunədir - Funksiya xassələrə malik ola bilər və onun konstruktor metodu ilə əlaqəsi ola bilər - Funksiya dəyişən kimi saxlanıla bilər - Funksiya digər funksiyaya parametr kimi ötürülə bilər - Funksiya ola bilər başqa funksiyadan qayıtdı
        

        Buradan götürülmüş nümunə: 123-JavaScript-Müsahibə Sualları

        Layihə qovluğunda nümunələri olan bir fayl da var examples/markdown2anki-example.md

      • açarda modules.markdown.pathToFile
        faylın yolunu yazın, burada *.md sual/cavab faylı

    2. ANKI tətbiqi ilə işə salın
      node data2ankiindex.js
    3. MƏNFƏR!!!

Mobil telefonda belə görünür:

Nəticə

ANKI-nin masaüstü versiyasında alınan kartlar ANKI bulud ilə problemsiz sinxronlaşdırılır (100 mb-a qədər pulsuzdur) və sonra siz onları hər yerdə istifadə edə bilərsiniz. Android və iPhone üçün müştərilər var və siz onu brauzerdə də istifadə edə bilərsiniz. Nəticədə, sərf etməyə heç bir şeyiniz olmayan vaxtınız varsa, o zaman Facebook və ya Instagram-da məqsədsiz şəkildə gəzmək əvəzinə yeni bir şey öyrənə bilərsiniz.

Epiloq

Qeyd etdiyim kimi, bu, hazır məhsuldan daha çox istifadə edə biləcəyiniz işləyən POC-dur. DSL təhlili standartının təxminən 30%-i tətbiq edilməyib və buna görə də, məsələn, lüğətlərdə olan bütün lüğət girişlərini tapmaq mümkün deyil, onu yenidən yazmaq fikri də var JavaScript, çünki mən “ardıcıllıq” istəyirəm və üstəlik, indi çox optimal şəkildə yazılmayıb. İndi parser ağac qurur, amma mənim fikrimcə bu lazımsızdır və kodu çətinləşdirməyə ehtiyac yoxdur. IN markdown2anki rejimində şəkillər təhlil edilmir. Çalışacağam ki, az-az kəsim, amma özüm üçün yazdığım üçün ilk növbədə öz adıma atacağım problemləri həll edəcəm, amma kimsə kömək etmək istəyirsə, buyurun. Proqramla bağlı suallarınız varsa, müvafiq layihələrdə açıq məsələlər vasitəsilə kömək etməkdən məmnun olaram. Digər tənqid və təkliflərinizi burada yazın. Ümid edirəm ki, bu layihə kiməsə faydalı olacaq.

PS Hər hansı bir səhv görsəniz (və təəssüf ki, bəziləri var), mənə şəxsi mesajda yazın, mən hər şeyi düzəldəcəm.

Mənbə: www.habr.com

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