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

Ik heb altijd geloofd dat een luie programmeur een goede programmeur is. Waarom? Want vraag een harde werker om iets te doen, hij zal het gaan doen. En een luie programmeur zal 2-3 keer meer tijd besteden, maar zal een script schrijven dat het voor hem zal doen. Het kan onredelijk lang duren om dit de eerste keer te doen, maar bij herhaalde taken zal deze aanpak zeer snel vruchten afwerpen. Ik beschouw mezelf als een luie programmeur. Dat was de inleiding, laten we nu aan de slag gaan.

Verhaal één

Een paar jaar geleden vroeg ik me af hoe ik mijn Engels kon verbeteren. Er kwam niets beters in mijn gedachten dan het lezen van literatuur. Ik kocht een elektronische reader, downloadde boeken en begon te lezen. Tijdens het lezen kwam ik steeds onbekende woorden tegen. Ik heb ze onmiddellijk vertaald met behulp van de woordenboeken die in de lezer waren ingebouwd, maar ik merkte één kenmerk op: de woorden wilden niet onthouden worden. Toen ik dit woord een paar pagina's later opnieuw tegenkwam, had ik met een waarschijnlijkheid van 90% opnieuw vertaling nodig, en dit gebeurde elke keer. De conclusie was dat het niet voldoende was om tijdens het lezen onbekende woorden simpelweg te vertalen, je moet iets anders doen. De ideale optie zou zijn om het in het dagelijks leven te introduceren en te gaan gebruiken, maar ik woon niet in een Engelssprekend land en dit is onwaarschijnlijk. Toen herinnerde ik me dat ik er ooit over had gelezen Gespreide herhaling.

Wat is het en waarmee wordt het gegeten? Kortom, er is dit curve vergeten, verder citaat uit Wikipedia:

Al binnen het eerste uur wordt tot 60% van alle ontvangen informatie vergeten; 10 uur na het onthouden blijft 35% van wat geleerd is in het geheugen. Vervolgens verloopt het vergeetproces langzaam en na zes dagen blijft ongeveer 6% van het totale aantal aanvankelijk geleerde lettergrepen in het geheugen achter, en na een maand blijft hetzelfde aantal in het geheugen achter.

En de conclusie vanaf hier

De conclusies die op basis van deze curve kunnen worden getrokken, zijn dat het voor effectief onthouden noodzakelijk is om het opgeslagen materiaal te herhalen.

Dus kwamen we met een idee gespreide herhaling.

АNKI is een volledig gratis en open source programma dat het idee van gespreide herhaling implementeert. Simpel gezegd hebben geautomatiseerde flashkaarten aan de ene kant een vraag en aan de andere kant een antwoord. Omdat je vragen/antwoorden kunt doen met regulier html/css/javascript, dan kunnen we zeggen dat het werkelijk onbeperkte mogelijkheden heeft. Daarnaast is het uitbreidbaar met speciaal plug-ins, en een ervan zal in de toekomst zeer nuttig voor ons zijn.

Het handmatig maken van kaarten is lang, vervelend en met een grote waarschijnlijkheid zul je deze taak na een tijdje vergeten, en dus stelde ik mezelf op een gegeven moment de vraag: is het mogelijk om deze taak te automatiseren. Het antwoord is ja, dat kan. En ik deed het. Ik zeg meteen: het is meer POC (Proof-of-concept), maar die kan worden gebruikt. Als er interesse is van gebruikers en andere ontwikkelaars meedoen, kan het tot een eindproduct worden gebracht dat zelfs technisch ongeletterde gebruikers kunnen gebruiken. Nu vereist het gebruik van mijn hulpprogramma enige kennis van programmeren.

Ik lees boeken met behulp van het programma AI-lezer. Het heeft de mogelijkheid om externe woordenboeken aan te sluiten, en wanneer u een woord vertaalt, slaat het het woord dat u ter vertaling opriep op in een tekstbestand. Het enige dat overblijft is deze woorden te vertalen en ANKI-kaarten te maken.

In eerste instantie probeerde ik het te gebruiken voor vertaling Google Vertalen, Lingvo-API enz. Maar met gratis diensten lukte het niet. Ik heb de vrije limiet uitgeput tijdens het ontwikkelingsproces, bovendien had ik volgens de licentievoorwaarden niet het recht om woorden in de cache op te slaan. Op een gegeven moment besefte ik dat ik de woorden zelf moest vertalen. Naar aanleiding hiervan is er een module geschreven dsl2html waarmee u verbinding kunt maken DSL-woordenboeken en wie weet hoe je ze kunt omzetten in HTML formaat.

Zo ziet een woordenboekinvoer eruit in *. Html, mijn optie vergeleken met de optie Gouden Dictaat

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

Voordat ik naar een woord in verbonden woordenboeken zoek, breng ik het naar woordenboekvorm (lemma) gebruik van de bibliotheek Stanford CoreNLP. Dankzij deze bibliotheek ben ik in feite begonnen met schrijven in Java en het oorspronkelijke plan was om alles in Java te schrijven, maar gaandeweg vond ik de bibliotheek knooppunt-java waarmee je relatief eenvoudig Java-code uit nodejs kunt uitvoeren en een deel van de code in JavaScript is geschreven. Als ik deze bibliotheek eerder had gevonden, zou er geen enkele regel in Java zijn geschreven. Een ander zijproject dat tijdens het proces ontstond, is de creatie repository met DSL-documentatie die op het netwerk werd gevonden in het formaat *.chm, omgezet en in goddelijke vorm gebracht. Als de auteur van het originele bestand een gebruiker met een bijnaam is jozisch Als hij dit artikel ziet, bedank ik hem hartelijk voor het werk dat hij heeft gedaan; zonder zijn documentatie was het mij waarschijnlijk niet gelukt.

Dus ik heb een woord in het Engels, de woordenboekinvoer in het formaat *. Html, het enige dat overblijft is alles samen te voegen, ANKI-artikelen uit de woordenlijst te maken en deze in de ANKI-database in te voeren. Hiervoor is het volgende project gemaakt data2anki. Het kan een lijst met woorden gebruiken als invoer, vertalen, ANKI maken *. Html artikelen en leg deze vast in de ANKI-database. Aan het einde van het artikel vindt u instructies voor het gebruik ervan. In de tussentijd kunnen gespreide herhalingen nuttig zijn in het tweede verhaal.

Het tweede verhaal.

Alle mensen die op zoek zijn naar een meer/minder gekwalificeerde specialiteit, inclusief programmeurs, worden geconfronteerd met de noodzaak om zich voor te bereiden op een sollicitatiegesprek. Veel van de begrippen die in interviews worden gevraagd, gebruik je niet in de dagelijkse praktijk en worden vergeten. Bij het voorbereiden van een interview, het doorbladeren van aantekeningen, een boek, een naslagwerk, werd ik geconfronteerd met het feit dat het veel tijd en aandacht kost om informatie eruit te halen die je al kent, omdat het niet altijd duidelijk is en je moet Lees het aandachtig door om te begrijpen wat het is. Wanneer je op een onderwerp stuit dat echt herhaald moet worden, komt het vaak voor dat je al moe bent en dat de kwaliteit van je voorbereiding eronder lijdt. Op een gegeven moment dacht ik: waarom gebruik ik hier niet ook ANKI-kaarten voor? Als u bijvoorbeeld aantekeningen maakt over een onderwerp, maak dan onmiddellijk een notitie in de vorm van een vraag en antwoord, en als u deze herhaalt, weet u meteen of u het antwoord op deze vraag weet of niet.

Het enige probleem dat zich voordeed, was dat het uittypen van vragen erg lang en vervelend was. Om het proces eenvoudiger te maken, data2anki project heb ik convert-functionaliteit toegevoegd markdown tekst in ANKI-kaarten. Het enige dat u nodig hebt, is één groot bestand schrijven waarin vragen en antwoorden worden gemarkeerd met een vooraf bepaalde reeks tekens, waardoor de parser begrijpt waar de vraag staat en waar het antwoord staat.

Zodra dit bestand is gemaakt, voert u data2anki uit en worden ANKI-kaarten gemaakt. Het originele bestand is eenvoudig te bewerken en te delen. U hoeft alleen maar de bijbehorende kaart(en) te wissen en het programma opnieuw uit te voeren, waarna er een nieuwe versie wordt gemaakt.

Installatie en gebruik

  1. ANKI + AnkiConnect installeren

    1. Download ANKI hier: https://apps.ankiweb.net/
    2. AnkiConnect-plug-in installeren: https://ankiweb.net/shared/info/2055492159

  2. installatie data2anki

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

  3. Gebruik om woorden te vertalen:

    1. In bestand data2anki/config.json:

      • in de sleutel mode voer de waarde in dsl2anki

      • in de sleutel modules.dsl.anki.deckName ΠΈ modules.dsl.anki.modelnaam schrijf dienovereenkomstig Dek naam ΠΈ Modelnaam (moet al zijn aangemaakt voordat kaarten worden gemaakt). Momenteel wordt alleen het modeltype ondersteund Basic:

        Heeft voor- en achtervelden en maakt één kaart. De tekst die u aan de voorkant invoert, verschijnt op de voorkant van de kaart, en de tekst die u aan de achterkant invoert, verschijnt op de achterkant van de kaart.

        waar is het originele woord? Voorste veld, en de vertaling zal binnen zijn Achter veld.

        Er is geen probleem om ondersteuning toe te voegen Basis (en omgekeerde kaart), waar een omgekeerde kaart wordt gemaakt voor het woord en de vertaling, waarbij u op basis van de vertaling het originele woord moet onthouden. Het enige wat je nodig hebt is tijd en verlangen.

      • in de sleutel modules.dsl.dictionariesPath registreer een array met verbonden *.dsl woordenboeken. Elk verbonden woordenboek is een map waarin de woordenboekbestanden zich bevinden in overeenstemming met het formaat: DSL-woordenboekstructuur

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

    2. Start terwijl de ANKI-applicatie actief is
      node data2ankiindex.js
    3. WINST!!!

  4. Gebruikt voor het maken van kaarten uit de prijsverlaging

    1. In bestand data2anki/config.json:

      • in de sleutel mode voer de waarde in afwaardering2anki
      • in de sleutel modules.markdown.anki.deckName ΠΈ modules.dsl.anki.modelnaam schrijf dienovereenkomstig Dek naam ΠΈ Modelnaam (moet al zijn aangemaakt voordat kaarten worden gemaakt). Voor afwaardering2anki Alleen het modeltype in de modus wordt ondersteund Basic.
      • in de sleutel modules.markdown.selectors.startQuestionSelectors ΠΈ modules.markdown.selectors.startAnswerSelectors je schrijft selectors waarmee je respectievelijk het begin van de vraag en het antwoord markeert. De regel met de selector zelf wordt niet geparseerd en komt niet in de kaart terecht; de parser gaat vanaf de volgende regel aan de slag.

        Deze vraag/antwoordkaart bijvoorbeeld:

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

        In de afwaardering ziet het er als volgt uit:
        #QUESTION# ## Vraag 5. Schrijf een mul-functie die goed werkt als deze wordt aangeroepen met de volgende syntaxis. ```javascript-console.log(mul(2)(3)(4)); // uitvoer: 24 console.log(mul(4)(3)(4)); // output: 48 ``` #ANSWER# Hieronder staat de code, gevolgd door de uitleg van hoe het werkt: ```javascript function mul (x) { return function (y) { // anonieme functie return function (z) { // anonieme functie return x * y * z; }; }; } ``` Hier accepteert de `mul`-functie het eerste argument en retourneert de anonieme functie die de tweede parameter neemt en retourneert de anonieme functie die de derde parameter neemt en retourneert de vermenigvuldiging van argumenten die achtereenvolgens worden doorgegeven. In Javascript-functie gedefinieerd inside heeft toegang tot de buitenste functievariabele en functie is het eerste klas object, dus het kan ook door de functie worden geretourneerd en als argument in een andere functie worden doorgegeven. - Een functie is een instantie van het objecttype - Een functie kan eigenschappen hebben en een link hebben naar zijn constructormethode - Een functie kan worden opgeslagen als variabele - Een functie kan als parameter worden doorgegeven aan een andere functie - Een functie kan worden teruggekeerd van een andere functie
        

        Voorbeeld hier vandaan: 123-JavaScript-interviewvragen

        In de projectmap bevindt zich ook een bestand met voorbeelden examples/markdown2anki-example.md

      • in de sleutel modules.markdown.pathToFile
        noteer het pad naar het bestand waar *.md vraag/antwoordbestand

    2. Start terwijl de ANKI-applicatie actief is
      node data2ankiindex.js
    3. WINST!!!

Zo ziet het eruit op een mobiele telefoon:

Resultaat

Kaarten ontvangen op de desktopversie van ANKI worden zonder problemen gesynchroniseerd met de ANKI-cloud (gratis tot 100mb), en dan kun je ze overal gebruiken. Er zijn clients voor Android en iPhone, maar je kunt het ook in een browser gebruiken. Het resultaat is dat als je tijd hebt waar je niets aan te besteden hebt, je in plaats van doelloos door Facebook of katten op Instagram te scrollen, iets nieuws kunt leren.

epiloog

Zoals ik al zei, is dit meer een werkende POC die je kunt gebruiken dan een eindproduct. Ongeveer 30% van de DSL-parserstandaard is niet geΓ―mplementeerd en daarom Zo kunnen bijvoorbeeld niet alle woordenboekvermeldingen in woordenboeken worden gevonden, er is ook een idee om het te herschrijven JavaScript, omdat ik β€œconsistentie” wil, en bovendien is het nu niet erg optimaal geschreven. Nu bouwt de parser een boom, maar naar mijn mening is dit niet nodig en hoeft dit de code niet ingewikkelder te maken. IN afwaardering2anki modus, worden de afbeeldingen niet geparseerd. Ik zal proberen beetje bij beetje te bezuinigen, maar aangezien ik voor mezelf schrijf, zal ik allereerst de problemen oplossen waar ik zelf op zal stappen, maar als iemand wil helpen, dan ben je welkom. Als je vragen hebt over het programma, help ik je graag bij openstaande kwesties in de betreffende projecten. Schrijf hier andere kritiek en suggesties. Ik hoop dat dit project voor iemand nuttig zal zijn.

PS Als je fouten opmerkt (en helaas zijn er enkele), schrijf me dan in een persoonlijk bericht, ik zal alles corrigeren.

Bron: www.habr.com

Voeg een reactie