Hackathon DevDays'19 (parti 2): parser tal-messaġġi awdjo għall-kontroll tat-Telegramma u l-grammatika f'IntelliJ IDEA

Inkomplu nitkellmu dwar il-proġetti tal-hackathon tar-rebbiegħa DevDays, li fihom ipparteċipaw studenti tal-programm tal-master "Żvilupp tas-Software/Inġinerija tas-Software".

Hackathon DevDays'19 (parti 2): parser tal-messaġġi awdjo għall-kontroll tat-Telegramma u l-grammatika f'IntelliJ IDEA

Mill-mod, nixtiequ nistiednu lill-qarrejja biex jingħaqdu Grupp VK ta' studenti tal-masters. Fiha se nippubblikaw l-aħħar aħbarijiet dwar ir-reklutaġġ u l-istudju. Fil-grupp jinstab ukoll filmat mill-open day. Infakkrukom: l-avveniment se jsir fid-29 ta’ April, dettalji online.

Telegram Desktop Voice Message Parser

Hackathon DevDays'19 (parti 2): parser tal-messaġġi awdjo għall-kontroll tat-Telegramma u l-grammatika f'IntelliJ IDEA

Awtur tal-idea
Khoroshev Artyom

Line-up

Khoroshev Artem – maniġer tal-proġett/iżviluppatur/QA
Eliseev Anton - analista tan-negozju/speċjalista tal-kummerċjalizzazzjoni
Maria Kuklina – disinjatur/iżviluppatur UI
Bakhvalov Pavel – disinjatur/iżviluppatur/QA tal-UI

Mill-perspettiva tagħna, Telegram huwa messaġġier modern u konvenjenti, u l-verżjoni tal-PC tiegħu hija sors popolari u miftuħ, li jagħmilha possibbli li tiġi mmodifikata. Il-klijent joffri funzjonalità pjuttost rikka. Minbarra l-messaġġi standard, fih sejħiet bil-vuċi, messaġġi bil-vidjo, u messaġġi bil-vuċi. U huma dawn tal-aħħar li kultant iġibu inkonvenjent lir-riċevitur tagħhom. Ħafna drabi ma jkunx possibbli li tisma' messaġġ bil-vuċi waqt li tkun fuq kompjuter jew laptop. Jista 'jkun hemm storbju ambjentali, nuqqas ta' headphones, jew ma tridu li xi ħadd jisma 'l-kontenut tal-messaġġ. Problemi bħal dawn kważi qatt ma jinqalgħu jekk tuża Telegram fuq smartphone, għax tista 'sempliċement iġġibha f'widnejk, b'differenza għal laptop jew PC. Ippruvajna nsolvu din il-problema.

L-għan tal-proġett tagħna f'DevDays kien li żżid il-kapaċità li tittraduċi messaġġi bil-vuċi riċevuti f'test lill-klijent tad-desktop Telegram (minn hawn 'il quddiem imsejjaħ Telegram Desktop).

L-analogi kollha bħalissa huma bots li għalihom tista 'tibgħat messaġġ awdjo u tirċievi test bi tweġiba. M'aħniex kuntenti ħafna b'dan: it-twassil ta' messaġġ lil bot mhuwiex konvenjenti ħafna; nixtiequ li jkollna funzjonalità nattiva. Barra minn hekk, kwalunkwe bot huwa parti terza li taġixxi bħala intermedjarju bejn l-API ta 'rikonoxximent tad-diskors u l-utent, u dan huwa, għall-inqas, mhux sikur.

Kif innutat qabel, telegram-desktop għandu żewġ vantaġġi sinifikanti: faċilità u veloċità ta 'tħaddim. U din mhix koinċidenza, għax hija miktuba kompletament f'C++. U peress li ddeċidejna li nżidu funzjonalità ġdida direttament lill-klijent, kellna niżviluppawha f'C++.

Hackathon DevDays'19 (parti 2): parser tal-messaġġi awdjo għall-kontroll tat-Telegramma u l-grammatika f'IntelliJ IDEAKien hemm 4 persuni fit-tim tagħna. Inizjalment, żewġ persuni kienu qed ifittxu librerija xierqa għar-rikonoxximent tad-diskors, persuna waħda kienet qed tistudja l-kodiċi sors ta 'Telegram-desktop, oħra kienet qed tuża l-proġett tal-bini Telegram Desktop. Aktar tard, kulħadd kien okkupat jirranġa l-UI u jiddibaggja.

Deher li l-implimentazzjoni tal-funzjonalità maħsuba ma tkunx diffiċli, iżda, kif jiġri dejjem, inqalgħu diffikultajiet.

Is-soluzzjoni għall-problema kienet tikkonsisti f'żewġ sottokompiti indipendenti: l-għażla ta 'għodda xierqa ta' rikonoxximent tad-diskors u l-implimentazzjoni ta 'UI għal funzjonalità ġdida.

Meta għażilna librerija għar-rikonoxximent tal-vuċi, immedjatament kellna nabbandunaw l-APIs offline kollha, minħabba li l-mudelli tal-lingwa jieħdu ħafna spazju. Imma qed nitkellmu fuq lingwa waħda biss. Deher ċar li jkollna nużaw l-API online. Aktar tard irriżulta li s-servizzi ta 'rikonoxximent tad-diskors ta' ġganti bħal Google, Yandex u Microsoft m'huma b'xejn, u se jkollna nikkuntentaw b'perjodu ta 'prova. Bħala riżultat, Google Speech-To-Text intgħażlet għax tippermettilek tikseb token għall-użu tas-servizz, li se jdum għal sena sħiħa.

It-tieni problema li ltqajna magħhom hija relatata ma 'xi wħud min-nuqqasijiet ta' C++ - zoo ta 'diversi libreriji fin-nuqqas ta' repożitorju ċentralizzat. Jiġri li Telegram Desktop jiddependi fuq ħafna libreriji oħra speċifiċi għall-verżjoni. Ir-repożitorju uffiċjali għandu istruzzjoni għall-assemblaġġ tal-proġett. U wkoll numru kbir ta 'kwistjonijiet miftuħa dwar problemi ta' bini, pereżempju ħin и два. Il-problemi kollha rriżultaw li kienu relatati mal-fatt li l-iskrittura tal-bini nkiteb għal Ubuntu 14.04, u sabiex tinbena b'suċċess telegramma taħt Ubuntu 18.04, kellhom isiru bidliet.

Telegram Desktop innifsu jieħu żmien pjuttost twil biex jinġabar: fuq laptop b'Intel Core i5-7200U, assemblaġġ komplut (bandiera -j 4) bid-dipendenzi kollha jieħu madwar tliet sigħat. Minn dawn, madwar 30 minuta jittieħdu billi tgħaqqad il-klijent innifsu (aktar tard irriżulta li fil-konfigurazzjoni tad-Debug, il-linking jieħu madwar 10 minuti), iżda l-istadju tal-konnessjoni għandu jiġi ripetut kull darba wara li jsiru bidliet.

Minkejja l-problemi, irnexxielna nimplimentaw l-idea maħsuba, kif ukoll naġġornaw jibni script għal Ubuntu 18.04. Dimostrazzjoni tax-xogħol tista' tara fuq rabta. Inkludu wkoll diversi animazzjonijiet. Ħdejn il-messaġġi kollha tal-vuċi dehret buttuna, li tippermettilek tittraduċi l-messaġġ f'test. Billi tikklikkja bil-lemin, tista' wkoll tispeċifika l-lingwa li se tintuża għax-xandir. Permezz rabta klijent disponibbli biex jitniżżel.

Repożitorju.

Fl-opinjoni tagħna, irriżulta li kien Prova ta 'Kunċett tajba ta' funzjonalità li tkun konvenjenti għal ħafna utenti. Nittamaw li narawha fir-rilaxxi futuri ta' Telegram Desktop.

Appoġġ Mtejjeb tal-Lingwa Naturali f'IntelliJ IDEA

Hackathon DevDays'19 (parti 2): parser tal-messaġġi awdjo għall-kontroll tat-Telegramma u l-grammatika f'IntelliJ IDEA

Awtur tal-idea

Tankov Vladislav

Line-up

Tankov Vladislav (mexxej tat-tim, li jaħdem ma' LanguageTool u IntelliJ IDEA)
Nikita Sokolov (taħdem ma' LanguageTool u toħloq UI)
Khvorov Alexander (ħidma ma' LanguageTool u ottimizzazzjoni tal-prestazzjoni)
Sadovnikov Alexander (appoġġ għall-parsing tal-lingwi tal-markup u l-kodiċi)

Żviluppajna plugin għal IntelliJ IDEA li jiċċekkja diversi testi (kummenti u dokumentazzjoni, linji letterali fil-kodiċi, test ifformattjat f'Markup jew XML markup) għall-eżattezza grammatikali, ortografika u stilistika (bl-Ingliż dan jissejjaħ qari tal-provi).

L-idea tal-proġett kienet li tespandi l-istandard tal-kontroll tal-ortografija IntelliJ IDEA għall-iskala ta 'Grammarly, biex tagħmel tip ta' Grammarly ġewwa IDE.

Tista’ tara x’ġara по ссылке.

Ukoll, hawn taħt se nitkellmu f'aktar dettall dwar il-kapaċitajiet tal-plugin, kif ukoll id-diffikultajiet li qamu waqt il-ħolqien tiegħu.

Motivazzjoni

Hemm ħafna prodotti ddisinjati għall-kitba ta' test f'lingwi naturali, iżda d-dokumentazzjoni u l-kummenti tal-kodiċi l-aktar spiss jinkitbu f'ambjenti ta' żvilupp. Fl-istess ħin, l-IDEs jagħmlu xogħol eċċellenti biex isibu żbalji fil-kodiċi, iżda mhumiex adattati ħażin għal testi f'lingwi naturali. Dan jagħmilha faċli ħafna li tagħmel żbalji fil-grammatika, punteġġjatura, jew stil mingħajr ma l-ambjent ta 'żvilupp jindikahom. Huwa l-aktar kritiku li tagħmel żball fil-kitba tal-interface tal-utent, peress li dan jaffettwa mhux biss il-fehim tal-kodiċi, iżda wkoll lill-utenti tal-applikazzjoni żviluppata nfushom.

Wieħed mill-ambjenti ta 'żvilupp l-aktar popolari u żviluppati huwa IntelliJ IDEA, kif ukoll IDEs ibbażati fuq il-Pjattaforma IntelliJ. Il-Pjattaforma IntelliJ diġà għandha spellchecker inkorporata, iżda lanqas ma teħles mill-iżbalji grammatikali l-aktar sempliċi. Iddeċidejna li nintegraw waħda mis-sistemi popolari ta' analiżi tal-lingwa naturali f'IntelliJ IDEA.

Реализация

Hackathon DevDays'19 (parti 2): parser tal-messaġġi awdjo għall-kontroll tat-Telegramma u l-grammatika f'IntelliJ IDEAAħna ma stabbilixejtx lilna nfusna l-kompitu li noħolqu s-sistema ta 'verifika tat-test tagħna stess, għalhekk użajna soluzzjoni eżistenti. L-iktar għażla adattata rriżulta li kienet Għodda tal-Lingwa. Il-liċenzja ppermettietna nużawha liberament għall-iskopijiet tagħna: hija b'xejn, miktuba bil-Java u open source. Barra minn hekk, jappoġġja 25 lingwa u ilu fl-iżvilupp għal aktar minn ħmistax-il sena. Minkejja l-ftuħ tiegħu, LanguageTool huwa kompetitur serju għal soluzzjonijiet ta 'verifika tat-test imħallsa, u l-fatt li jista' jaħdem lokalment huwa litteralment il-karatteristika qattiel tiegħu.

Il-kodiċi tal-plugin jinsab fi repożitorji fuq GitHub. Il-proġett kollu nkiteb f'Kotlin b'żieda żgħira ta' Java għall-UI. Matul l-hackathon, irnexxielna nimplimentaw appoġġ għal Markdown, JavaDoc, HTML u Plain Text. Wara l-hackathon, aġġornament maġġuri żied appoġġ għall-XML, string literals f'Java, Kotlin u Python, u verifika tal-ortografija.

Diffikultajiet

Pjuttost malajr indunajna li jekk nimxu t-test kollu lil LanguageTool għal spezzjoni kull darba, allura l-interface IDEA se tiffriża fuq kwalunkwe test aktar jew inqas serju, peress li l-ispezzjoni nnifisha timblokka l-fluss tal-UI. Il-problema ġiet solvuta permezz tal-kontroll `ProgressManager.checkCancelled` - din il-funzjoni tarmi eċċezzjoni jekk IDEA temmen li wasal iż-żmien li twaqqaf l-ispezzjoni.

Dan eliminat kompletament l-iffriżar, iżda huwa impossibbli li jintuża: it-test jieħu żmien twil ħafna biex jipproċessa. Barra minn hekk, fil-każ tagħna, ħafna drabi parti żgħira ħafna tat-test tinbidel u rridu nżommu r-riżultati b'xi mod fil-cache. Hekk għamilna eżattament. Sabiex ma niċċekkjawx kollox kull darba, aħna naqsmu t-test b'mod deterministiku f'biċċiet u vverifikajna biss dawk li nbidlu. Peress li t-testi jistgħu jkunu kbar u ma ridniex tagħbija l-cache, ħżinna mhux it-testi nfushom, iżda l-hashes tagħhom. Dan ippermetta li l-plugin jaħdem bla xkiel anke fuq fajls kbar.

LanguageTool jappoġġja aktar minn 25 lingwa, iżda huwa improbabbli li xi utent wieħed jeħtieġhom kollha. Ridt nagħti l-opportunità li tniżżel libreriji għal lingwa speċifika fuq talba (jekk timmarkaha fl-UI). Saħansitra implimentajna dan, iżda rriżulta li kien wisq ikkumplikat u mhux affidabbli. B'mod partikolari, kellna tagħbija LanguageTool b'sett ġdid ta 'lingwi bl-użu ta' classloader separat, u mbagħad inizjalizzah bir-reqqa. Fl-istess ħin, il-libreriji kollha kienu f'repożitorju .m2 tal-utent, u f'kull bidu kellna niċċekkjaw l-integrità tagħhom. Fl-aħħar, iddeċidejna li jekk l-utenti kellhom problemi bid-daqs tal-plugin, allura aħna nipprovdu plugin separat għal bosta mill-lingwi l-aktar popolari.

Wara l-hackathon

Il-hackathon intemm, iżda x-xogħol fuq il-plugin kompla b'tim idjaq. Ridt nappoġġja kordi, kummenti, u anke kostruzzjonijiet tal-lingwa bħal ismijiet varjabbli u ta 'klassi. Bħalissa dan huwa appoġġjat biss għal Java, Kotlin u Python, iżda nittamaw li din il-lista tikber. Irranġajna ħafna bugs żgħar u sirna aktar kompatibbli mal-spellchecker integrat ta' Idea. Barra minn hekk, dehru appoġġ XML u verifika tal-ortografija. Dan kollu jinstab fit-tieni verżjoni, li ppublikajna dan l-aħħar.

Xi jmiss?

Plugin bħal dan jista 'jkun utli mhux biss għall-iżviluppaturi, iżda wkoll għal kittieba tekniċi (spiss jaħdmu, pereżempju, bl-XML f'IDE). Kuljum iridu jaħdmu bil-lingwa naturali, mingħajr ma jkollhom assistent fil-forma ta 'pariri editur dwar żbalji possibbli. Il-plugin tagħna jipprovdi ħjiel bħal dawn u jagħmel dan bi grad għoli ta 'preċiżjoni.
Qed nippjanaw li niżviluppaw il-plugin, kemm billi nżidu lingwi ġodda kif ukoll billi nesploraw approċċ ġenerali għall-organizzazzjoni tal-iċċekkjar tat-test. Il-pjanijiet immedjati tagħna jinkludu l-implimentazzjoni ta’ profili stilistiċi (settijiet ta’ regoli li jiddefinixxu gwida tal-istil għat-test, pereżempju, “ma tiktebx eż, imma ikteb il-forma sħiħa”), jespandu d-dizzjunarju u jtejbu l-interface tal-utent (b’mod partikolari, irridu nagħtu lill-utent l-opportunità mhux biss li jinjora kelma, iżda li jżidha fid-dizzjunarju, li jindika l-parti tad-diskors).

Sors: www.habr.com

Żid kumment