ANKIk atzerriko hizkuntza bat ikasten eta elkarrizketetarako prestatzen lagun zaitzakeen bi istorio

Beti uste izan dut programatzaile alferra programatzaile ona dela. Zergatik? Zeren eta langile gogor bati zerbait egiteko eskatu, bera joango da eta egingo du. Eta programatzaile alferrak 2-3 aldiz denbora gehiago emango du, baina harentzat egingo duen gidoia idatziko du. Baliteke hori lehen aldiz egiteko arrazoirik gabeko denbora luzea behar izatea, baina behin eta berriz eginkizunekin ikuspegi honek oso azkar irabaziko du. Programatzaile alferratzat dut nire burua. Hori zen hitzaurrea, orain ekin gaitezen.

Istorio bat

Duela urte batzuk pentsatu nuen nola hobetu nezakeen ingelesa. Literatura irakurtzea baino gauza hoberik ez zitzaidan burura. Irakurgailu elektroniko bat erosi, liburuak deskargatu eta irakurtzen hasi nintzen. Irakurtzen ari nintzen bitartean, hitz ezezagunekin topo egiten nuen. Berehala itzuli nituen irakurlearen barnean dauden hiztegiak erabiliz, baina ezaugarri bat nabaritu nuen: hitzak ez ziren gogoratu nahi. Orrialde batzuk geroago hitz honekin berriro topatu nuenean, %90eko probabilitatearekin berriro itzulpena behar nuen, eta hori gertatzen zen aldi bakoitzean. Ondorioa zen ez zela nahikoa irakurtzen ari zaren bitartean hitz ezezagunak itzultzea, beste zerbait egin behar duzula. Aukera aproposa litzateke eguneroko bizitzan sartzea eta erabiltzen hastea, baina ez naiz ingelesez hitz egiten den herrialde batean bizi eta hori nekez da. Orduan gogoratu nintzen behin irakurri nuela Errepikapen tartekatua.

Zer da eta zerekin jaten da? Laburbilduz, hau dago kurba ahaztea, Wikipediako aipamen gehiago:

Dagoeneko lehen orduan, jasotako informazio guztiaren %60a ahazten da; memorizatu eta 10 ordura, ikasitakoaren %35 memorian geratzen da. Ondoren, ahazteko prozesua poliki-poliki doa, eta 6 egun igaro ondoren hasieran ikasitako silaben kopuru osoaren % 20 inguru geratzen da memorian, eta kopuru bera hilabete igaro ondoren.

Eta ondorioa hemendik

Kurba horretatik abiatuta atera daitezkeen ondorioak hauek dira: memorizazio eraginkorra izateko beharrezkoa da memorizatutako materiala errepikatzea.

Beraz, ideia bat bururatu zitzaigun tartekaturiko errepikapena.

АNKI Erabat doako eta kode irekiko programa bat da, tartekaturiko errepikapenaren ideia ezartzen duena. Besterik gabe, ordenagailuz egindako flash-txartelek galdera bat dute alde batean eta erantzuna bestean. Galderak/erantzunak ohikoak erabiliz egin ditzakezunez html/css/javascript, orduan esan dezakegu benetan mugarik gabeko aukerak dituela. Horrez gain, bereziekin zabalgarria da pluginak, eta horietako bat oso baliagarria izango zaigu aurrerantzean.

Eskuz txartelak sortzea luzea, neketsua eta probabilitate handikoa da, pixka bat igaro ondoren zeregin hau ahaztuko zaizu, eta, beraz, uneren batean galdera hau egin nion neure buruari, posible al da zeregin hau automatizatzea. Erantzuna bai, dezakezu. Eta egin nuen. Berehala esango dut, gehiago da POC (Kontzeptu froga), baina erabil daitekeena. Erabiltzaileen interesa badago eta beste garatzaile batzuek parte hartzen badute, teknikoki analfabetoek ere erabil dezaketen produktu amaitu batera eraman daiteke. Orain, nire utilitatea erabiltzeak programazioaren ezagutza batzuk eskatzen ditu.

Programa erabiliz liburuak irakurtzen ditut AI irakurgailua. Kanpoko hiztegiak konektatzeko gaitasuna du, eta hitz bat itzultzen duzunean, itzultzeko deitu duzun hitza testu fitxategi batean gordetzen du. Hitz hauek itzultzea eta ANKI txartelak sortzea besterik ez da geratzen.

Hasieran itzulpenerako erabiltzen saiatu nintzen Google itzultzailea, Lingvo APIa etab. Baina gauzak ez ziren funtzionatu doako zerbitzuekin. Doako muga agortu nuen garapen prozesuan, gainera, lizentziaren baldintzen arabera, ez nuen hitzak cachean jartzeko eskubiderik. Noizbait konturatu nintzen hitzak neuk itzuli behar nituela. Ondorioz, modulu bat idatzi zen dsl2html konekta zaitezke DSL hiztegiak eta nork daki nola bihurtu HTML formatua.

Hauxe da hiztegiko sarrera bat *-n. Html, nire aukera aukerarekin alderatuta GoldenDict

ANKIk atzerriko hizkuntza bat ikasten eta elkarrizketetarako prestatzen lagun zaitzakeen bi istorio

Hiztegi konektatuetan hitz bat bilatu aurretik, hona ekartzen dut hiztegi forma (lema) liburutegia erabiliz Stanford CoreNLP. Izan ere, liburutegi hau dela eta, Javan idazten hasi nintzen eta jatorrizko plana dena Javan idaztea zen, baina prozesuan liburutegia aurkitu nuen nodo-java horrekin nahiko erraz exekutatu dezakezu nodejs-en Java kodea eta kode batzuk JavaScript-en idatzita daude. Liburutegi hau lehenago aurkitu izan banu, ez zen lerro bakar bat ere idatziko Javan. Prozesuan jaio zen beste alboko proiektu bat sortzea da DSL dokumentazioarekin biltegia sarean aurkitu zena * formatuan.chm, bihurtu eta jainkozko formara ekarri. Jatorrizko fitxategiaren egilea ezizena duen erabiltzailea bada yozhic Artikulu hau ikusten duenean, asko eskertzen diot egindako lanagatik; bere dokumentaziorik gabe, ziurrenik, ez nuen lortuko.

Beraz, ingelesez hitz bat daukat, bere hiztegiko sarrera formatuan *. Html, dena batu, hitzen zerrendatik ANKI artikuluak sortu eta ANKI datu-basean sartzea besterik ez da geratzen. Horretarako honako proiektu hau sortu da datuak2anki. Hitz zerrenda bat har dezake sarrera gisa, itzuli, ANKI sortu *. Html artikuluak eta erregistratu ANKI datu-basean. Artikuluaren amaieran nola erabiltzeko argibideak daude. Bitartean, bigarren istorioa da non espaziotutako errepikapenak erabilgarriak izan daitezkeen.

Bigarren istorioa.

Espezialitate gehiago/gutxiago baten bila dabiltzan pertsona guztiak, programatzaileak barne, elkarrizketa bat prestatu beharraren aurrean daude. Eguneroko praktikan erabiltzen ez dituzun elkarrizketetan galdetzen diren kontzeptu asko eta ahaztu egiten dira. Elkarrizketa bat prestatzerakoan, oharrak, liburu bat, kontsulta-liburu bat arakatzean, aurrez ezagutzen duzun informazioa bahetzeko denbora eta arreta asko behar direla aurrean izan nuen, beti ez baita agerikoa eta behar duzulako. irakurri arretaz zer den ulertzeko.ez du garrantzirik. Benetan errepikatu beharreko gai batera iristen zarenean, askotan gertatzen da jada nekatuta zaudela eta zure prestaketaren kalitateak jasaten duela. Noizbait pentsatu nuen, zergatik ez erabili ANKI txartelak horretarako ere? Adibidez, gai bati buruzko oharrak hartzerakoan, berehala sortu oharra galdera-erantzun moduan, eta gero errepikatzen duzunean, berehala jakingo duzu galdera honen erantzuna ezagutzen duzun ala ez.

Sortu zen arazo bakarra galderak idaztea oso luzea eta neketsua zela izan zen. Prozesua errazteko, datuak2anki proiektua bihurtzeko funtzionaltasuna gehitu dut Markdown testua ANKI txarteletan. Behar duzun guztia fitxategi handi bat idaztea da, zeinetan galderak eta erantzunak aldez aurretik zehaztutako karaktere-sekuentzia batekin markatuko diren, eta horren bidez analizatzaileak galdera non dagoen eta erantzuna non dagoen ulertuko du.

Fitxategi hau sortu ondoren, data2anki exekutatzen duzu eta ANKI txartelak sortzen ditu. Jatorrizko fitxategia editatzeko eta partekatzeko erraza da, dagozkion txartelak ezabatu eta programa berriro exekutatu besterik ez duzu behar, eta bertsio berri bat sortuko da.

Instalazioa eta erabilera

  1. ANKI + AnkiConnect instalatzen

    1. Deskargatu ANKI hemendik: https://apps.ankiweb.net/
    2. Instalatu AnkiConnect plugina: https://ankiweb.net/shared/info/2055492159

  2. Instalazio- datuak2anki

    1. Deskargatu datuak2anki github biltegitik
      git clone https://github.com/anatoly314/data2anki
    2. Instalatu menpekotasunak
      cd data2anki && npm install
    3. Deskargatu java menpekotasunak https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip
    4. Despaketatzea jar-dependencies.zip eta jarri bere edukia data2anki/java/jars

  3. Erabili hitzak itzultzeko:

    1. Fitxategian data2anki/config.json:

      • klabean modua sartu balioa dsl2anki

      • klabean modules.dsl.anki.deckName ΠΈ modules.dsl.anki.modelName horren arabera idatzi Deck izena ΠΈ Model izena (txartelak sortu aurretik sortu behar da). Momentuz eredu mota bakarrik onartzen da Oinarrizko:

        Aurrealdeko eta Atzeko eremuak ditu eta txartel bat sortuko du. Aurrean sartzen duzun testua txartelaren aurrealdean agertuko da, eta Atzean sartzen duzun testua txartelaren atzealdean.

        non dago jatorrizko hitza? Aurrealdeko eremua, eta itzulpena bertan izango da Atzeko eremua.

        Ez dago arazorik laguntza gehitzeko Oinarrizko txartela (eta alderantzikatua), non hitzaren eta itzulpenaren alderantzizko txartel bat sortuko den, non itzulpenean oinarrituta jatorrizko hitza gogoratu beharko duzu. Behar duzun guztia denbora eta gogoa da.

      • klabean modules.dsl.dictionariesPath erregistratu matrize bat konektatuta * batekin.dsl hiztegiak. Konektatutako hiztegi bakoitza hiztegi-fitxategiak formatuaren arabera kokatzen diren direktorio bat da: DSL hiztegiaren egitura

      • klabean modules.dsl.wordToTranslatePath sartu itzuli nahi duzun hitzen zerrendaren bidea.

    2. Abiarazi ANKI aplikazioa martxan dagoela
      node data2ankiindex.js
    3. IRABAZI!!!

  4. Markdownetik txartelak sortzeko erabilerak

    1. Fitxategian data2anki/config.json:

      • klabean modua sartu balioa markdown2anki
      • klabean modules.markdown.anki.deckName ΠΈ modules.dsl.anki.modelName horren arabera idatzi Deck izena ΠΈ Model izena (txartelak sortu aurretik sortu behar da). Izan ere markdown2anki modua soilik eredu mota onartzen da Oinarrizko.
      • klabean moduluak.markdown.hautatzaileak.startQuestionSelectors ΠΈ moduluak.markdown.hautatzaileak.startAnswerSelectors galdera eta erantzunaren hasiera markatzen dituzun hautatzaileak idazten dituzu, hurrenez hurren. Hautatzailea duen lerroa ez da analizatuko eta ez da txartelean amaituko; analizatzailea hurrengo lerrotik hasiko da lanean.

        Adibidez, galdera/erantzun txartel hau:

        ANKIk atzerriko hizkuntza bat ikasten eta elkarrizketetarako prestatzen lagun zaitzakeen bi istorio

        Markdown-en honela izango da:
        #GALDERA# ## Galdera 5. Idatzi ondoko sintaxiarekin deitzen denean ondo funtzionatuko duen mul funtzio bat. ```javascript console.log(mul(2)(3)(4)); // irteera : 24 console.log(mul(4)(3)(4)); // irteera : 48 ``` #ERANTZUNA# Jarraian kodea eta funtzionamenduari buruzko azalpena emanez: ```javascript function mul (x) { return function (y) { // anonimo funtzioa return function (z) { // funtzio anonimoa itzuli x * y * z; }; }; } ``` Hemen `mul` funtzioak lehen argumentua onartzen du eta bigarren parametroa hartzen duen funtzio anonimoa itzultzen du eta hirugarren parametroa hartzen duen funtzio anonimoa itzultzen du eta jarraian pasatzen ari diren argumentuen biderkadura itzultzen du. barrualdean kanpoko funtzioaren aldagairako sarbidea du eta funtzioa lehen klaseko objektua da, beraz, funtzioak ere itzuli eta beste funtzio batean argumentu gisa pasa dezan. - Funtzio bat Objektu motako instantzia bat da - Funtzio batek propietateak izan ditzake eta bere eraikitzaile-metodorako esteka bat du - Funtzio bat aldagai gisa gorde daiteke - Funtzio bat parametro gisa pasa daiteke beste funtzio batera - Funtzio bat izan daiteke beste funtzio batetik itzuli da
        

        Hemendik hartutako adibidea: 123-JavaScript-Elkarrizketa-Galderak

        Proiektuaren karpetan adibideekin fitxategi bat ere badago examples/markdown2anki-example.md

      • klabean modules.markdown.pathToFile
        idatzi fitxategiaren bidea non *.md galdera/erantzun fitxategia

    2. Abiarazi ANKI aplikazioa martxan dagoela
      node data2ankiindex.js
    3. IRABAZI!!!

Hau da telefono mugikor batean nolakoa den:

Emaitza

ANKI-ren mahaigaineko bertsioan jasotako txartelak ANKI hodeiarekin arazorik gabe sinkronizatzen dira (doan 100 MB arte), eta gero edonon erabil ditzakezu. Android eta iPhonerako bezeroak daude, eta arakatzaile batean ere erabil dezakezu. Ondorioz, ezer gastatzeko ez duzun denbora baduzu, Facebook-en edo Instagram-en katuak nahi gabe korritu beharrean, zerbait berria ikas dezakezu.

Epilogoa

Aipatu dudan bezala, hau da, erabil dezakezun POC lan bat baino, amaitutako produktu bat baino. DSL analizatzaile estandarraren % 30 inguru ez dago ezarrita, eta, beraz, adibidez, hiztegietan dauden hiztegi-sarrera guztiak ezin dira aurkitu, berridazteko ideia ere badago Ikusteko Javascript-a, β€œkoherentzia” nahi dudalako, eta gainera, orain ez dago oso ondo idatzita. Orain analizatzailea zuhaitz bat eraikitzen ari da, baina nire ustez hau ez da beharrezkoa eta ez du kodea zaildu behar. IN markdown2anki moduan, irudiak ez dira analizatzen. Pixkanaka mozten saiatuko naiz, baina niretzat idazten dudanez, nik neuk zapalduko ditudan arazoak konponduko ditut lehenik, baina norbaitek lagundu nahi badu, ongi etorria zarete. Programari buruzko galderarik baduzu, pozik lagunduko dizut gai irekien bidez dagozkion proiektuetan. Idatzi hemen beste kritika eta iradokizun batzuk. Proiektu hau norbaitentzat erabilgarria izatea espero dut.

PS Akatsen bat nabaritzen baduzu (eta, tamalez, badaude), idatzi idazu mezu pertsonal batean, dena zuzenduko dut.

Iturria: www.habr.com

Gehitu iruzkin berria