Twee verhalen over hoe ANKI je kan helpen een vreemde taal te leren en je voor te bereiden op een sollicitatiegesprek

Ik heb altijd geloofd dat een luie programmeur een goede programmeur is. Waarom? Omdat als je een hardwerkende vraagt iets te doen, hij het gewoon doet. Maar een luie programmeur zal 2-3 keer zoveel tijd besteden, maar hij zal een script schrijven dat dat voor hem doet. Misschien kost het de eerste keer onterecht veel tijd, maar bij herhalende taken betaalt deze aanpak zich snel terug. Ik beschouw mezelf als een luie programmeur. Dat was de inleiding, laten we nu overgaan tot de zaak.

Verhaal ƩƩn

Enkele jaren geleden vroeg ik me af hoe ik mijn Engels kon verbeteren. Niets beter dan literatuur lezen kwam in me op. Ik kocht een e-reader, laadde boeken erop en begon te lezen. Tijdens het lezen kwam ik constant onbekende woorden tegen. Ik vertaalde ze onmiddellijk met de ingebouwde woordenboeken van de e-reader, maar ik merkte een bijzonderheid op: de woorden wilden niet blijven hangen. Wanneer ik enkele pagina's later hetzelfde woord weer tegenkwam, had ik met 90% kans weer hulp nodig bij de vertaling, en zo elke keer. Hieruit concludeerde ik dat het niet voldoende is om onbekende woorden te vertalen tijdens het lezen, maar dat je iets anders moet doen. De ideale optie zou zijn om het in het dagelijks leven in te voeren en het te gaan gebruiken, maar ik woon niet in een Engelstalig land en dat is moeilijk te realiseren. Toen herinnerde ik me dat ik ooit had gelezen over Intervallende herhaling.

Wat is het en hoe werkt het? Kort gezegd, er is zoiets als de vergeetcurve, vervolgens een citaat uit Wikipedia:

Al binnen het eerste uur wordt 60% van alle ontvangen informatie vergeten, na 10 uur na het leren blijft 35% van wat geleerd is in het geheugen. Daaropvolgend verloopt het vergeten langzaam, en na 6 dagen blijft ongeveer 20% van het oorspronkelijke aantal uit het hoofd geleerde lettergrepen in het geheugen hangen, net zoveel blijft in het geheugen na een maand.

En de conclusie hieruit

De conclusies die we kunnen trekken op basis van deze curve zijn dat voor effectief onthouden herhaling van het geleerde materiaal noodzakelijk is.

En zo kwamen we tot het idee van intervallende herhaling.

ANIKI dit is een volledig gratis open source programma dat het idee van herhaald leren implementeert. Simpel gezegd, computerflashcards, met aan de ene kant een vraag en aan de andere kant een antwoord. Omdat je vragen/antwoorden kunt maken met behulp van gewone html/css/javascript, kan men zeggen dat het werkelijk onbeperkte mogelijkheden heeft. Bovendien is het uitbreidbaar met speciale plug-ins, en ƩƩn daarvan komt ons later heel goed van pas.

Handmatig kaarten maken is tijdrovend, vervelend, en met een grote kans dat je er na verloop van tijd mee stopt, dus op een gegeven moment stelde ik mezelf de vraag of het mogelijk was om dit te automatiseren. Het antwoord is ja, dat kan. En dat heb ik gedaan. Ik moet meteen zeggen, dit is meer POC (Proof of concept), maar het is bruikbaar. Als er interesse is van gebruikers en andere ontwikkelaars zich aansluiten, kan het worden doorontwikkeld tot een volwaardig product dat zelfs voor technisch onvaardige gebruikers toegankelijk is. Voor nu vereist het gebruik van mijn tool echter enige kennis van programmeren.

Ik lees boeken met behulp van het programma AIReader. Het heeft de mogelijkheid om externe woordenboeken aan te sluiten, en wanneer je een woord vertaalt, slaat het het woord dat je hebt vertaald op in een tekstbestand. Nu is het alleen nog nodig om deze woorden te vertalen en ANKI kaarten te maken.

In het begin probeerde ik om de vertaling te doen met Google Translate, Lingvo API enz. Maar met gratis services ging het niet goed. Ik had de gratis limiet al bereikt tijdens het ontwikkelproces, bovendien mocht ik op basis van de licentievoorwaarden de woorden niet cachen. Op een gegeven moment realiseerde ik me dat ik de woorden zelf moest vertalen. Uiteindelijk is er een module geschreven, dsl2html waaraan je DSL-woordenboeken kunt koppelen en die kan ze converteren naar HTML het formaat.

Zo ziet een woordenboekitem eruit in *.html, mijn variant in vergelijking met de variant GoldenDict

Twee verhalen over hoe ANKI je kan helpen een vreemde taal te leren en je voor te bereiden op een sollicitatiegesprek

Voor ik een woord in de aangesloten woordenboeken zoek, breng ik het naar de woordenboekvorm (lemma) met behulp van de bibliotheek Stanford CoreNLP. Eigenlijk ben ik dankzij deze bibliotheek begonnen met programmeren in Java en het oorspronkelijke plan was om alles in Java te schrijven, maar in het proces vond ik de bibliotheek node-java waarmee je relatief eenvoudig Java-code kunt uitvoeren vanuit Node.js en een deel van de code is geschreven in JavaScript. Als ik deze bibliotheek eerder had gevonden, zou er geen regel in Java zijn geschreven. Nog een nevenproject dat is ontstaan tijdens dit proces is het creƫren van een repository met DSL-documentatie die online werd gevonden in het format *.chm, geconverteerd en in een leesbare vorm gebracht. Als de auteur van het originele bestand, gebruiker met de nickname yozhic deze artikel ziet, dan veel dank voor het geleverde werk, zonder zijn documentatie zou het me waarschijnlijk niet gelukt zijn.

Dus, ik heb een woord in het Engels, de woordenlijst in het format *.html, het is tijd om alles samen te voegen, ANKI-artikelen te maken uit de lijst met woorden en deze in de ANKI-database in te voeren. Voor dit doel is het volgende project gemaakt data2anki. Dit kan een lijst met woorden inlezen, vertalen, ANKI *.html artikelen maken en deze opslaan in de ANKI-database. Aan het einde van het artikel staat een instructie over hoe je het kunt gebruiken. Voor nu echter het tweede verhaal waar intervallen herhalingen nuttig kunnen zijn.

Het tweede verhaal.

Alle mensen op zoek naar een meer of minder gekwalificeerde specialisatie, inclusief programmeurs, komen de noodzaak tegen om zich voor te bereiden op een interview. Veel concepten die tijdens interviews gevraagd worden, gebruik je niet in je dagelijks leven en ze worden vergeten. Tijdens de voorbereiding op een interview, terwijl ik mijn samenvattingen, boeken en naslagwerken doorbladerde, merkte ik dat het veel tijd en aandacht kost om de informatie die je al weet uit te filteren, omdat deze niet altijd voor de hand liggend is, en je moet erdoorheen lezen om te begrijpen dat het niet relevant is. Wanneer je dan een onderwerp tegenkomt dat je echt moet herhalen, is het vaak zo dat je al moe bent en de kwaliteit van de voorbereiding lijdt eronder. Op een gegeven moment dacht ik, waarom zouden we geen ANKI-kaarten hiervoor gebruiken? Bijvoorbeeld, bij het samenvatten van een bepaald onderwerp, direct de samenvatting in de vorm van vraag — antwoord maken, en bij het herhalen weet je meteen of je het antwoord op deze vraag weet of niet.

Het probleem ontstond alleen in het feit dat het erg lang en saai is om vragen in te voeren. Om het proces te vergemakkelijken, heb ik in data2anki het project functionaliteit toegevoegd om markdown te converteren tekst in ANKI-kaarten. Alles wat u hoeft te doen, is ƩƩn groot bestand te schrijven waarin vragen en antwoorden vooraf zijn gemarkeerd met een afgesproken reeks symbolen, zodat de parser kan begrijpen waar de vraag is en waar het antwoord is.

Zodra dit bestand is gemaakt, start u data2anki en maakt het ANKI-kaarten. Het originele bestand is gemakkelijk te bewerken en te delen; u hoeft alleen de relevante kaart(en) te verwijderen en het programma opnieuw te starten, en de nieuwe versie zal worden gemaakt.

Installatie en gebruik

  1. Installatie ANKI + AnkiConnect

    1. Download ANKI hier: https://apps.ankiweb.net/
    2. Installeer de AnkiConnect-plugin: https://ankiweb.net/shared/info/2055492159

  2. Installatie data2anki

    1. Download data2anki uit de github-repository
      git clone https://github.com/anatoly314/data2anki
    2. Installeer de afhankelijkheden
      cd data2anki && npm install
    3. Download de java-afhankelijkheden https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Pak uit jar-dependencies.zip en plaats de inhoud in data2anki/java/jars

  3. Gebruik voor het vertalen van woorden:

    1. In het bestand data2anki/config.json:

      • in de sleutel modus geef de waarde op dsl2anki

      • in de sleutel modules.dsl.anki.deckName en modules.dsl.anki.modelName geef, respectievelijk, op Deck Name en Model Name (deze moeten al zijn gemaakt voordat de kaarten worden aangemaakt). Momenteel wordt alleen het modeltype ondersteund Basic:

        Heeft Voor- en Achtervelden, en maakt ƩƩn kaart aan. De tekst die u invoert in Voor verschijnt aan de voorkant van de kaart, en de tekst die u invoert in Achter verschijnt aan de achterkant van de kaart.

        waar het oorspronkelijke woord is Front field, en de vertaling komt in Back field.

        Er is geen probleem om ondersteuning toe te voegen voor Basic (en omgekeerde kaart), waar er een omgekeerde kaart voor het woord en de vertaling zal worden aangemaakt, waarbij je op basis van de vertaling het oorspronkelijke woord moet herinneren. Je hebt alleen tijd en zin nodig.

      • in de sleutel modules.dsl.dictionariesPath geef een array op met de aangesloten *.dsl woordenboeken. Elk aangesloten woordenboek is een map waarin de woordenboekenbestanden volgens het formaat zijn: Structuur van het DSL-woordenboek

      • in de sleutel modules.dsl.wordToTranslatePath geef het pad op naar de lijst met woorden die u wilt vertalen.

    2. Start met de werkende ANKI-applicatie
      node data2ankiindex.js
    3. WINST!!!

  4. Gebruik voor het maken van kaarten uit markdown

    1. In het bestand data2anki/config.json:

      • in de sleutel modus geef de waarde op markdown2anki
      • in de sleutel modules.markdown.anki.deckName en modules.dsl.anki.modelName geef, respectievelijk, op Deck Name en Model Name (deze moeten al zijn gemaakt voordat de kaarten worden aangemaakt). Voor markdown2anki mode wordt alleen het modeltype ondersteund Basic.
      • in de sleutel modules.markdown.selectors.startQuestionSelectors en modules.markdown.selectors.startAnswerSelectors geef de selectors op waarmee u respectievelijk het begin van de vraag en het antwoord markeert. De regel met de selector zal niet worden geparsed en zal niet in de kaart komen, de parser begint met de volgende regel.

        Bijvoorbeeld, deze vraag/antwoordkaart:

        Twee verhalen over hoe ANKI je kan helpen een vreemde taal te leren en je voor te bereiden op een sollicitatiegesprek

        Zal er in markdown als volgt uitzien:
        #QUESTION#
        ## Question 5. Write a mul function which will work properly when invoked with following syntax.
        
        ```javascript
        console.log(mul(2)(3)(4)); // output : 24
        console.log(mul(4)(3)(4)); // output : 48
        ```
        #ANSWER#
        Below is the code followed by the explanation of how it works:
        
        ```javascript
        function mul (x) {
          return function (y) { // anonymous function
            return function (z) { // anonymous function
              return x * y * z;
            };
          };
        }
        ```
        
        Here the `mul` function accepts the first argument and returns the anonymous function which takes the second parameter and returns the anonymous function which takes the third parameter and returns the multiplication of arguments which is being passed in successive
        
        In Javascript function defined inside has access to outer function variable and function is the first class object so it can be returned by the function as well and passed as an argument in another function.
        - A function is an instance of the Object type
        - A function can have properties and has a link back to its constructor method
        - A function can be stored as variable
        - A function can be pass as a parameter to another function
        - A function can be returned from another function
        

        Voorbeeld afkomstig van hier: 123-JavaScript-Interview-Vragen

        Er is ook een bestand met voorbeelden in de projectmap examples/markdown2anki-example.md

      • in de sleutel modules.markdown.pathToFile
        geef het pad op naar het bestand waar het ligt *.md bestand met vragen/antwoorden

    2. Start met de werkende ANKI-applicatie
      node data2ankiindex.js
    3. WINST!!!

Zo ziet het eruit op een mobiele telefoon:

Video afspelen

Resultaat

De kaarten die op de desktopversie van ANKI zijn gemaakt, synchroniseren probleemloos met de ANKI-cloud (gratis tot 100 MB); daarna kun je ze overal gebruiken. Er zijn clients voor Android en iPhone, en je kunt ook in de browser werken. Als je tijd hebt die je niet kunt besteden, kun je in plaats van zonder doel door Facebook te scrollen of katten op Instagram te bekijken, iets nieuws leren.

Epilog

Zoals ik al heb gezegd, is dit meer een werkende POC die je kunt gebruiken dan een afgewerkt product. Ongeveer 30% van de DSL-parserstandaard is niet geĆÆmplementeerd, en daarom, bijvoorbeeld, zijn niet alle woordenartikelen die in woordenboeken staan te vinden, daarnaast is er het idee om het opnieuw te schrijven op JavaScript, omdat ik graag consistentie wil, en bovendien is het nu niet erg optimaal geschreven. Momenteel bouwt de parser een boom, wat volgens mij overbodig is en de code compliceert. In markdown2anki de afbeeldingsmodus worden afbeeldingen niet geparsed. Ik zal mijn best doen om langzaam door te gaan, maar omdat ik voorlopig voor mezelf schrijf, zal ik in eerste instantie de problemen aanpakken die ik zelf tegenkom. Maar als iemand wil helpen, dan is dat van harte welkom. Bij vragen over het programma, zal ik graag helpen via openstaande issues in de betreffende projecten. Stuur restkritiek en voorstellen hier. Ik hoop dat dit project nuttig zal zijn voor iemand.

P.S. Als je fouten ziet (en die zijn er helaas), stuur me een privƩbericht, ik zal alles corrigeren.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster