Ду ҳикоя дар бораи он, ки чӣ тавр ANKI метавонад ба шумо дар омӯхтани забони хориҷӣ ва омодагӣ ба мусоҳибаҳо кӯмак кунад

Ман ҳамеша боварӣ доштам, ки барномасози танбал барномасози хуб аст. Чаро? Зеро аз коргари мехнаткаш кореро талаб кунед, рафта онро ичро мекунад. Ва як барномасози танбал 2-3 маротиба бештар вақт сарф мекунад, аммо скрипт менависад, ки ин корро барои ӯ иҷро кунад. Ин метавонад бори аввал вақти беасос тӯлониро талаб кунад, аммо ҳангоми иҷрои вазифаҳои такрорӣ ин равиш хеле зуд пардохт хоҳад кард. Ман худро барномасози танбал меҳисобам. Ин муқаддима буд, акнун биёед ба кор равем.

Ҳикояи аввал

Чанд сол пеш ман фикр мекардам, ки чӣ тавр ман метавонам забони англисии худро такмил диҳам. Ҳеҷ чиз беҳтар аз хондани адабиёт ба хотир намеомад. Ман як хонандаи электронӣ харидам, китобҳоро зеркашӣ кардам ва ба хондан шурӯъ кардам. Ҳангоми хондан ман ба калимаҳои ношинос дучор мешудам. Ман онҳоро дарҳол бо истифода аз лугатҳои дар хонанда сохташуда тарҷума кардам, аммо як хусусиятро мушоҳида кардам: калимаҳо дар хотир мондан намехостанд. Вақте ки ман пас аз чанд саҳифа боз ба ин калима дучор шудам, бо эҳтимоли 90% ба ман боз ба тарҷума ниёз пайдо шуд ва ин ҳар дафъа рӯй дод. Хулоса ин буд, ки ҳангоми хондан танҳо тарҷума кардани калимаҳои ношинос кифоя нест, шумо бояд кори дигарро анҷом диҳед. Варианти беҳтарин ин ҷорӣ кардани он ба ҳаёти ҳаррӯза ва оғози истифодаи он аст, аммо ман дар кишвари англисӣзабон зиндагӣ намекунам ва ин аз эҳтимол дур нест. Баъд ба ёдам омад, ки боре дар ин бора хонда будам Такрори фосилавӣ.

Он чӣ аст ва бо чӣ мехӯранд? Хулоса, ин вуҷуд дорад хатти фаромӯшӣ, иқтибосҳои иловагӣ аз Википедиа:

Аллакай дар як соати аввал то 60% тамоми иттилооти гирифташуда фаромӯш мешавад, 10 соат пас аз ёд кардан 35% маълумоти омӯхташуда дар хотира боқӣ мемонад. Баъд процесси фаромушкунй охиста-охиста давом мекунад ва баъди 6 руз кариб 20 фоизи микдори умумии хадхои аввал омухташуда дар хотира ва хамон микдор пас аз як мох дар хотира мемонад.

Ва хулоса аз ин ҷо

Хулосаҳое, ки дар асоси ин хатти каҷӣ бароварда мешаванд, аз он иборат аст, ки барои аз ёд кардани самарабахш такрори маводи ёдшуда зарур аст.

Ҳамин тавр, мо як идея пайдо кардем такрори фосилавӣ.

АКИ як барномаи комилан озод ва кушодаасос аст, ки идеяи такрори фосилавиро амалӣ мекунад. Оддӣ карда гӯем, флеш-картаҳои компютерӣ дар як тараф савол ва аз тарафи дигар ҷавоб доранд. Азбаски шумо метавонед саволҳо/ҷавобҳоро бо истифодаи муқаррарӣ иҷро кунед html/css/javascript, пас мо гуфта метавонем, ки вай дар хакикат имкониятхои бепоён дорад. Илова бар ин, он бо махсус васеъ карда мешавад плагинҳо, ва яке аз онхо дар оянда ба мо хеле фоиданок мешавад.

Ба таври дастӣ сохтани кортҳо тӯлонӣ, дилгиркунанда ва бо эҳтимоли зиёд аст, пас аз муддате шумо ин вазифаро фаромӯш мекунед ва аз ин рӯ, дар як лаҳза ман ба худ савол додам, ки оё ин вазифаро автоматӣ кардан мумкин аст? Ҷавоб ҳа, шумо метавонед. Ва ман ин корро кардам. Ман дарҳол мегӯям, ин бештар аст POC (Исботи консепсия), аммо ки онро истифода бурдан мумкин аст. Агар аз ҷониби корбарон таваҷҷуҳи корбарон пайдо шавад ва дигар таҳиягарон ҷалб карда шаванд, он метавонад ба маҳсулоти тайёр оварда шавад, ки ҳатто корбарони аз ҷиҳати техникӣ бесавод истифода бурда метавонанд. Ҳоло, истифодаи утилитаи ман каме дониши барномасозиро талаб мекунад.

Ман бо истифода аз барнома китоб мехонам Хонандаи AI. Он қобилияти пайваст кардани луғатҳои беруна дорад ва ҳангоми тарҷумаи калима он калимаеро, ки шумо барои тарҷума даъват кардаед, дар файли матнӣ захира мекунад. Танҳо тарҷумаи ин калимаҳо ва сохтани кортҳои ANKI боқӣ мемонад.

Дар аввал ман кӯшиш кардам, ки барои тарҷума истифода барам Гугл тарҷумон, Lingvo API ва ғайра. Аммо корҳо бо хидматҳои ройгон кор накарданд. Ман дар ҷараёни таҳия лимити ройгонро тамом кардам, илова бар ин, тибқи шартҳои иҷозатнома, ман ҳуқуқи кэш кардани калимаҳоро надоштам. Дар баъзе мавридҳо ман фаҳмидам, ки ман бояд калимаҳоро худам тарҷума кунам. Дар натиҷа, модул навишта шуд dsl2html ки шумо метавонед ба он пайваст шавед Луғатҳои DSL ва кй медонад, ки чй тавр ба онхо табдил дода шавад HTML формат.

Чунин аст вуруди луғат дар *.html, варианти ман нисбат ба вариант GoldenDict

Ду ҳикоя дар бораи он, ки чӣ тавр ANKI метавонад ба шумо дар омӯхтани забони хориҷӣ ва омодагӣ ба мусоҳибаҳо кӯмак кунад

Пеш аз ҷустуҷӯи калима дар луғатҳои алоқаманд, ман онро ба он меорам шакли луғат (лемма) бо истифода аз китобхона Стэнфорд CoreNLP. Дарвоқеъ, ба хотири ин китобхона ман ба навиштан дар Java шурӯъ кардам ва нақшаи аслӣ навиштани ҳама чиз дар Java буд, аммо дар ин раванд ман китобхонаро ёфтам. node-java ки бо он шумо метавонед нисбатан ба осонӣ рамзи Java-ро аз nodejs иҷро кунед ва баъзе рамзҳо дар JavaScript навишта шудаанд. Агар ман ин китобхонаро пештар меёфтам, дар Java ягон сатр навишта намешуд. Лоиҳаи дигари паҳлӯӣ, ки дар ин раванд ба вуҷуд омадааст, офариниш аст репозиторий бо ҳуҷҷатҳои DSL ки дар шабака дар формати * пайдо шудааст..чм, табдил дода, ба шакли илоҳӣ овардаанд. Агар муаллифи файли аслӣ корбар бо номи лақаб бошад ёзики Вақте ки ӯ ин мақоларо мебинад, ман ба ӯ барои кори анҷомдодааш ташаккур мегӯям, бе ҳуҷҷатҳои ӯ, ман эҳтимолан муваффақ намешудам.

Ҳамин тавр, ман як калима ба забони англисӣ дорам, вуруди луғати он дар формати *.html, танҳо ин аст, ки ҳама чизро якҷоя кунед, аз рӯйхати калимаҳо мақолаҳои ANKI эҷод кунед ва онҳоро ба пойгоҳи додаҳои ANKI ворид кунед. Бо ин максад лоихаи зерин тартиб дода шуд data2anki. Он метавонад рӯйхати калимаҳоро ҳамчун вуруд, тарҷума ва эҷоди ANKI -ро гирад *.html мақолаҳо ва онҳоро дар базаи ANKI сабт кунед. Дар охири мақола дастурҳо оид ба истифодаи он мавҷуданд. Дар ҳамин ҳол, ҳикояи дуюм ин аст, ки такрорҳои фосилавӣ метавонанд муфид бошанд.

Ҳикояи дуюм.

Ҳама одамоне, ки дар ҷустуҷӯи ихтисоси камтар/ками тахассус ҳастанд, аз ҷумла барномасозон, ба зарурати омодагӣ ба мусоҳиба дучор меоянд. Бисёре аз мафҳумҳое, ки дар мусоҳибаҳо пурсида мешаванд, шумо дар амалияи ҳаррӯза истифода намебаред ва онҳо фаромӯш мешаванд. Ҳангоми омодагӣ ба мусоҳиба, варақ кардани қайдҳо, китоб, маълумотнома, ман ба он дучор шудам, ки барои аз байн бурдани маълумоте, ки шумо аллакай медонед, вақти зиёд ва диққати зиёдро талаб мекунад, зеро он на ҳамеша аён аст ва шумо бояд онро бодиққат хонед, то бифаҳмед, ки он чӣ аст. Вақте ки шумо ба мавзӯъе мерасед, ки воқеан такрор кардан лозим аст, аксар вақт чунин мешавад, ки шумо аллакай хаста шудаед ва сифати омодагии шумо осеб мерасонад. Дар баъзе лаҳзаҳо ман фикр кардам, ки чаро кортҳои ANKI-ро барои ин низ истифода набаред? Масалан, дар ваќти ќайд гирифтан аз мавзўъ дарњол дар шакли саволу љавоб ёддошт созед ва баъдан ваќте такрор мекунед, дарњол мефањед, ки љавоби ин саволро медонед ё на.

Ягона мушкилоте, ки ба миён омад, ин буд, ки чоп кардани саволҳо хеле тӯлонӣ ва дилгиркунанда буд. Барои осон кардани раванд, data2anki лоиҳа Ман функсияи табдилро илова кардам тамом матн дар кортҳои ANKI. Ба шумо танҳо навиштани як файли калон лозим аст, ки дар он саволҳо ва ҷавобҳо бо пайдарпаии пешакӣ муайяншудаи аломатҳо қайд карда мешаванд, ки тавассути он таҳлилгар дар куҷо будани савол ва дар куҷо будани ҷавобро мефаҳмад.

Пас аз сохтани ин файл, шумо data2anki -ро иҷро мекунед ва он кортҳои ANKI-ро эҷод мекунад. Файли аслӣ таҳрир ва мубодила осон аст, ба шумо танҳо лозим аст, ки корт(ҳо)-и мувофиқро тоза кунед ва барномаро дубора иҷро кунед ва версияи нав эҷод мешавад.

Насб ва истифода

  1. Насб кардани ANKI + AnkiConnect

    1. ANKI-ро аз ин ҷо зеркашӣ кунед: https://apps.ankiweb.net/
    2. Васлкунаки AnkiConnect насб кунед: https://ankiweb.net/shared/info/2055492159

  2. параметр data2anki

    1. Зеркашӣ кунед data2anki аз анбори github
      git clone https://github.com/anatoly314/data2anki
    2. Вобастагӣ насб кунед
      cd data2anki && npm install
    3. Вобастагии javaро зеркашӣ кунед https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Кушодан jar-dependencies.zip ва мундариҷаи онро дар data2anki/java/jars

  3. Барои тарҷумаи калимаҳо истифода баред:

    1. Дар файл data2anki/config.json:

      • дар калид ҳолати арзишро ворид кунед dsl2anki

      • дар калид modules.dsl.anki.deckName и modules.dsl.anki.modelName мувофиқи он нависед Номи Дек и Номи намунавии (бояд аллакай пеш аз сохтани кортҳо сохта шавад). Дар айни замон танҳо намуди модел дастгирӣ карда мешавад асосӣ:

        Майдонҳои Пеш ва Қафо дорад ва як корт эҷод мекунад. Матне, ки шумо ба пеш ворид мекунед, дар пеши корт пайдо мешавад ва матне, ки шумо ба қафо ворид мекунед, дар қафои корт пайдо мешавад.

        калимаи аслӣ куҷост? Майдони пеши, ва тарҷума дар он хоҳад буд Майдони қафо.

        Барои илова кардани дастгирӣ мушкилот вуҷуд надорад асосӣ (ва корти баръакс), ки дар он корти баръакс барои калима ва тарҷума сохта мешавад, ки дар асоси тарҷума шумо бояд калимаи аслиро дар хотир нигоҳ доред. Ба шумо танҳо вақт ва хоҳиш лозим аст.

      • дар калид modules.dsl.dictionariesPath массивро бо пайваст * сабт кунед.dsl луғатҳо. Ҳар як луғати пайвастшуда феҳристест, ки дар он файлҳои луғат мувофиқи формат ҷойгир шудаанд: Сохтори луғати DSL

      • дар калид modules.dsl.wordToTranslatePath роҳро ба рӯйхати калимаҳое, ки тарҷума кардан мехоҳед, ворид кунед.

    2. Бо иҷрокунандаи барномаи ANKI оғоз кунед
      node data2ankiindex.js
    3. ФОИДА!!!

  4. Барои сохтани кортҳо аз markdown истифода мебарад

    1. Дар файл data2anki/config.json:

      • дар калид ҳолати арзишро ворид кунед markdown2anki
      • дар калид modules.markdown.anki.deckName и modules.dsl.anki.modelName мувофиқи он нависед Номи Дек и Номи намунавии (бояд аллакай пеш аз сохтани кортҳо сохта шавад). Барои markdown2anki ҳолати танҳо намуди модел дастгирӣ карда мешавад асосӣ.
      • дар калид modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors шумо интихобкунандагон менависед, ки бо онҳо ибтидои савол ва ҷавобро қайд мекунед. Сатр бо худи селектор таҳлил карда намешавад ва дар корт хотима намеёбад, таҳлилгар аз сатри оянда ба кор шурӯъ мекунад.

        Масалан, ин корти савол/ҷавоб:

        Ду ҳикоя дар бораи он, ки чӣ тавр ANKI метавонад ба шумо дар омӯхтани забони хориҷӣ ва омодагӣ ба мусоҳибаҳо кӯмак кунад

        Он дар қайдкунӣ чунин хоҳад буд:
        #САВОЛ#
        ## Саволи 5. Функсияи mul нависед, ки ҳангоми даъват бо синтаксиси зерин дуруст кор мекунад.
        
        ```javascript
        console.log(mul(2)(3)(4)); // баромад: 24
        console.log(mul(4)(3)(4)); // баромад: 48
        ```
        #ҶАВОБ#
        Дар зер код аст, ки пас аз он шарҳи он ки чӣ тавр кор мекунад:
        
        ```javascript
        функсияи mul(x) {
          функсияи бозгашт (y) { // функсияи номаълум
            Функсияи бозгашт (z) { // функсияи номаълум
              баргардонидани x * y * z;
            };
          };
        }
        ```
        
        Дар ин ҷо функсияи `mul` далели аввалро қабул мекунад ва функсияи беномро бармегардонад, ки параметри дуюмро мегирад ва функсияи беномро бар мегардонад, ки параметри сеюмро мегирад ва зарби аргументҳои пай дар пай интиқолшавандаро бармегардонад.
        
        Дар Javascript функсияи дар дохили он муайяншуда ба тағирёбандаи функсияи берунӣ дастрасӣ дорад ва функсия объекти синфи якум аст, бинобар ин, он метавонад аз ҷониби функсия баргардонида шавад ва ҳамчун аргумент дар функсияи дигар интиқол дода шавад.
        - Функсия як мисоли навъи Объект аст
        - Функсия метавонад хосият дошта бошад ва ба усули созандаи худ пайванд дорад
        - Функсияро метавон ҳамчун тағирёбанда нигоҳ дошт
        - Функсия метавонад ҳамчун параметр ба функсияи дигар гузарад
        - Функсияро аз дигар функсия баргардонидан мумкин аст
        

        Намуна аз ин ҷо гирифта шудааст: 123-JavaScript-Мусоҳиба-Саволҳо

        Дар папкаи лоиҳа инчунин як файл бо мисолҳо мавҷуд аст examples/markdown2anki-example.md

      • дар калид modules.markdown.pathToFile
        роҳро ба файл нависед, ки дар он *.md файли савол/ҷавоб

    2. Бо иҷрокунандаи барномаи ANKI оғоз кунед
      node data2ankiindex.js
    3. ФОИДА!!!

Ин аст он чизе ки дар телефони мобилӣ ба назар мерасад:

Дар натиҷа

Кортҳои дар версияи мизи кории ANKI гирифташуда бе мушкилот бо абри ANKI (то 100 mb ройгон) ҳамоҳанг карда мешаванд ва пас шумо метавонед онҳоро дар ҳама ҷо истифода баред. Мизоҷон барои Android ва iPhone мавҷуданд ва шумо инчунин метавонед онро дар браузер истифода баред. Дар натиҷа, агар шумо вақт дошта бошед, ки барои сарф кардани он чизе надоред, пас ба ҷои он ки дар Facebook ё гурбаҳо дар Instagram ҳаракат кунед, шумо метавонед чизи навро омӯзед.

Эпилогонӣ

Тавре ки ман зикр кардам, ин як POC коркунанда аст, ки шумо метавонед аз маҳсулоти тайёр истифода баред. Тақрибан 30% стандарти таҳлилгари DSL амалӣ карда нашудааст ва аз ин рӯ, масалан, на ҳама воҳидҳои луғатро, ки дар луғатҳо ҳастанд, ёфтан мумкин нест, инчунин идеяи аз нав навиштани он вуҷуд дорад JavaScript, зеро ман мехоҳам "мувофиқӣ" ва ғайр аз ин, ҳоло он хеле оптималӣ навишта нашудааст. Ҳоло таҳлилгар дарахт месозад, аммо ба назари ман, ин нодаркор аст ва барои мураккаб кардани код лозим нест. ДАР markdown2anki режим, тасвирҳо таҳлил карда намешаванд. Кӯшиш мекунам, ки оҳиста-оҳиста буриш кунам, аммо чун барои худам менависам, пеш аз ҳама мушкилотҳоеро ҳал мекунам, ки худам қадам мезанам, аммо касе кумак кардан мехоҳад, хуш омадед. Агар шумо дар бораи барнома савол дошта бошед, ман бо омодагӣ ба масъалаҳои кушода дар лоиҳаҳои дахлдор кӯмак мекунам. Интиқод ва пешниҳодҳои дигарро дар инҷо нависед. Ман умедворам, ки ин лоиҳа барои касе муфид хоҳад буд.

P.S. Агар шумо ягон хатогиро мушоҳида кунед (ва, мутаассифона, баъзеҳо ҳастанд), дар паёми шахсӣ ба ман нависед, ман ҳама чизро ислоҳ мекунам.

Манбаъ: will.com

Илова Эзоҳ