Dwie historie o tym, jak ANKI może pomóc Ci w nauce języka obcego i przygotowaniu się do rozmów kwalifikacyjnych

Zawsze wierzyłem, że leniwy programista to dobry programista. Dlaczego? Ponieważ poproś ciężko pracującego, aby coś zrobił, a on to zrobi. A leniwy programista spędzi 2-3 razy więcej czasu, ale napisze skrypt, który zrobi to za niego. Wykonanie tej czynności za pierwszym razem może zająć nieuzasadnioną ilość czasu, ale przy powtarzających się zadaniach takie podejście zwróci się bardzo szybko. Uważam się za leniwego programistę. To był wstęp, teraz przejdźmy do rzeczy.

Historia pierwsza

Kilka lat temu zastanawiałem się, jak mógłbym poprawić swój angielski. Nic lepszego nie przychodziło mi do głowy niż czytanie literatury. Kupiłem czytnik elektroniczny, ściągnąłem książki i zacząłem czytać. Czytając, natykałam się na nieznane słowa. Od razu przetłumaczyłem je, korzystając ze słowników wbudowanych w czytnik, ale zauważyłem jedną cechę: słowa nie chciały zostać zapamiętane. Kiedy kilka stron później ponownie natknąłem się na to słowo, z 90% prawdopodobieństwem ponownie potrzebowałem tłumaczenia i działo się to za każdym razem. Wniosek był taki, że nie wystarczy po prostu przetłumaczyć nieznane słowa podczas czytania, trzeba zająć się czymś innym. Idealną opcją byłoby wprowadzenie go do codziennego życia i rozpoczęcie korzystania, jednak nie mieszkam w kraju anglojęzycznym i jest to mało prawdopodobne. Wtedy przypomniałem sobie, że kiedyś o tym czytałem Rozłożone powtórzenia.

Co to jest i z czym się je spożywa? Krótko mówiąc, jest coś takiego krzywa zapominania, dalszy cytat z Wikipedii:

Już w ciągu pierwszej godziny zapomina się aż 60% wszystkich otrzymanych informacji, a 10 godzin po zapamiętaniu 35% tego, czego się nauczyłeś, pozostaje w pamięci. Następnie proces zapominania przebiega powoli i po 6 dniach w pamięci pozostaje około 20% całkowitej liczby początkowo poznanych sylab, a ta sama ilość pozostaje w pamięci po miesiącu.

I stąd wniosek

Wnioski, jakie można wyciągnąć na podstawie tej krzywej, są takie, że dla efektywnego zapamiętywania konieczne jest powtarzanie zapamiętanego materiału.

Wpadliśmy więc na pomysł powtarzanie w odstępach.

АNKI to całkowicie darmowy program typu open source, który realizuje ideę powtarzania w odstępach. Mówiąc najprościej, skomputeryzowane karty flash mają pytanie po jednej stronie i odpowiedź po drugiej. Ponieważ możesz zadawać pytania/odpowiedzi za pomocą zwykłego html/css/javascript, to można powiedzieć, że ma naprawdę nieograniczone możliwości. Ponadto można go rozszerzyć o specjalne wtyczki, a jeden z nich będzie nam bardzo przydatny w przyszłości.

Ręczne tworzenie kartek jest długie, żmudne i z dużym prawdopodobieństwem po pewnym czasie zapomnisz o tym zadaniu, dlatego w pewnym momencie zadałem sobie pytanie, czy da się to zadanie zautomatyzować. Odpowiedź brzmi: tak, możesz. I zrobiłem to. Od razu powiem, że to coś więcej POC (Weryfikacja koncepcji), ale które można wykorzystać. Jeśli użytkownicy zainteresują się projektem i zaangażują się w niego inni programiści, można je doprowadzić do gotowego produktu, z którego będą mogli korzystać nawet niepiśmienni technicznie użytkownicy. Teraz korzystanie z mojego narzędzia wymaga pewnej wiedzy z zakresu programowania.

Czytam książki za pomocą programu Czytnik AI. Posiada możliwość podłączenia zewnętrznych słowników, a kiedy tłumaczysz słowo, zapisuje ono słowo, które wywołałeś do tłumaczenia, do pliku tekstowego. Pozostaje tylko przetłumaczyć te słowa i stworzyć karty ANKI.

Na początku próbowałem używać do tłumaczenia tłumacz Google, API Lingvo itp. Ale w przypadku bezpłatnych usług coś nie wyszło. Wyczerpałem darmowy limit w procesie rozwoju, dodatkowo zgodnie z warunkami licencji nie miałem prawa buforować słów. W pewnym momencie zdałem sobie sprawę, że muszę sam przetłumaczyć te słowa. W efekcie powstał moduł dsl2html z którym możesz się połączyć Słowniki DSL i kto wie, jak je przekształcić HTML forma.

Tak wygląda wpis słownikowy w *. Html, moja opcja w porównaniu z opcją Złoty Dykt

Dwie historie o tym, jak ANKI może pomóc Ci w nauce języka obcego i przygotowaniu się do rozmów kwalifikacyjnych

Zanim zacznę szukać słowa w podłączonych słownikach, przywołuję je forma słownikowa (lemat) korzystania z biblioteki Stanford CoreNLP. Tak naprawdę dzięki tej bibliotece zacząłem pisać w Javie i pierwotny plan zakładał pisanie wszystkiego w Javie, ale w trakcie znalazłem bibliotekę węzeł-Java za pomocą którego można stosunkowo łatwo wykonać kod Java z nodejs, a część kodu jest napisana w JavaScript. Gdybym wcześniej znalazł tę bibliotekę, ani jedna linia nie zostałaby napisana w Javie. Kolejnym pobocznym projektem, który zrodził się w tym procesie, jest kreacja repozytorium z dokumentacją DSL który został znaleziony w sieci w formacie *.chm, nawrócony i doprowadzony do boskiej postaci. Jeśli autorem oryginalnego pliku jest użytkownik o pseudonimie Yozhic Kiedy widzi ten artykuł, bardzo mu dziękuję za pracę, którą wykonał; bez jego dokumentacji najprawdopodobniej nie odniósłbym sukcesu.

Mam więc słowo w języku angielskim, jego wpis w słowniku w formacie *. Html, pozostaje tylko złożyć wszystko w jedną całość, utworzyć artykuły ANKI z listy słów i wprowadzić je do bazy danych ANKI. W tym celu powstał poniższy projekt dane2anki. Może pobrać listę słów jako dane wejściowe, przetłumaczyć, utworzyć ANKI *. Html artykuły i zapisywać je w bazie danych ANKI. Na końcu artykułu znajduje się instrukcja jak z niego korzystać. W międzyczasie przydatne mogą być powtórzenia w drugiej historii.

Druga historia.

Wszystkie osoby poszukujące mniej/więcej wykwalifikowanej specjalizacji, w tym także programiści, stają przed koniecznością przygotowania się do rozmowy kwalifikacyjnej. Wiele pojęć zadawanych na rozmowach kwalifikacyjnych nie wykorzystuje się w codziennej praktyce i zostaje zapomnianych. Przygotowując się do rozmowy kwalifikacyjnej, przeglądając notatki, książkę, podręcznik, zetknąłem się z tym, że przesiewanie informacji, które już znasz, zajmuje dużo czasu i uwagi, bo nie zawsze jest to oczywiste i trzeba się przeczytaj uważnie, żeby zrozumieć, co to jest. Nieistotne. Kiedy dojdziesz do tematu, który naprawdę trzeba powtórzyć, często zdarza się, że jesteś już zmęczony i ucierpi jakość Twojego przygotowania. W pewnym momencie pomyślałem, dlaczego nie wykorzystać do tego również kart ANKI? Np. robiąc notatki na jakiś temat, od razu stwórz notatkę w formie pytania i odpowiedzi, a gdy ją powtórzysz, od razu będziesz wiedział, czy znasz odpowiedź na to pytanie, czy nie.

Jedynym problemem, jaki się pojawił, było to, że wpisywanie pytań było bardzo długie i żmudne. Aby ułatwić ten proces, dane2anki projekt, do którego dodałem funkcję konwersji obniżka cen tekst na kartach ANKI. Wystarczy napisać jeden duży plik, w którym pytania i odpowiedzi zostaną oznaczone z góry ustaloną sekwencją znaków, dzięki czemu parser zrozumie, gdzie jest pytanie i gdzie jest odpowiedź.

Po utworzeniu tego pliku uruchamiasz data2anki i tworzysz karty ANKI. Oryginalny plik można łatwo edytować i udostępniać, wystarczy usunąć odpowiednie karty i ponownie uruchomić program, a zostanie utworzona nowa wersja.

Instalacja i użytkowanie

  1. Instalowanie ANKI + AnkiConnect

    1. Pobierz ANKI stąd: https://apps.ankiweb.net/
    2. Zainstaluj wtyczkę AnkiConnect: https://ankiweb.net/shared/info/2055492159

  2. Instalacja dane2anki

    1. Ściąganie dane2anki z repozytorium github
      git clone https://github.com/anatoly314/data2anki
    2. Zainstaluj zależności
      cd data2anki && npm install
    3. Pobierz zależności Java https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Rozpakowywanie jar-zależności.zip i umieść w nim jego zawartość data2anki/Java/jars

  3. Użyj do tłumaczenia słów:

    1. W pliku data2anki/config.json:

      • w kluczu tryb wprowadź wartość dsl2anki

      • w kluczu Modules.dsl.anki.deckName и moduły.dsl.anki.nazwa modelu napisz odpowiednio Nazwa talii и Nazwa modelu (należy już utworzyć przed utworzeniem kart). Obecnie obsługiwany jest tylko typ modelu Basic:

        Ma pola Przód i Tył i utworzy jedną kartę. Tekst wpisany z przodu pojawi się na awersie karty, a tekst wpisany z tyłu pojawi się na odwrocie karty.

        gdzie jest oryginalne słowo? Pole przednie, a tłumaczenie będzie dostępne Pole tylne.

        Nie ma problemu z dodaniem wsparcia Podstawowy (i odwrócona karta), gdzie zostanie utworzona odwrotna karta dla słowa i tłumaczenia, gdzie na podstawie tłumaczenia będziesz musiał zapamiętać oryginalne słowo. Wszystko czego potrzebujesz to czas i chęci.

      • w kluczu moduły.dsl.dictionariesPath zarejestruj tablicę z podłączonym *.dsl słowniki. Każdy podłączony słownik jest katalogiem, w którym znajdują się pliki słownika zgodnie z formatem: Struktura słownika DSL

      • w kluczu moduły.dsl.wordToTranslatePath wprowadź ścieżkę do listy słów, które chcesz przetłumaczyć.

    2. Uruchom z uruchomioną aplikacją ANKI
      node data2ankiindex.js
    3. ZYSK!!!

  4. Używa do tworzenia kart z przecen

    1. W pliku data2anki/config.json:

      • w kluczu tryb wprowadź wartość markdown2anki
      • w kluczu moduły.markdown.anki.deckNazwa и moduły.dsl.anki.nazwa modelu napisz odpowiednio Nazwa talii и Nazwa modelu (należy już utworzyć przed utworzeniem kart). Dla markdown2anki obsługiwany jest tylko typ modelu Basic.
      • w kluczu moduły.markdown.selectors.startQuestionSelectors и moduły.markdown.selectors.startAnswerSelectors piszesz selektory, za pomocą których zaznaczasz odpowiednio początek pytania i odpowiedzi. Linia z samym selektorem nie zostanie przeanalizowana i nie trafi na kartę; parser zacznie działać od następnej linii.

        Na przykład ta karta pytań/odpowiedzi:

        Dwie historie o tym, jak ANKI może pomóc Ci w nauce języka obcego i przygotowaniu się do rozmów kwalifikacyjnych

        Będzie to wyglądać tak w przecenach:
        #PYTANIE# ## Pytanie 5. Napisz funkcję mul, która będzie działać poprawnie po wywołaniu z następującą składnią. ```konsola JavaScript.log(mul(2)(3)(4)); // wyjście: 24 console.log(mul(4)(3)(4)); // wynik : 48 ``` #ANSWER# Poniżej znajduje się kod, po którym następuje wyjaśnienie, jak to działa: ```funkcja javascript mul (x) { funkcja zwrotna (y) { // funkcja anonimowa funkcja zwracana (z) { // funkcja anonimowa return x * y * z; }; }; } ``` Tutaj funkcja `mul` przyjmuje pierwszy argument i zwraca funkcję anonimową, która przyjmuje drugi parametr i zwraca funkcję anonimową, która przyjmuje trzeci parametr i zwraca mnożenie argumentów przekazywanych w kolejnych zdefiniowanych funkcjach JavaScript inside ma dostęp do zewnętrznej zmiennej funkcji, a funkcja jest obiektem pierwszej klasy, więc może zostać zwrócona również przez funkcję i przekazana jako argument w innej funkcji. - Funkcja jest instancją typu Object - Funkcja może posiadać właściwości i link do metody jej konstruktora - Funkcję można przechowywać jako zmienną - Funkcję można przekazać jako parametr do innej funkcji - Funkcję można zwrócone z innej funkcji
        

        Przykład wzięty stąd: 123-JavaScript-Pytania do rozmowy kwalifikacyjnej

        W folderze projektu znajduje się również plik z przykładami examples/markdown2anki-example.md

      • w kluczu moduły.markdown.pathToFile
        zapisz ścieżkę do pliku, w którym *.md plik pytań/odpowiedzi

    2. Uruchom z uruchomioną aplikacją ANKI
      node data2ankiindex.js
    3. ZYSK!!!

Tak to wygląda na telefonie komórkowym:

Doświadcz mocnych i skutecznych rezultatów

Karty otrzymane w komputerowej wersji ANKI synchronizują się bez problemów z chmurą ANKI (bezpłatnie do 100mb), dzięki czemu można z nich korzystać wszędzie. Istnieją klienci na Androida i iPhone'a, ale można z nich korzystać także w przeglądarce. Dzięki temu, jeśli masz czas, którego nie masz na co przeznaczyć, to zamiast bezcelowo przeglądać Facebooka czy koty na Instagramie, możesz nauczyć się czegoś nowego.

Epilog

Jak wspomniałem, jest to bardziej działający POC, z którego można skorzystać, niż gotowy produkt. Około 30% standardu parsera DSL nie jest zaimplementowane, dlatego też na przykład nie można znaleźć wszystkich haseł słownikowych znajdujących się w słownikach, jest też pomysł, żeby go przepisać JAVASCRIPT, bo zależy mi na „konsekwencji”, a poza tym teraz nie jest to napisane zbyt optymalnie. Teraz parser buduje drzewo, ale moim zdaniem jest to niepotrzebne i nie musi komplikować kodu. W markdown2anki trybie obrazy nie są analizowane. Postaram się sukcesywnie ciąć, ale ponieważ piszę dla siebie, to przede wszystkim rozwiążę problemy, na które sam będę deptać, ale jeśli ktoś chce pomóc, to zapraszam. Jeśli masz pytania dotyczące programu, chętnie pomogę w otwartych kwestiach w odpowiednich projektach. Napisz tutaj inną krytykę i sugestie. Mam nadzieję, że ten projekt komuś się przyda.

PS Jeżeli zauważycie jakieś błędy (a niestety są), napiszcie do mnie w wiadomości prywatnej, wszystko poprawię.

Źródło: www.habr.com

Dodaj komentarz