DevDays'19 Hackathon (Bahin 2): Voice Message Parser para sa Telegram ug Grammar Checker sa IntelliJ IDEA

Nagpadayon kami sa paghisgot bahin sa mga proyekto sa spring hackathon DevDays, diin ang mga estudyante sa programa sa master miapil. "Pagpalambo sa Software / Software Engineering".

Hackathon DevDays'19 (bahin 2): audio message parser para sa Telegram ug pagsusi sa gramatika sa IntelliJ IDEA

Pinaagi sa dalan, gusto namong imbitahon ang mga magbabasa sa pag-apil VK nga grupo sa mga estudyante sa master. Niini atong imantala ang pinakabag-o nga balita mahitungod sa pagrekrut ug pagtuon. Ang usa ka video gikan sa bukas nga adlaw makita usab sa grupo. Kami nagpahinumdom kanimo: ang kalihokan mahitabo sa Abril 29, mga detalye Online.

Parser sa Mensahe sa Tingog sa Telegram Desktop

Hackathon DevDays'19 (bahin 2): audio message parser para sa Telegram ug pagsusi sa gramatika sa IntelliJ IDEA

Awtor sa ideya
Khoroshev Artyom

Paglinya

Khoroshev Artem – project manager/developer/QA
Eliseev Anton - analista sa negosyo / espesyalista sa marketing
Maria Kuklina – UI designer/developer
Bakhvalov Pavel – UI designer/developer/QA

Gikan sa among panglantaw, ang Telegram usa ka moderno ug kombenyente nga mensahero, ug ang bersyon sa PC niini popular ug bukas nga tinubdan, nga nagpaposible sa pag-usab niini. Nagtanyag ang kliyente nga adunay daghang pag-andar. Dugang pa sa standard nga mga text message, kini adunay mga voice call, video message, ug voice message. Ug kini ang ulahi nga usahay magdala og kahasol sa ilang nakadawat. Kasagaran dili posible nga maminaw sa usa ka voice message samtang naa sa kompyuter o laptop. Mahimong adunay kasaba sa palibot, kakulang sa mga headphone, o dili nimo gusto nga adunay makadungog sa sulud sa mensahe. Ang ingon nga mga problema hapit dili motungha kung mogamit ka sa Telegram sa usa ka smartphone, tungod kay mahimo ra nimo kini dad-on sa imong dalunggan, dili sama sa usa ka laptop o PC. Kami naningkamot sa pagsulbad niini nga problema.

Ang tumong sa among proyekto sa DevDays mao ang pagdugang sa abilidad sa paghubad sa nadawat nga voice messages ngadto sa text ngadto sa Telegram desktop client (gitawag dinhi nga Telegram Desktop).

Ang tanan nga mga analogue sa pagkakaron mga bot nga mahimo nimong ipadala ang usa ka mensahe sa audio ug makadawat usa ka teksto agig tubag. Dili kaayo kami nalipay niini: ang pagpasa sa usa ka mensahe sa usa ka bot dili kaayo kombenyente; gusto namon nga adunay lumad nga gamit. Dugang pa, ang bisan unsang bot usa ka ikatulo nga partido nga naglihok isip tigpataliwala tali sa API sa pag-ila sa sinultihan ug sa tiggamit, ug kini, sa labing gamay, dili luwas.

Sama sa nahisgotan na sa sayo pa, ang telegram-desktop adunay duha ka mahinungdanong bentaha: kasayon ​​ug katulin sa operasyon. Ug kini dili sulagma, tungod kay kini gisulat sa hingpit sa C ++. Ug tungod kay nakahukom kami nga idugang ang bag-ong kagamitan nga direkta sa kliyente, kinahanglan namon nga pauswagon kini sa C++.

Hackathon DevDays'19 (bahin 2): audio message parser para sa Telegram ug pagsusi sa gramatika sa IntelliJ IDEAAdunay 4 ka tawo sa among team. Sa sinugdan, duha ka tawo ang nangita alang sa usa ka angay nga librarya alang sa pag-ila sa sinultihan, usa ka tawo ang nagtuon sa source code sa Telegram-desktop, ang lain nag-deploy sa proyekto sa pagtukod. Telegram Desktop. Sa ulahi, ang tanan nagkapuliki sa pag-ayo sa UI ug pag-debug.

Ingon og ang pagpatuman sa gituyo nga pagpaandar dili lisud, apan, sama sa kanunay nga mahitabo, ang mga kalisud mitungha.

Ang solusyon sa problema naglangkob sa duha ka independente nga mga subtasks: pagpili sa usa ka angay nga himan sa pag-ila sa sinultihan ug pagpatuman sa usa ka UI alang sa bag-ong gamit.

Kung nagpili usa ka librarya alang sa pag-ila sa tingog, kinahanglan namon nga biyaan dayon ang tanan nga mga offline nga API, tungod kay ang mga modelo sa lengguwahe adunay daghang espasyo. Apan usa lang ka lengguwahe ang atong ginahisgotan. Naklaro nga kinahanglan namong gamiton ang online nga API. Sa ulahi nahibal-an nga ang mga serbisyo sa pag-ila sa sinultihan sa mga higante sama sa Google, Yandex ug Microsoft dili gyud libre, ug kinahanglan nga makontento kami sa usa ka panahon sa pagsulay. Ingon usa ka sangputanan, gipili ang Google Speech-To-Text tungod kay gitugotan ka nga makakuha usa ka timaan sa paggamit sa serbisyo, nga molungtad sa usa ka tuig.

Ang ikaduha nga problema nga among nasugatan may kalabutan sa pipila ka mga kakulangan sa C ++ - usa ka zoo sa lainlaing mga librarya kung wala ang usa ka sentralisadong repositoryo. Nahitabo nga ang Telegram Desktop nagsalig sa daghang uban pang mga librarya nga piho nga bersyon. Ang opisyal nga repository adunay manwal alang sa pag-assemble sa proyekto. Ug usab daghang daghang bukas nga mga isyu bahin sa mga problema sa pagtukod, pananglitan mga panahon ΠΈ duha ka. Ang tanan nga mga problema nahimo nga may kalabutan sa kamatuoran nga ang script sa pagtukod gisulat alang sa Ubuntu 14.04, ug aron malampuson nga magtukod og telegrama sa ilawom sa Ubuntu 18.04, kinahanglan nga himuon ang mga pagbag-o.

Ang Telegram Desktop mismo nagkinahanglan og taas nga panahon sa pag-assemble: sa usa ka laptop nga adunay Intel Core i5-7200U, ang kompleto nga asembliya (flag -j 4) uban sa tanan nga mga dependency nagkinahanglan og mga tulo ka oras. Niini, mga 30 ka minuto ang gikuha pinaagi sa pag-link sa kliyente mismo (sa ulahi nahimo nga sa pag-configure sa Debug, ang pag-link mokabat mga 10 minuto), apan ang yugto sa pag-link kinahanglan nga gisubli matag higayon pagkahuman sa paghimo sa mga pagbag-o.

Bisan pa sa mga problema, nakahimo kami sa pagpatuman sa gipanamkon nga ideya, ingon man usab sa pag-update paghimo og script alang sa Ubuntu 18.04. Ang usa ka pasundayag sa trabaho makita sa link. Naglakip usab kami daghang mga animation. Usa ka buton ang nagpakita sunod sa tanan nga mga mensahe sa tingog, nga nagtugot kanimo sa paghubad sa mensahe ngadto sa teksto. Pinaagi sa pag-right-click, mahimo nimong ipiho ang pinulongan nga gamiton alang sa pagsibya. Pinaagi sa link kliyente nga magamit alang sa pag-download.

Repositoryo.

Sa among opinyon, kini nahimo nga usa ka maayo nga Pamatuod sa Konsepto sa pagpaandar nga mahimong kombenyente alang sa daghang mga tiggamit. Naglaum kami nga makita kini sa umaabot nga pagpagawas sa Telegram Desktop.

Gipauswag nga Suporta sa Natural nga Pinulongan sa IntelliJ IDEA

Hackathon DevDays'19 (bahin 2): audio message parser para sa Telegram ug pagsusi sa gramatika sa IntelliJ IDEA

Awtor sa ideya

Tankov Vladislav

Paglinya

Tankov Vladislav (pangulo sa team, nagtrabaho kauban ang LanguageTool ug IntelliJ IDEA)
Nikita Sokolov (nagtrabaho uban sa LanguageTool ug naghimo sa UI)
Khvorov Alexander (nagtrabaho uban sa LanguageTool ug pag-optimize sa performance)
Sadovnikov Alexander (suporta alang sa pag-parse sa mga markup nga mga pinulongan ug code)

Naghimo kami og plugin alang sa IntelliJ IDEA nga nagsusi sa nagkalain-laing mga teksto (komento ug dokumentasyon, literal nga mga linya sa code, teksto nga giporma sa Markdown o XML markup) alang sa gramatika, spelling ug stylistic accuracy (sa English gitawag kini nga proofreading).

Ang ideya sa proyekto mao ang pagpalapad sa standard spellcheck IntelliJ IDEA ngadto sa sukod sa Grammarly, aron makahimo og usa ka matang sa Grammarly sulod sa IDE.

Makita nimo kung unsa ang nahitabo link.

Aw, sa ubos maghisgot kami sa mas detalyado bahin sa mga kapabilidad sa plugin, ingon man ang mga kalisud nga mitungha sa panahon sa paghimo niini.

Pag-awhag

Adunay daghang mga produkto nga gidisenyo alang sa pagsulat sa teksto sa natural nga mga pinulongan, apan ang dokumentasyon ug mga komentaryo sa code kasagarang gisulat sa mga development environment. Sa samang higayon, ang mga IDE naghimo sa usa ka maayo kaayo nga trabaho sa pagpangita sa mga sayup sa code, apan dili maayo nga haum alang sa mga teksto sa natural nga mga pinulongan. Kini nakapasayon ​​kaayo sa paghimo og mga sayop sa gramatika, punctuation, o estilo nga walay development environment nga nagpunting niini. Labing hinungdanon nga masayop sa pagsulat sa interface sa gumagamit, tungod kay makaapekto kini dili lamang sa pagkasabut sa code, apan usab sa mga tiggamit sa naugmad nga aplikasyon mismo.

Usa sa pinakasikat ug naugmad nga development environment mao ang IntelliJ IDEA, ingon man ang mga IDE base sa IntelliJ Platform. Ang IntelliJ Platform aduna nay built-in nga spellchecker, apan dili kini makapawala bisan sa pinakasimple nga gramatika nga mga sayop. Nakahukom kami nga i-integrate ang usa sa popular nga natural nga mga sistema sa pagtuki sa pinulongan ngadto sa IntelliJ IDEA.

Pagpatuman

Hackathon DevDays'19 (bahin 2): audio message parser para sa Telegram ug pagsusi sa gramatika sa IntelliJ IDEAWala namo gibutang ang among kaugalingon sa tahas sa paghimo sa among kaugalingon nga sistema sa pag-verify sa teksto, mao nga migamit kami og kasamtangan nga solusyon. Ang labing angay nga kapilian nahimo nga Lengguahe sa Sinultian. Ang lisensya nagtugot kanamo sa gawasnon nga paggamit niini alang sa among mga katuyoan: kini libre, gisulat sa Java ug open-source. Dugang pa, gisuportahan niini ang 25 nga mga sinultian ug gipauswag sa kapin sa kinse ka tuig. Bisan pa sa pagkabukas niini, ang LanguageTool usa ka seryoso nga kakompetensya sa bayad nga mga solusyon sa pag-verify sa teksto, ug ang kamatuoran nga mahimo kini nga magtrabaho sa lokal mao ang literal nga makapatay nga bahin niini.

Ang plugin code anaa sa mga repositoryo sa GitHub. Ang tibuuk nga proyekto gisulat sa Kotlin nga adunay gamay nga pagdugang sa Java alang sa UI. Atol sa hackathon, nakahimo kami sa pagpatuman sa suporta alang sa Markdown, JavaDoc, HTML ug Plain Text. Human sa hackathon, usa ka mayor nga update ang midugang og suporta para sa XML, string literals sa Java, Kotlin ug Python, ug spell checking.

Mga kalisdanan

Dali ra namong naamgohan nga kung among ipakaon ang tanan nga teksto sa LanguageTool alang sa inspeksyon matag higayon, ang interface sa IDEA mag-freeze sa bisan unsang labi pa o dili kaayo seryoso nga teksto, tungod kay ang pag-inspeksyon mismo nagbabag sa dagan sa UI. Nasulbad ang problema pinaagi sa tseke nga `ProgressManager.checkCancelled` - kini nga function nagpagawas ug eksepsiyon kung ang IDEA nagtuo nga panahon na nga i-abort ang inspeksyon.

Kini hingpit nga nagwagtang sa mga pagyelo, apan imposible nga gamiton: ang teksto nagkinahanglan og taas nga panahon sa pagproseso. Dugang pa, sa among kaso, kasagaran usa ka gamay nga bahin sa mga pagbag-o sa teksto ug gusto namon nga i-cache ang mga resulta sa bisan unsang paagi. Mao gyud na among gibuhat. Aron dili masusi ang tanan sa matag higayon, among gibahin ang teksto ngadto sa mga piraso ug gisusi lamang ang mga nausab. Tungod kay ang mga teksto mahimong dako ug dili namo gusto nga i-load ang cache, among gitipigan dili ang mga teksto mismo, apan ang ilang mga hash. Gitugotan niini ang plugin nga molihok nga hapsay bisan sa dagkong mga file.

Ang LanguageTool nagsuporta ug labaw sa 25 ka lengguwahe, apan dili tingali nga adunay usa ka user nga nagkinahanglan niining tanan. Gusto nako nga hatagan ang higayon nga mag-download sa mga librarya alang sa usa ka piho nga lengguwahe kung gihangyo (kung gimarkahan nimo kini sa UI). Giimplementar pa gani namo kini, apan kini nahimong komplikado kaayo ug dili kasaligan. Sa partikular, kinahanglan namon nga i-load ang LanguageTool sa usa ka bag-ong hugpong sa mga lengguwahe gamit ang usa ka bulag nga tigkarga sa klase, ug dayon mabinantayon nga unahon kini. Sa samang higayon, ang tanan nga mga librarya anaa sa usa ka user .m2 repository, ug sa matag pagsugod kinahanglan namong susihon ang ilang integridad. Sa katapusan, nakahukom kami nga kung ang mga tiggamit adunay mga problema sa gidak-on sa plugin, nan maghatag kami usa ka lahi nga plugin alang sa daghang labing inila nga mga sinultian.

Pagkahuman sa hackathon

Ang hackathon natapos, apan ang pagtrabaho sa plugin nagpadayon sa usa ka mas pig-ot nga grupo. Gusto nako nga suportahan ang mga string, komento, ug bisan ang mga pagtukod sa pinulongan sama sa variable ug mga ngalan sa klase. Sa pagkakaron kini gisuportahan lamang alang sa Java, Kotlin ug Python, apan nanghinaut kami nga kini nga lista motubo. Giayo namo ang daghang gagmay nga mga bug ug nahimong mas compatible sa built-in nga spell checker sa Idea. Dugang pa, mitungha ang suporta sa XML ug spell check. Kining tanan makita sa ikaduhang bersyon, nga among gimantala bag-o lang.

Unsay sunod?

Ang ingon nga usa ka plugin mahimong mapuslanon dili lamang alang sa mga developer, kondili alang usab sa mga teknikal nga magsusulat (kasagaran nagtrabaho, pananglitan, uban sa XML sa usa ka IDE). Matag adlaw kinahanglan nila nga magtrabaho uban ang natural nga sinultian, nga wala’y katabang sa porma sa mga tip sa editor bahin sa posible nga mga sayup. Naghatag ang among plugin sa ingon nga mga pahiwatig ug gihimo kini nga adunay taas nga lebel sa katukma.
Nagplano kami nga pauswagon ang plugin, pinaagi sa pagdugang bag-ong mga pinulongan ug pinaagi sa pagsuhid sa usa ka kinatibuk-ang pamaagi sa pag-organisar sa pagsusi sa teksto. Ang among diha-diha nga mga plano naglakip sa pagpatuman sa mga estilista nga mga profile (mga hugpong sa mga lagda nga naghubit sa usa ka estilo nga giya alang sa teksto, pananglitan, "ayaw pagsulat pananglitan, apan isulat ang tibuok nga porma"), pagpalapad sa diksyonaryo ug pagpaayo sa user interface (sa partikular, gusto namong hatagan ang tiggamit ug higayon nga dili lang ibalewala ang usa ka pulong, apan idugang kini sa diksyonaryo, nga nagpakita sa bahin sa pagsulti).

Tinubdan: www.habr.com

Idugang sa usa ka comment