TurpinÄm runÄt par pavasara hakatona DevDays projektiem, kuros piedalÄ«jÄs maÄ£istrantÅ«ras studenti
Starp citu, mÄs vÄlamies aicinÄt lasÄ«tÄjus pievienoties
Telegram darbvirsmas balss ziÅojumu parsÄtÄjs
Idejas autors
HoroŔevs Artjoms
Sarindoties
Khoroshev Artem ā projektu vadÄ«tÄjs/izstrÄdÄtÄjs/QA
Elisejevs Antons ā biznesa analÄ«tiÄ·is/mÄrketinga speciÄlists
Marija Kuklina ā UI dizainere/izstrÄdÄtÄjs
Bakhvalovs PÄvels - UI dizainers/izstrÄdÄtÄjs/QA
No mÅ«su viedokļa Telegram ir moderns un Ärts kurjers, un tÄ datora versija ir populÄra un atvÄrtÄ koda versija, kas ļauj to modificÄt. Klients piedÄvÄ diezgan bagÄtÄ«gu funkcionalitÄti. Papildus standarta Ä«sziÅÄm tajÄ ir iekļauti balss zvani, video ziÅas un balss ziÅas. Un tieÅ”i pÄdÄjie dažreiz sagÄdÄ neÄrtÄ«bas to saÅÄmÄjam. Bieži vien nav iespÄjams noklausÄ«ties balss ziÅojumu, atrodoties pie datora vai klÄpjdatora. Var bÅ«t apkÄrtÄjais troksnis, austiÅu trÅ«kums vai arÄ« jÅ«s nevÄlaties, lai kÄds dzirdÄtu ziÅojuma saturu. Å Ädas problÄmas gandrÄ«z nekad nerodas, ja izmantojat Telegram viedtÄlrunÄ«, jo atŔķirÄ«bÄ no klÄpjdatora vai personÄlÄ datora varat to vienkÄrÅ”i pienest pie auss. MÄs mÄÄ£inÄjÄm atrisinÄt Å”o problÄmu.
MÅ«su DevDays projekta mÄrÄ·is bija pievienot Telegram darbvirsmas klientam (turpmÄk tekstÄ Telegram Desktop) iespÄju tulkot saÅemtos balss ziÅojumus tekstÄ.
Visi analogi Å”obrÄ«d ir robotprogrammatÅ«ras, kurÄm varat nosÅ«tÄ«t audio ziÅojumu un saÅemt atbildes tekstu. MÄs ar to neesam ļoti apmierinÄti: ziÅojuma pÄrsÅ«tÄ«Å”ana robotam nav Ä«paÅ”i Ärta; mÄs vÄlÄtos, lai bÅ«tu vietÄjÄ funkcionalitÄte. TurklÄt jebkura robotprogrammatÅ«ra ir treÅ”Ä puse, kas darbojas kÄ starpnieks starp runas atpazÄ«Å”anas API un lietotÄju, un tas ir vismaz nedroÅ”i.
KÄ minÄts iepriekÅ”, telegrammas darbvirsmai ir divas bÅ«tiskas priekÅ”rocÄ«bas: darbÄ«bas vienkÄrŔība un Ätrums. Un tÄ nav nejauŔība, jo tas ir pilnÄ«bÄ uzrakstÄ«ts C++ valodÄ. Un tÄ kÄ mÄs nolÄmÄm pievienot jaunu funkcionalitÄti tieÅ”i klientam, mums tÄ bija jÄizstrÄdÄ C++.
MÅ«su komandÄ bija 4 cilvÄki. SÄkotnÄji divi cilvÄki meklÄja piemÄrotu bibliotÄku runas atpazÄ«Å”anai, viens studÄja Telegram-desktop pirmkodu, cits izvietoja bÅ«vprojektu.
Å Ä·ita, ka iecerÄtÄs funkcionalitÄtes ievieÅ”ana nesagÄdÄs grÅ«tÄ«bas, taÄu, kÄ jau vienmÄr, radÄs grÅ«tÄ«bas.
ProblÄmas risinÄjums sastÄvÄja no diviem neatkarÄ«giem apakÅ”uzdevumiem: piemÄrota runas atpazÄ«Å”anas rÄ«ka izvÄle un UI ievieÅ”ana jaunai funkcionalitÄtei.
IzvÄloties bibliotÄku balss atpazÄ«Å”anai, mums nekavÄjoties bija jÄatsakÄs no visÄm bezsaistes API, jo valodu modeļi aizÅem daudz vietas. Bet mÄs runÄjam tikai par vienu valodu. Kļuva skaidrs, ka mums bÅ«s jÄizmanto tieÅ”saistes API. VÄlÄk izrÄdÄ«jÄs, ka tÄdu gigantu kÄ Google, Yandex un Microsoft runas atpazÄ«Å”anas pakalpojumi nebÅ«t nav bezmaksas, un mums bÅ«s jÄsamierinÄs ar izmÄÄ£inÄjuma periodu. RezultÄtÄ tika izvÄlÄts Google Speech-To-Text, jo tas ļauj iegÅ«t pakalpojuma izmantoÅ”anas marÄ·ieri, kas kalpos veselu gadu.
Otra problÄma, ar kuru saskÄrÄmies, ir saistÄ«ta ar dažiem C++ trÅ«kumiem - dažÄdu bibliotÄku zoodÄrzs, ja nav centralizÄtas repozitorijas. GadÄs, ka Telegram Desktop ir atkarÄ«ga no daudzÄm citÄm versijÄm raksturÄ«gÄm bibliotÄkÄm. OficiÄlajÄ repozitorijÄ ir
Pati Telegram Desktop salikÅ”ana prasa diezgan ilgu laiku: klÄpjdatorÄ ar Intel Core i5-7200U pilnÄ«ga montÄža (karogs -j 4) ar visÄm atkarÄ«bÄm aizÅem apmÄram trÄ«s stundas. No tÄm aptuveni 30 minÅ«tes aizÅem paÅ”a klienta saistÄ«Å”ana (vÄlÄk izrÄdÄ«jÄs, ka Debug konfigurÄcijÄ saistÄ«Å”ana aizÅem apmÄram 10 minÅ«tes), bet sasaistes posms ir jÄatkÄrto katru reizi pÄc izmaiÅu veikÅ”anas.
Neskatoties uz problÄmÄm, izdevÄs realizÄt iecerÄto ideju, kÄ arÄ« atjauninÄt
MÅ«suprÄt, tas izrÄdÄ«jÄs labs Proof of Concept funkcionalitÄtei, kas bÅ«tu Ärts daudziem lietotÄjiem. MÄs ceram to redzÄt nÄkamajos Telegram Desktop laidienos.
Uzlabots dabiskÄs valodas atbalsts pakalpojumÄ IntelliJ IDEA
Idejas autors
Tankovs Vladislavs
Sarindoties
Tankovs Vladislavs (komandas vadÄ«tÄjs, strÄdÄ ar LanguageTool un IntelliJ IDEA)
Å
ikita Sokolovs (strÄdÄ ar LanguageTool un veido lietotÄja saskarni)
Khvorovs Aleksandrs (strÄdÄ ar LanguageTool un optimizÄ veiktspÄju)
SadovÅikovs Aleksandrs (atbalsts iezÄ«mÄÅ”anas valodu un koda parsÄÅ”anai)
MÄs esam izstrÄdÄjuÅ”i IntelliJ IDEA spraudni, kas pÄrbauda dažÄdu tekstu (komentÄrus un dokumentÄciju, burtiskas rindiÅas kodÄ, tekstu, kas formatÄts Markdown vai XML marÄ·ÄjumÄ) gramatikas, pareizrakstÄ«bas un stilistiskÄ precizitÄtei (angļu valodÄ to sauc par korektÅ«ru).
Projekta ideja bija paplaÅ”inÄt standarta pareizrakstÄ«bas pÄrbaudi IntelliJ IDEA lÄ«dz Grammarly mÄrogam, lai IDE iekÅ”ienÄ izveidotu sava veida gramatiku.
Var redzÄt, kas noticis
TÄlÄk mÄs sÄ«kÄk runÄsim par spraudÅa iespÄjÄm, kÄ arÄ« par grÅ«tÄ«bÄm, kas radÄs tÄ izveides laikÄ.
MotivÄcija
Ir daudzi produkti, kas paredzÄti teksta rakstÄ«Å”anai dabiskÄs valodÄs, bet dokumentÄcija un koda komentÄri visbiežÄk tiek rakstÄ«ti izstrÄdes vidÄs. TajÄ paÅ”Ä laikÄ IDE lieliski var atrast kļūdas kodÄ, taÄu tie ir slikti piemÄroti tekstiem dabiskÄs valodÄs. TÄdÄjÄdi ir ļoti viegli pieļaut kļūdas gramatikÄ, pieturzÄ«mÄs vai stilÄ, izstrÄdes vide uz tÄm nenorÄdot. VisbÅ«tiskÄk ir kļūdÄ«ties, rakstot lietotÄja interfeisu, jo tas ietekmÄs ne tikai koda saprotamÄ«bu, bet arÄ« paÅ”us izstrÄdÄtÄs lietojumprogrammas lietotÄjus.
Viena no populÄrÄkajÄm un attÄ«stÄ«tÄkajÄm izstrÄdes vidÄm ir IntelliJ IDEA, kÄ arÄ« IDE, kuru pamatÄ ir IntelliJ platforma. IntelliJ Platform jau ir iebÅ«vÄts pareizrakstÄ«bas pÄrbaudÄ«tÄjs, taÄu tas neatbrÄ«vojas pat no visvienkÄrÅ”ÄkajÄm gramatikas kļūdÄm. MÄs nolÄmÄm integrÄt vienu no populÄrajÄm dabiskÄs valodas analÄ«zes sistÄmÄm IntelliJ IDEA.
IevieŔana
MÄs neizvirzÄ«jÄm sev uzdevumu izveidot savu teksta pÄrbaudes sistÄmu, tÄpÄc izmantojÄm esoÅ”u risinÄjumu. VispiemÄrotÄkais variants izrÄdÄ«jÄs
SpraudÅa kods ir ievadÄ«ts
Grūtības
Diezgan Ätri sapratÄm, ka, ja katru reizi ievadÄ«sim visu tekstu LanguageTool pÄrbaudei, tad IDEA interfeiss iesaldÄs uz jebkuru vairÄk vai mazÄk nopietnu tekstu, jo pati pÄrbaude bloÄ·Ä lietotÄja interfeisa plÅ«smu. ProblÄma tika atrisinÄta, izmantojot `ProgressManager.checkCancelled` pÄrbaudi - Ŕī funkcija rada izÅÄmumu, ja IDEA uzskata, ka ir pienÄcis laiks pÄrtraukt pÄrbaudi.
Tas pilnÄ«bÄ novÄrsa sasalÅ”anu, taÄu to nav iespÄjams izmantot: teksta apstrÄde aizÅem ļoti ilgu laiku. TurklÄt mÅ«su gadÄ«jumÄ visbiežÄk mainÄs ļoti maza teksta daļa un mÄs vÄlamies kaut kÄ saglabÄt rezultÄtus keÅ”atmiÅÄ. TieÅ”i tÄ mÄs arÄ« darÄ«jÄm. Lai nepÄrbaudÄ«tu visu katru reizi, mÄs deterministiski sadalÄ«jÄm tekstu gabalos un pÄrbaudÄ«jÄm tikai tos, kas bija mainÄ«juÅ”ies. TÄ kÄ teksti var bÅ«t lieli un mÄs negribÄjÄm ielÄdÄt keÅ”atmiÅu, mÄs saglabÄjÄm nevis paÅ”us tekstus, bet gan to jaucÄjus. Tas ļÄva spraudnim nevainojami darboties pat lielos failos.
LanguageTool atbalsta vairÄk nekÄ 25 valodas, taÄu maz ticams, ka kÄdam lietotÄjam tÄs visas ir vajadzÄ«gas. Es gribÄju dot iespÄju pÄc pieprasÄ«juma lejupielÄdÄt bibliotÄkas konkrÄtai valodai (ja atzÄ«mÄjat to lietotÄja saskarnÄ). MÄs pat to ieviesÄm, taÄu tas izrÄdÄ«jÄs pÄrÄk sarežģīti un neuzticami. Jo Ä«paÅ”i mums bija jÄielÄdÄ LanguageTool ar jaunu valodu komplektu, izmantojot atseviŔķu klases ielÄdÄtÄju, un pÄc tam rÅ«pÄ«gi jÄinicializÄ. TajÄ paÅ”Ä laikÄ visas bibliotÄkas atradÄs lietotÄja .m2 repozitorijÄ, un katrÄ sÄkumÄ mums bija jÄpÄrbauda to integritÄte. Galu galÄ mÄs nolÄmÄm, ka, ja lietotÄjiem bÅ«s problÄmas ar spraudÅa lielumu, mÄs nodroÅ”inÄsim atseviŔķu spraudni vairÄkÄm populÄrÄkajÄm valodÄm.
PÄc hakatona
Hakatons beidzÄs, bet darbs pie spraudÅa turpinÄjÄs Å”aurÄkÄ komandÄ. Es gribÄju atbalstÄ«t virknes, komentÄrus un pat valodas konstrukcijas, piemÄram, mainÄ«go un klaÅ”u nosaukumus. PaÅ”laik tas tiek atbalstÄ«ts tikai Java, Kotlin un Python, taÄu mÄs ceram, ka Å”is saraksts paplaÅ”inÄsies. MÄs esam izlabojuÅ”i daudz mazu kļūdu un kļuvuÅ”i saderÄ«gÄki ar Idea iebÅ«vÄto pareizrakstÄ«bas pÄrbaudÄ«tÄju. TurklÄt ir parÄdÄ«jies XML atbalsts un pareizrakstÄ«bas pÄrbaude. Tas viss ir atrodams otrajÄ versijÄ, kuru mÄs nesen publicÄjÄm.
Ko tÄlÄk?
Å Äds spraudnis var bÅ«t noderÄ«gs ne tikai izstrÄdÄtÄjiem, bet arÄ« tehniskajiem rakstniekiem (bieži strÄdÄjot, piemÄram, ar XML IDE). Katru dienu viÅiem ir jÄstrÄdÄ ar dabisko valodu, bez palÄ«ga redaktora padomu veidÄ par iespÄjamÄm kļūdÄm. MÅ«su spraudnis sniedz Å”Ädus padomus un dara to ar augstu precizitÄtes pakÄpi.
MÄs plÄnojam izstrÄdÄt spraudni, gan pievienojot jaunas valodas, gan izpÄtot vispÄrÄ«gu pieeju teksta pÄrbaudes organizÄÅ”anai. MÅ«su tuvÄkajos plÄnos ietilpst stilistisko profilu (noteikumu kopas, kas nosaka stila rokasgrÄmatu tekstam, piemÄram, ānerakstiet, bet rakstiet pilnu formuā) ievieÅ”anu, vÄrdnÄ«cas paplaÅ”inÄÅ”anu un lietotÄja interfeisa uzlaboÅ”anu (jo Ä«paÅ”i, mÄs vÄlamies dot lietotÄjam iespÄju ne tikai ignorÄt vÄrdu, bet arÄ« pievienot to vÄrdnÄ«cai, norÄdot runas daļu).
Avots: www.habr.com