Dues històries sobre com ANKI us pot ajudar a aprendre una llengua estrangera i preparar-vos per a una entrevista

Sempre he cregut que un programador gandul és un bon programador. Per què? Perquè demaneu a un treballador que faci alguna cosa, ell anirà i ho farà. I un programador gandul passarà 2-3 vegades més temps, però escriurà un guió que ho farà per ell. Pot ser que trigui molt de temps a fer-ho la primera vegada, però amb tasques repetides aquest enfocament donarà els seus fruits molt ràpidament. Em considero un programador mandrós. Aquest era el preàmbul, ara anem als negocis.

Primera història

Fa uns anys em vaig preguntar com podria millorar el meu anglès. No em va venir res millor que llegir literatura. Vaig comprar un lector electrònic, vaig descarregar llibres i vaig començar a llegir. Mentre llegia, em vaig trobar amb paraules desconegudes. De seguida els vaig traduir utilitzant els diccionaris integrats al lector, però vaig notar una característica: les paraules no volien ser recordades. Quan vaig tornar a trobar aquesta paraula unes quantes pàgines més tard, amb un 90% de probabilitat, vaig tornar a necessitar traducció, i això passava cada cop. La conclusió va ser que no n'hi havia prou amb traduir paraules desconegudes mentre llegia, cal fer una altra cosa. L'opció ideal seria introduir-lo a la vida quotidiana i començar a utilitzar-lo, però jo no visc en un país de parla anglesa i això és poc probable. Llavors vaig recordar que una vegada vaig llegir sobre Repetició espaiada.

Què és i amb què es menja? En resum, hi ha això corba d'oblit, més cita de la Viquipèdia:

Ja en la primera hora, fins a un 60% de tota la informació rebuda s'oblida; 10 hores després de la memorització, el 35% del que s'ha après roman a la memòria. Aleshores, el procés d'oblit continua lentament, i després de 6 dies al voltant del 20% del nombre total de síl·labes apreses inicialment roman a la memòria, i la mateixa quantitat queda a la memòria després d'un mes.

I la conclusió a partir d'aquí

Les conclusions que es poden extreure a partir d'aquesta corba són que per a una memorització efectiva és necessari repetir el material memoritzat.

Així que ens va ocórrer una idea repetició espaiada.

АNKI és un programa completament gratuït i de codi obert que implementa la idea de repetició espaiada. En poques paraules, les targetes flash informatitzades tenen una pregunta a un costat i una resposta a l'altre. Ja que podeu fer preguntes/respostes utilitzant regularment html/css/javascript, llavors podem dir que té possibilitats realment il·limitades. A més, és ampliable amb especial connectors, i un d'ells ens serà molt útil en el futur.

La creació manual de targetes és llarga, tediosa i amb una gran probabilitat, al cap d'un temps us oblideu d'aquesta tasca i, per tant, en algun moment em vaig preguntar si és possible automatitzar aquesta tasca. La resposta és sí, pots. I ho vaig fer. Ho diré de seguida, és més POC (Prova de concepte), però que es pot utilitzar. Si hi ha interès per part dels usuaris i altres desenvolupadors s'hi impliquen, es pot portar a un producte acabat que fins i tot els usuaris tècnicament analfabets poden utilitzar. Ara, utilitzar la meva utilitat requereix alguns coneixements de programació.

Llegeixo llibres amb el programa AIReader. Té la capacitat de connectar diccionaris externs i, quan traduïu una paraula, desa la paraula que heu cridat per traduir-la en un fitxer de text. Només queda traduir aquestes paraules i crear targetes ANKI.

Al principi vaig intentar fer servir per a la traducció traductor google, Lingvo API etc. Però les coses no van funcionar amb els serveis gratuïts. Vaig esgotar el límit lliure durant el procés de desenvolupament, a més, segons els termes de la llicència, no tenia dret a guardar paraules a la memòria cau. En algun moment em vaig adonar que havia de traduir les paraules jo mateix. Com a resultat, es va escriure un mòdul dsl2html al qual us podeu connectar Diccionaris DSL i qui sap convertir-los en HTML format.

Així es veu una entrada de diccionari a *. Html, la meva opció en comparació amb l'opció GoldenDict

Dues històries sobre com ANKI us pot ajudar a aprendre una llengua estrangera i preparar-vos per a una entrevista

Abans de buscar una paraula als diccionaris connectats, la porto a forma de diccionari (lema) utilitzant la biblioteca Stanford CoreNLP. De fet, a causa d'aquesta biblioteca, vaig començar a escriure en Java i el pla original era escriure-ho tot en Java, però en el procés vaig trobar la biblioteca. node-java amb el qual podeu executar amb relativa facilitat codi Java des de nodejs i part del codi està escrit en JavaScript. Si hagués trobat aquesta biblioteca abans, no s'hauria escrit ni una línia en Java. Un altre projecte paralel que va néixer en el procés és la creació repositori amb documentació DSL que es va trobar a la xarxa en el format *.chm, convertit i portat a la forma divina. Si l'autor del fitxer original és un usuari amb un sobrenom iòzhic Quan veu aquest article, li agraeixo molt la feina que ha fet; sense la seva documentació, molt probablement no ho hauria aconseguit.

Per tant, tinc una paraula en anglès, la seva entrada de diccionari en el format *. Html, només queda ajuntar-ho tot, crear articles ANKI a partir de la llista de paraules i introduir-los a la base de dades ANKI. Amb aquesta finalitat es va crear el següent projecte data2anki. Pot prendre una llista de paraules com a entrada, traduir, crear ANKI *. Html articles i registrar-los a la base de dades ANKI. Al final de l'article hi ha instruccions sobre com utilitzar-lo. Mentrestant, la segona història és on les repeticions espaiades poden ser útils.

La segona història.

Totes les persones que busquen una especialitat més/menys qualificada, inclosos els programadors, s'enfronten a la necessitat de preparar-se per a una entrevista. Molts dels conceptes que es demanen a les entrevistes no els utilitzes en la pràctica quotidiana i s'obliden. A l'hora de preparar una entrevista, fullejant notes, un llibre, un llibre de referència, em vaig enfrontar al fet que es necessita molt de temps i atenció per tamisar informació que ja coneixeu perquè no sempre és evident i cal llegiu-lo amb atenció per entendre què és irrellevant. Quan arribes a un tema que realment cal repetir, sovint passa que ja estàs cansat i la qualitat de la teva preparació es ressent. En algun moment vaig pensar, per què no utilitzar targetes ANKI també per a això? Per exemple, quan prengueu notes sobre un tema, creeu immediatament una nota en forma de pregunta i resposta, i després, quan la repetiu, sabreu immediatament si sabeu la resposta a aquesta pregunta o no.

L'únic problema que va sorgir va ser que escriure preguntes era molt llarg i tediós. Per facilitar el procés, data2anki projecte he afegit la funcionalitat de conversió marcat text a les targetes ANKI. Tot el que necessiteu és escriure un fitxer gran en el qual les preguntes i les respostes es marcaran amb una seqüència predeterminada de caràcters, per la qual l'analitzador entengui on és la pregunta i on és la resposta.

Un cop creat aquest fitxer, executeu data2anki i crea targetes ANKI. El fitxer original és fàcil d'editar i compartir, només cal esborrar les targetes corresponents i executar de nou el programa, i es crearà una nova versió.

Instal·lació i ús

  1. Instal·lant ANKI + AnkiConnect

    1. Descarrega ANKI des d'aquí: https://apps.ankiweb.net/
    2. Instal·leu el connector AnkiConnect: https://ankiweb.net/shared/info/2055492159

  2. Instal · lació data2anki

    1. descarregar data2anki des del repositori github
      git clone https://github.com/anatoly314/data2anki
    2. Instal·lar dependències
      cd data2anki && npm install
    3. Descarrega dependències de java https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Desembalatge jar-dependencies.zip i col·locar el seu contingut data2anki/java/jars

  3. Utilitza per traduir paraules:

    1. A l'arxiu data2anki/config.json:

      • a la clau manera introduïu el valor dsl2anki

      • a la clau modules.dsl.anki.deckName и modules.dsl.anki.modelName escriure en conseqüència Nom de la coberta и Nom del model (ja s'ha de crear abans de crear les targetes). Actualment només s'admet el tipus de model Bàsic:

        Té camps davant i darrere i crearà una targeta. El text que introduïu al davant apareixerà a la part davantera de la targeta i el text que introduïu a la part posterior apareixerà a la part posterior de la targeta.

        on és la paraula original? Camp davanter, i la traducció serà en Camp posterior.

        No hi ha cap problema per afegir suport Bàsic (i targeta invertida), on es crearà una targeta inversa per a la paraula i la traducció, on en funció de la traducció caldrà recordar la paraula original. Tot el que necessites és temps i ganes.

      • a la clau modules.dsl.dictionariesPath registrar una matriu amb connectat *.dsl diccionaris. Cada diccionari connectat és un directori en el qual es troben els fitxers del diccionari d'acord amb el format: Estructura del diccionari DSL

      • a la clau modules.dsl.wordToTranslatePath introduïu el camí a la llista de paraules que voleu traduir.

    2. Inicieu amb l'aplicació ANKI en execució
      node data2ankiindex.js
    3. BENEFICIS!!!

  4. Ús per crear targetes a partir de la reducció

    1. A l'arxiu data2anki/config.json:

      • a la clau manera introduïu el valor markdown2anki
      • a la clau modules.markdown.anki.deckName и modules.dsl.anki.modelName escriure en conseqüència Nom de la coberta и Nom del model (ja s'ha de crear abans de crear les targetes). Per markdown2anki només el mode és compatible amb el tipus de model Bàsic.
      • a la clau modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors escriviu selectors amb els quals marqueu l'inici de la pregunta i la resposta, respectivament. La línia amb el propi selector no s'analitzarà i no acabarà a la targeta; l'analitzador començarà a treballar des de la línia següent.

        Per exemple, aquesta targeta de pregunta/resposta:

        Dues històries sobre com ANKI us pot ajudar a aprendre una llengua estrangera i preparar-vos per a una entrevista

        Es veurà així a Markdown:
        #QUESTION# ## Pregunta 5. Escriu una funció mul que funcioni correctament quan s'invoqui amb la sintaxi següent. ```javascript console.log(mul(2)(3)(4)); // sortida: 24 console.log(mul(4)(3)(4)); // sortida: 48 ``` #RESPOSTA# A continuació es mostra el codi seguit de l'explicació de com funciona: ```javascript function mul (x) { return function (y) { // anonymous function return function (z) { // funció anònima retorn x * y * z; }; }; } ``` Aquí la funció `mul` accepta el primer argument i retorna la funció anònima que pren el segon paràmetre i retorna la funció anònima que pren el tercer paràmetre i retorna la multiplicació d'arguments que s'estan passant en successius A la funció Javascript definida dins té accés a la variable de funció externa i la funció és l'objecte de primera classe, de manera que també pot ser retornat per la funció i passar com a argument en una altra funció. - Una funció és una instància del tipus Objecte - Una funció pot tenir propietats i té un enllaç al seu mètode constructor - Una funció es pot emmagatzemar com a variable - Una funció es pot passar com a paràmetre a una altra funció - Una funció pot ser retornat d'una altra funció
        

        Exemple extret d'aquí: 123-JavaScript-Entrevista-Preguntes

        També hi ha un fitxer amb exemples a la carpeta del projecte examples/markdown2anki-example.md

      • a la clau modules.markdown.pathToFile
        escriu el camí al fitxer on *.md fitxer de preguntes/respostes

    2. Inicieu amb l'aplicació ANKI en execució
      node data2ankiindex.js
    3. BENEFICIS!!!

Aquest és el que sembla en un telèfon mòbil:

Resultat

Les targetes rebudes a la versió d'escriptori d'ANKI es sincronitzen sense problemes amb el núvol ANKI (gratuït fins a 100 MB), i després les podeu utilitzar a tot arreu. Hi ha clients per a Android i iPhone, i també podeu utilitzar-lo en un navegador. Com a resultat, si teniu temps en què no teniu res per gastar, en lloc de desplaçar-vos sense rumb per Facebook o gats a Instagram, podeu aprendre alguna cosa nova.

Epíleg

Com he esmentat, es tracta més d'un POC de treball que podeu utilitzar que d'un producte acabat. Al voltant del 30% de l'estàndard d'analitzador DSL no està implementat i, per tant, per exemple, no es poden trobar totes les entrades del diccionari que es troben als diccionaris, també hi ha una idea per reescriure-ho JavaScript, perquè vull “coherència”, i a més, ara no està escrit molt de manera òptima. Ara l'analitzador està construint un arbre, però al meu entendre això és innecessari i no necessita complicar el codi. EN markdown2anki mode, les imatges no s'analitzen. Intentaré retallar a poc a poc, però com que escric per mi mateix, en primer lloc solucionaré els problemes que jo mateix trepitjaré, però si algú vol ajudar, aleshores és benvingut. Si teniu preguntes sobre el programa, estaré encantada d'ajudar-vos amb els problemes oberts dels projectes rellevants. Escriu altres crítiques i suggeriments aquí. Espero que aquest projecte sigui útil a algú.

PD Si observeu algun error (i, malauradament, n'hi ha), escriu-me en un missatge personal, ho corregiré tot.

Font: www.habr.com

Afegeix comentari