Deux histoires sur la façon dont ANKI peut vous aider à apprendre une langue étrangère et à vous préparer aux entretiens

J'ai toujours cru qu'un programmeur paresseux était un bon programmeur. Pourquoi? Parce que demandez à un travailleur acharné de faire quelque chose, il ira le faire. Et un programmeur paresseux passera 2 à 3 fois plus de temps, mais écrira un script qui le fera à sa place. Cela peut prendre un temps déraisonnablement long pour le faire la première fois, mais avec des tâches répétées, cette approche sera très rapidement payante. Je me considère comme un programmeur paresseux. C'était le préambule, passons maintenant aux choses sérieuses.

Première histoire

Il y a quelques années, je me demandais comment améliorer mon anglais. Rien de mieux ne me vient à l’esprit que de lire de la littérature. Un lecteur électronique a été acheté, des livres ont été téléchargés et j'ai commencé à lire. En lisant, je tombais sans cesse sur des mots inconnus. Je les ai immédiatement traduits à l'aide des dictionnaires intégrés au lecteur, mais j'ai remarqué une particularité : les mots ne voulaient pas être mémorisés. Lorsque je suis revenu sur ce mot quelques pages plus tard, avec une probabilité de 90 %, j'avais à nouveau besoin d'une traduction, et cela s'est produit à chaque fois. La conclusion était qu'il ne suffisait pas de simplement traduire des mots inconnus pendant la lecture, il fallait faire autre chose. L'option idéale serait de l'introduire dans la vie de tous les jours et de commencer à l'utiliser, mais je ne vis pas dans un pays anglophone et c'est peu probable. Puis je me suis souvenu que j'avais lu une fois sur Répétition espacée.

De quoi s'agit-il et avec quoi le mange-t-on ? Bref, il y a ça courbe d'oubli, autre citation de Wikipédia :

Dès la première heure, jusqu'à 60 % de toutes les informations reçues sont oubliées ; 10 heures après la mémorisation, 35 % de ce qui a été appris reste en mémoire. Ensuite, le processus d'oubli se déroule 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 d'ici

Les conclusions qui peuvent être tirées de cette courbe sont que pour une mémorisation efficace, il est nécessaire de répéter le matériel mémorisé.

Nous avons donc eu une idée répétition espacée.

ANKI est un programme entièrement gratuit et open source qui met en œuvre l'idée de répétition espacée. En termes simples, les cartes flash informatisées comportent d’un côté une question et de l’autre une réponse. Puisque vous pouvez faire des questions/réponses en utilisant régulièrement html/css/javascript, alors nous pouvons dire qu’il a des possibilités vraiment illimitées. De plus, il est extensible avec des plugins, et l'un d'eux nous sera très utile à l'avenir.

Créer manuellement des cartes est long, fastidieux et avec une forte probabilité, après un certain temps, vous oublierez cette tâche, et donc à un moment donné je me suis posé la question, est-il possible d'automatiser cette tâche. La réponse est oui, vous le pouvez. Et je l'ai fait. Je le dis tout de suite, c'est plus POC (Preuve de concept), mais qui peut être utilisé. S'il y a un intérêt de la part des utilisateurs et que d'autres développeurs s'impliquent, alors il peut être amené à un produit fini que même les utilisateurs techniquement analphabètes peuvent utiliser. Désormais, utiliser mon utilitaire nécessite quelques connaissances en programmation.

Je lis des livres en utilisant le programme Lecteur IA. Il a la capacité de connecter des dictionnaires externes et lorsque vous traduisez 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ébut, j'ai essayé d'utiliser pour la traduction Google translate, API Lingvo etc. Mais les choses n’ont pas fonctionné avec les services gratuits. J'ai épuisé la limite gratuite pendant le processus de développement, de plus, selon les termes de la licence, je n'avais pas le droit de cacher des mots. À un moment donné, j’ai réalisé que je devais traduire les mots moi-même. En conséquence, un module a été écrit dsl2html auquel vous pouvez vous connecter Dictionnaires DSL et qui sait comment les convertir en HTML format.

Voici à quoi ressemble une entrée de dictionnaire dans *.html, mon option par rapport à l'option Dict d'or

Deux histoires sur la façon dont ANKI peut vous aider à apprendre une langue étrangère et à vous préparer aux entretiens

Avant de chercher un mot dans les dictionnaires connectés, je l'apporte à forme de dictionnaire (lemme) utiliser la bibliothèque Stanford CorePNL. En fait, grâce à cette bibliothèque, j'ai commencé à écrire en Java et le plan initial était de tout écrire en Java, mais ce faisant, j'ai trouvé la bibliothèque nœud-java avec lequel vous pouvez exécuter relativement 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, pas une seule ligne n'aurait été écrite en Java. Un autre projet parallèle né dans le processus est la création référentiel avec documentation DSL qui a été trouvé sur le réseau au format *.chm, converti et amené à la forme divine. Si l'auteur du fichier original est un utilisateur par pseudo yozhique Lorsqu'il voit cet article, je le remercie beaucoup pour le travail qu'il a effectué ; sans sa documentation, je n'y serais probablement pas parvenu.

J'ai donc un mot en anglais, son entrée dans le dictionnaire au format *.html, il ne reste plus qu'à tout rassembler, créer des articles ANKI à partir de la liste de mots et les saisir dans la base de données ANKI. Dans ce but, le projet suivant a été créé data2anki. Il peut prendre une liste de mots en entrée, traduire, créer ANKI *.html articles et les enregistrer dans la base de données ANKI. À la fin de l'article, vous trouverez des instructions sur la façon de l'utiliser. En attendant, c’est dans la deuxième histoire que les répétitions espacées peuvent être utiles.

La deuxième histoire.

Toutes les personnes à la recherche d'une spécialité plus ou moins qualifiée, y compris les programmeurs, sont confrontées à la nécessité de se préparer à un entretien. De nombreux concepts posés lors des entretiens ne sont pas utilisés dans la pratique quotidienne et sont oubliés. En préparant un entretien, en feuilletant des notes, un livre, un ouvrage de référence, j'ai été confronté au fait qu'il faut beaucoup de temps et d'attention pour trier des informations que l'on connaît déjà car elles ne sont pas toujours évidentes et il faut lisez-le attentivement pour comprendre de quoi il s’agit. Lorsqu’on aborde un sujet qui mérite vraiment d’être répété, il arrive souvent que l’on soit déjà fatigué et que la qualité de sa préparation en souffre. À un moment donné, je me suis demandé pourquoi ne pas utiliser les cartes ANKI pour cela aussi ? Par exemple, lorsque vous prenez des notes sur un sujet, créez immédiatement une note sous forme de question et de réponse, puis lorsque vous la répéterez, vous saurez immédiatement si vous connaissez ou non la réponse à cette question.

Le seul problème qui s’est posé était que la saisie des questions était très longue et fastidieuse. Pour faciliter le processus, data2anki projet, j'ai ajouté une fonctionnalité de conversion démarquage texte dans les cartes ANKI. Tout ce dont vous avez besoin est d'écrire un gros fichier dans lequel les questions et réponses seront marquées d'une séquence de caractères prédéterminée, grâce à laquelle l'analyseur comprendra où se trouve la question et où se trouve la réponse.

Une fois ce fichier créé, vous exécutez data2anki et il crée des cartes ANKI. Le fichier original est facile à modifier et à partager, il vous suffit d'effacer la ou les cartes correspondantes et de réexécuter le programme, et une nouvelle version sera créée.

Installation et utilisation

  1. Installation d'ANKI + AnkiConnect

    1. Téléchargez ANKI à partir d'ici : https://apps.ankiweb.net/
    2. Installez le plug-in AnkiConnect : https://ankiweb.net/shared/info/2055492159

  2. Installation data2anki

    1. Téléchargement data2anki du dépôt github
      git clone https://github.com/anatoly314/data2anki
    2. Installer les dépendances
      cd data2anki && npm install
    3. Télécharger les dépendances Java https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Déballage jar-dépendances.zip et placez son contenu dans data2anki/java/jars

  3. Utiliser pour traduire des mots :

    1. En fichier data2anki/config.json:

      • dans la clé mode entrez la valeur dsl2anki

      • dans la clé modules.dsl.anki.deckName и modules.dsl.anki.modelName écris en conséquence Nom du pont и Nom du modèle (doit déjà être créé avant de créer des cartes). Actuellement, seul le type de modèle est pris en charge Basic:

        Possède des champs recto et verso et créera une carte. Le texte que vous saisissez au recto apparaîtra au recto de la carte, et le texte que vous saisissez au verso apparaîtra au verso de la carte.

        où est le mot original ? Champ avant, et la traduction sera en Champ arrière.

        Il n'y a aucun problème pour ajouter du support Carte basique (et inversée), où une carte inversée sera créée pour le mot et la traduction, où, en fonction de la traduction, vous devrez vous souvenir du mot original. Tout ce dont vous avez besoin, c'est de temps et d'envie.

      • dans la clé modules.dsl.dictionariesPath enregistrer un tableau avec connecté *.dsl dictionnaires. Chaque dictionnaire connecté est un répertoire dans lequel se trouvent les fichiers du dictionnaire selon le format : Structure du dictionnaire DSL

      • dans la clé modules.dsl.wordToTranslatePath entrez le chemin d'accès à la liste des mots que vous souhaitez traduire.

    2. Lancer avec l'application ANKI en cours d'exécution
      node data2ankiindex.js
    3. PROFIT !!!

  4. Utilisations pour créer des cartes à partir de démarques

    1. En fichier data2anki/config.json:

      • dans la clé mode entrez la valeur démarque2anki
      • dans la clé modules.markdown.anki.deckName и modules.dsl.anki.modelName écris en conséquence Nom du pont и Nom du modèle (doit déjà être créé avant de créer des cartes). Pour démarque2anki mode seul le type de modèle est pris en charge Basic.
      • dans la clé modules.markdown.selectors.startQuestionSelectors и modules.markdown.selectors.startAnswerSelectors vous écrivez des sélecteurs avec lesquels vous marquez respectivement le début de la question et de la réponse. La ligne avec le sélecteur lui-même ne sera pas analysée et ne se retrouvera pas dans la carte ; l'analyseur commencera à travailler à partir de la ligne suivante.

        Par exemple, cette carte question/réponse :

        Deux histoires sur la façon dont ANKI peut vous aider à apprendre une langue étrangère et à vous préparer aux entretiens

        Cela ressemblera à ceci en markdown :
        #QUESTION# ## Question 5. Écrivez une fonction mul qui fonctionnera correctement lorsqu'elle sera invoquée avec la syntaxe suivante. ```javascript console.log(mul(2)(3)(4)); // sortie : 24 console.log(mul(4)(3)(4)); // sortie : 48 ``` #ANSWER# Ci-dessous le code suivi de l'explication de son fonctionnement : ```javascript function mul (x) { return function (y) { // fonction anonyme return function (z) { // la fonction anonyme renvoie x * y * z ; } ; } ; } ``` Ici, la fonction `mul` accepte le premier argument et renvoie la fonction anonyme qui prend le deuxième paramètre et renvoie la fonction anonyme qui prend le troisième paramètre et renvoie la multiplication des arguments qui sont passés successivement. Dans la fonction Javascript définie inside a accès à la variable de fonction externe et function est le premier objet de classe, il peut donc également être renvoyé par la fonction et passé comme argument dans une autre fonction. - Une fonction est une instance du type Objet - Une fonction peut avoir des propriétés et possède un lien vers sa méthode constructeur - Une fonction peut être stockée sous forme de variable - Une fonction peut être passée en paramètre à une autre fonction - Une fonction peut être renvoyé d'une autre fonction
        

        Exemple tiré d'ici : 123-JavaScript-Interview-Questions

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

      • dans la clé modules.markdown.pathToFile
        notez le chemin d'accès au fichier où *.Maryland fichier questions/réponses

    2. Lancer avec l'application ANKI en cours d'exécution
      node data2ankiindex.js
    3. PROFIT !!!

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

Résultat

Les cartes reçues sur la version de bureau d'ANKI sont synchronisées sans problème avec le cloud ANKI (gratuit jusqu'à 100 Mo), et vous pouvez ensuite les utiliser partout. Il existe des clients pour Android et iPhone, et vous pouvez également l'utiliser dans un navigateur. En conséquence, si vous avez du temps que vous n'avez rien à dépenser, au lieu de parcourir sans but Facebook ou les chats sur Instagram, vous pouvez apprendre quelque chose de nouveau.

Le final

Comme je l'ai mentionné, il s'agit plus d'un POC fonctionnel que vous pouvez utiliser que d'un produit fini. Environ 30 % de la norme d'analyseur DSL n'est pas implémentée et, par conséquent, par exemple, toutes les entrées de dictionnaire présentes dans les dictionnaires ne peuvent pas être trouvées, il y a aussi une idée pour le réécrire en JavaScript, parce que je veux de la « cohérence », et en plus, maintenant ce n'est pas écrit de manière très optimale. Maintenant, l'analyseur construit un arbre, mais à mon avis, cela est inutile et ne nécessite pas de compliquer le code. DANS démarque2anki mode, les images ne sont pas analysées. Je vais essayer de réduire petit à petit, mais comme j'écris pour moi-même, je vais d'abord résoudre les problèmes sur lesquels je vais moi-même marcher, mais si quelqu'un veut m'aider, alors vous êtes le bienvenu. Si vous avez des questions sur le programme, je serai heureux de vous aider à résoudre les problèmes ouverts dans les projets concernés. Écrivez d’autres critiques et suggestions ici. J'espère que ce projet sera utile à quelqu'un.

PS Si vous remarquez des erreurs (et malheureusement il y en a), écrivez-moi dans un message personnel, je corrigerai tout.

Source: habr.com

Ajouter un commentaire