Deux histoires sur la manière dont ANKI peut vous aider à apprendre une langue étrangère et à vous préparer pour un entretien

J'ai toujours pensé qu'un programmeur paresseux est un bon programmeur. Pourquoi ? Parce que si on demande à un programmeur travailleur de faire quelque chose, il ira le faire. Mais un programmeur paresseux passera 2 à 3 fois plus de temps, mais il écrira un script qui fera cela pour lui. Peut-être que la première fois, cela prendra de manière injustifiée beaucoup de temps, mais dans le cas de tâches répétitives, cette approche se rentabilise très rapidement. Je me considère comme un programmeur paresseux. C'était une introduction, maintenant passons aux choses sérieuses.

Première histoire

Il y a quelques années, j'ai réfléchi à la façon d'améliorer mon anglais. Rien de mieux que de lire de la littérature ne m'est venu à l'esprit. J'ai acquis un e-reader, téléchargé des livres et j'ai commencé à lire. Pendant ma lecture, je me suis constamment heurté à des mots inconnus. Je les traduisais immédiatement grâce aux dictionnaires intégrés de l'e-reader, mais j'ai remarqué une particularité : les mots ne voulaient pas être retenus. Lorsque je rencontrais à nouveau ce mot quelques pages plus tard, avec 90 % de probabilité, j'avais de nouveau besoin d'une traduction, et ce à chaque fois. Il en découlait que ce n'est pas suffisant de simplement traduire des mots inconnus pendant la lecture, il faut faire quelque chose d'autre. L'idéal serait de l'intégrer dans le quotidien et de commencer à l'utiliser, mais je ne vis pas dans un pays anglophone et c'est peu probable. Là, je me suis rappelé que j'avais lu un jour à propos de Répétitions espacées.

Qu'est-ce que c'est et à quoi ça sert ? Pour faire court, il y a la courbe de l'oubli, ensuite une citation de Wikipédia :

Dès la première heure, jusqu'à 60 % de toutes les informations reçues sont oubliées, après 10 heures, il reste 35 % de ce qui a été appris. Ensuite, le processus d'oubli se fait lentement, et après 6 jours, environ 20 % du nombre total de syllabes initialement apprises restent en mémoire, et la même quantité reste en mémoire après un mois.

Et la conclusion ici

Les conclusions qu'on peut tirer sur la base de cette courbe sont qu'il est nécessaire de répéter le matériel appris pour une mémorisation efficace.

Nous en sommes venus à l'idée de la répétition espacée.

ANKi c'est un programme totalement gratuit et open source qui réalise l'idée de la répétition espacée. En d'autres termes, des cartes mémoires informatisées, avec une question d'un côté et une réponse de l'autre. Comme vous pouvez élaborer des questions/réponses à l'aide de simples html/css/javascript, on peut dire qu'il possède des possibilités véritablement illimitées. De plus, il est extensible avec des plugins, et l'un d'eux nous sera très utile par la suite.

Créer des cartes manuellement est long, ennuyeux, et avec une forte probabilité, au bout d'un moment, vous abandonnerez cette tâche, alors je me suis demandé à un certain moment s'il était possible d'automatiser cela. La réponse est oui, c'est possible. Et je l'ai fait. Pour être franc, c'est plus POC (Proof of concept), mais qui peut être utilisé. S'il y a de l'intérêt de la part des utilisateurs et si d'autres développeurs s'y intéressent, cela peut être amené à un produit final que même des utilisateurs non techniques pourront utiliser. Actuellement, l'utilisation de mon utilitaire nécessite certaines connaissances en programmation.

Je lis des livres avec le programme AIReader. Il a la capacité de se connecter à des dictionnaires externes, et lors de la traduction d'un mot, il enregistre le mot que vous avez appelé pour la traduction dans un fichier texte. Il ne reste plus qu'à traduire ces mots et à créer des cartes ANKI.

Au départ, j'ai essayé d'utiliser pour la traduction Google Translate, Lingvo API etc. Mais avec des services gratuits, ça ne marchait pas. J'épuisais la limite gratuite déjà pendant le développement, de plus, selon les conditions de la licence, je n'avais pas le droit de mettre en cache les mots. À un moment donné, j'ai compris que je devais traduire les mots moi-même. Finalement, un module a été écrit dsl2html auquel on peut connecter des dictionnaires DSL et qui sait les convertir en HTML format.

Voici à quoi ressemble un article de dictionnaire dans *.html, ma version comparée à celle de GoldenDict

Deux histoires sur la manière dont ANKI peut vous aider à apprendre une langue étrangère et à vous préparer pour un entretien

Avant de chercher un mot dans les dictionnaires connectés, je le mets sous sa forme lexicale (lemme) à l'aide de la bibliothèque Stanford CoreNLP. En réalité, c'est grâce à cette bibliothèque que j'ai commencé à programmer en Java et le plan initial était de tout écrire en Java, mais en cours de route, j'ai trouvé la bibliothèque node-java qui permet d'exécuter assez facilement du code Java à partir de nodejs et une partie du code est écrite en JavaScript. Si j'avais trouvé cette bibliothèque plus tôt, il n'y aurait pas eu une seule ligne écrite en Java. Un autre projet secondaire né dans le processus est la création d'un dépôt avec la documentation DSL qui a été trouvée en ligne au format *.chm, convertie et mise en forme. Si l'auteur du fichier original, un utilisateur par le pseudo yozhic voit cet article, je lui adresse un grand merci pour le travail accompli, sans sa documentation, je n'aurais probablement rien réussi.

Donc, j'ai un mot en anglais, son article lexical au format *.html, il reste à tout rassembler, créer des articles ANKI à partir de la liste de mots et les intégrer dans la base de données ANKI. À cet effet, le projet suivant a été créé data2anki. Il peut prendre en entrée une liste de mots, les traduire, créer des *.html articles ANKI et les enregistrer dans la base de données ANKI. À la fin de l'article, il y a des instructions sur son utilisation. Pour l'instant, c'est la deuxième histoire où les répétitions espacées peuvent être utiles.

Deuxième histoire.

Tous les individus à la recherche d'une spécialité plus ou moins qualifiée, notamment les programmeurs, se heurtent à la nécessité de se préparer pour les entretiens. De nombreux concepts demandés lors des entretiens ne sont pas utilisés dans la pratique quotidienne et sont oubliés. Lors de ma préparation à un entretien, en feuilletant un résumé, un livre, un manuel, j'ai constaté qu'il prenait beaucoup de temps et d'attention de filtrer les informations que vous connaissez déjà, car ce n'est pas toujours évident et vous devez lire attentivement pour comprendre que c'est hors sujet. Lorsque vous abordez un sujet que vous avez vraiment besoin de revoir, il arrive très souvent que vous soyez déjà fatigué et que la qualité de votre préparation en pâtisse. À un moment, j'ai pensé : pourquoi ne pas utiliser des cartes ANKI pour cela ? Par exemple, lors de la prise de notes d'un sujet, créer immédiatement un résumé sous forme de question et réponse, puis lors de la révision, vous saurez tout de suite si vous connaissez ou non la réponse à cette question.

Le problème ne se posait que dans le fait que saisir les questions était très long et ennuyeux. Pour faciliter le processus, j'ai data2anki ajouté la fonctionnalité de convertir markdown Texte dans les cartes ANKI. Tout ce que vous devez faire est d'écrire un grand fichier dans lequel les questions et les réponses seront marquées par une séquence de caractères convenue à l'avance, permettant au parseur de comprendre où se trouve la question et où se trouve la réponse.

Après avoir créé ce fichier, vous lancez data2anki et il génère les cartes ANKI. Le fichier original est facile à modifier et à partager, il suffit de supprimer la carte correspondante et de relancer le programme, et une nouvelle version sera créée.

Installation et utilisation

  1. Installation d'ANKI + AnkiConnect

    1. Téléchargez ANKI ici : https://apps.ankiweb.net/
    2. Installez le plugin AnkiConnect : https://ankiweb.net/shared/info/2055492159

  2. Installation data2anki

    1. Téléchargez data2anki depuis le dépôt github
      git clone https://github.com/anatoly314/data2anki
    2. Installez les dépendances
      cd data2anki && npm install
    3. Téléchargez les dépendances java https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Décompressez jar-dependencies.zip et placez son contenu dans data2anki/java/jars

  3. Utilisation pour la traduction de mots :

    1. Dans le fichier data2anki/config.json:

      • dans la clé mode indiquez la valeur dsl2anki

      • dans la clé modules.dsl.anki.deckName et modules.dsl.anki.modelName indiquez, respectivement, Nom de la carte et Nom du modèle (doivent déjà être créés avant la création des cartes). Actuellement, seul le modèle de type Basique:

        a des champs de devant et de derrière, et créera une carte. Le texte que vous saisissez à l'avant apparaîtra à l'avant de la carte, et le texte que vous saisissez à l'arrière apparaîtra à l'arrière de la carte.

        où le mot source est le champ avant, et la traduction sera dans champ arrière.

        Il n'y a aucun problème à ajouter le support Basic (et carte inversée), où pour chaque mot et traduction, une carte inverse sera créée, où il faudra se souvenir du mot original à partir de la traduction. Il suffit d'avoir du temps et de l'envie.

      • dans la clé modules.dsl.dictionariesPath indiquez un tableau avec les dictionnaires *.dsl connectés. Chaque dictionnaire connecté est un répertoire contenant des fichiers de dictionnaire conformément au format : Structure du dictionnaire DSL

      • dans la clé modules.dsl.wordToTranslatePath indiquez le chemin vers la liste des mots que vous souhaitez traduire.

    2. Lancez lorsque l'application ANKI fonctionne
      node data2ankiindex.js
    3. PROFIT !!!

  4. Utilisation pour créer des cartes à partir de markdown

    1. Dans le fichier data2anki/config.json:

      • dans la clé mode indiquez la valeur markdown2anki
      • dans la clé modules.markdown.anki.deckName et modules.dsl.anki.modelName indiquez, respectivement, Nom de la carte et Nom du modèle (doivent déjà être créés avant la création des cartes). Pour markdown2anki le mode, seul le modèle de type Basique.
      • dans la clé modules.markdown.selectors.startQuestionSelectors et modules.markdown.selectors.startAnswerSelectors indiquez les sélecteurs que vous utilisez pour marquer le début de la question et de la réponse, respectivement. La ligne contenant le sélecteur ne sera pas analysée et ne sera pas incluse dans la carte, le parseur commencera avec la ligne suivante.

        Par exemple, cette carte question/réponse :

        Deux histoires sur la manière dont ANKI peut vous aider à apprendre une langue étrangère et à vous préparer pour un entretien

        sera affichée en markdown de la manière suivante :
        #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
        

        L'exemple est pris ici : 123-Questions d'Entretien JavaScript

        Il y a aussi un fichier avec des exemples dans le dossier du projet examples/markdown2anki-example.md

      • dans la clé modules.markdown.pathToFile
        indiquez le chemin vers le fichier où se trouve *.md fichier avec des questions/réponses

    2. Lancez lorsque l'application ANKI fonctionne
      node data2ankiindex.js
    3. PROFIT !!!

Voici à quoi cela ressemble sur un téléphone mobile :

Lire la vidéo

Résultat

Les cartes ANKI obtenues sur la version desktop se synchronisent sans problème avec le cloud ANKI (gratuit jusqu'à 100 Mo), après quoi vous pouvez les utiliser partout. Il existe des clients pour Android et iPhone, et vous pouvez également les utiliser dans le navigateur. En conséquence, si vous avez du temps à perdre, au lieu de faire défiler sans but Facebook ou de regarder des chats sur Instagram, vous pouvez apprendre quelque chose de nouveau.

Épilogue

Comme je l'ai déjà mentionné, c'est plutôt un POC fonctionnel qu'un produit fini. Environ 30% de la norme DSL du parseur n'est pas implémentée, et donc par exemple, toutes les articles de dictionnaires qui existent dans les dictionnaires ne peuvent pas être trouvés, il y a aussi l'idée de le réécrire en JavaScript, car je veux de la « cohérence », et de plus, il est actuellement écrit de manière peu optimale. Actuellement, le parseur construit un arbre, ce qui est, à mon avis, superflu et complique le code. En markdown2anki mode image, les images ne sont pas analysées. J'essaierai de continuer à peaufiner, mais, comme j'écris pour moi-même pour l'instant, je vais prioriser la résolution des problèmes que je rencontrerai moi-même, mais si quelqu'un veut aider, il est le bienvenu. Si vous avez des questions concernant le programme, je serai ravi d'aider via des

propositions ouvertes dans les projets concernés. Pour toute autre critique et suggestion, écrivez ici. J'espère que ce projet sera utile à quelqu'un.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster