Hackathon DevDays'19 (Deel 2): ​​Audio Message Parser fir Telegramm a Grammatik iwwerpréift an IntelliJ IDEA

Mir schwätze weider iwwer d'Projete vum Fréijoershackathon DevDays, an deem Studenten vum Masterprogramm matgemaach hunn "Software Entwécklung / Software Engineering".

Hackathon DevDays'19 (Deel 2): ​​Audio Message Parser fir Telegramm a Grammatik iwwerpréift an IntelliJ IDEA

Mir wëllen iwwregens d'Lieser invitéieren fir matzemaachen VK Grupp vu Masterstudenten. An et wäerte mir déi lescht Neiegkeeten iwwer Recrutement a Studie publizéieren. E Video vun der Porte Ouverte fënnt een och am Grupp. Mir erënneren Iech: d'Evenement fënnt den 29. Abrëll statt, Detailer online.

Telegram Desktop Stëmm Message Parser

Hackathon DevDays'19 (Deel 2): ​​Audio Message Parser fir Telegramm a Grammatik iwwerpréift an IntelliJ IDEA

Idea Autor
Khoroshev Artyom

Opstellen

Khoroshev Artem - Projet Manager / Entwéckler / QA
Eliseev Anton - Business Analyst / Marketing Spezialist
Maria Kuklina - UI Designer / Entwéckler
Bakhvalov Pavel - UI Designer / Entwéckler / QA

Aus eiser Siicht ass Telegram e modernen a praktesche Messenger, a seng PC Versioun ass populär an Open Source, wat et méiglech mécht et z'änneren. De Client bitt zimlech räich Funktionalitéit. Zousätzlech zu Standard SMSen, enthält et Stëmm Appellen, Video Messagen, a Stëmm Messagen. An et ass déi lescht, déi heiansdo Onbequemlechkeet fir hiren Empfänger bréngen. Et ass dacks net méiglech eng Stëmmmeldung ze lauschteren wärend Dir um Computer oder Laptop sidd. Et kann Ëmfeld Kaméidi sinn, Mangel un Kopfhörer, oder Dir wëllt net datt iergendeen den Inhalt vun der Noriicht héiert. Esou Problemer entstinn bal ni wann Dir Telegram op engem Smartphone benotzt, well Dir kënnt et einfach an d'Ouer bréngen, am Géigesaz zu engem Laptop oder PC. Mir hu probéiert dëse Problem ze léisen.

D'Aufgab vun eisem Projet bei DevDays war fir den Telegram Desktop Client (nodréiglech Telegram Desktop) d'Fäegkeet ze addéieren fir erhalen Stëmmmeldungen an Text ze iwwersetzen.

All Analoga sinn am Moment Bots op déi Dir en Audio Message schécken an en Text als Äntwert kréien. Mir sinn net ganz zefridden mat dësem: e Message un e Bot weiderginn ass net ganz bequem; mir géife gär gebierteg Funktionalitéit hunn. Zousätzlech ass all Bot eng Drëtt Partei déi als Tëschestatioun tëscht der Riederkennungs-API an dem Benotzer handelt, an dëst ass op e Minimum onsécher.

Wéi virdru scho gesot, Telegram-Desktop huet zwee bedeitend Virdeeler: Liichtegkeet a Geschwindegkeet vun der Operatioun. An dat ass keen Zoufall, well et ass ganz an C++ geschriwwen. A well mir décidéiert hunn nei Funktionalitéit direkt un de Client ze addéieren, hu mir et missen an C ++ entwéckelen.

Hackathon DevDays'19 (Deel 2): ​​Audio Message Parser fir Telegramm a Grammatik iwwerpréift an IntelliJ IDEAEt waren 4 Leit an eiser Equipe. Am Ufank hunn zwee Leit no enger passender Bibliothéik fir Riederkennung gesicht, eng Persoun huet de Quellcode vum Telegram-Desktop studéiert, eng aner huet de Bauprojet ofgesat Telegram Desktop. Méi spéit war jidderee beschäftegt d'UI ze fixéieren an ze Debuggen.

Et huet geschéngt datt d'Ëmsetzung vun der virgesinner Funktionalitéit net schwéier wier, awer, wéi ëmmer geschitt, sinn Schwieregkeeten entstanen.

D'Léisung fir de Problem bestoung aus zwee onofhängegen Ënneraufgaben: Wielt e passende Riederkennungsinstrument an d'Ëmsetzung vun engem UI fir nei Funktionalitéit.

Wann mir eng Bibliothéik fir Stëmmerkennung auswielen, hu mir direkt all offline APIen missen opginn, well Sproochmodeller vill Plaz ophuelen. Mä mir schwätzen iwwer nëmmen eng Sprooch. Et gouf kloer datt mir den Online API musse benotzen. Méi spéit huet sech erausgestallt datt d'Riederkennungsservicer vu Risen wéi Google, Yandex a Microsoft guer net gratis sinn, a mir mussen mat enger Testperiod zefridde sinn. Als Resultat gouf Google Speech-To-Text gewielt well et Iech erlaabt en Token ze kréien fir de Service ze benotzen, deen e ganzt Joer dauert.

Den zweete Problem, dee mir begéint hunn, ass mat e puer vun de Mängel vum C ++ verbonnen - en Zoo vu verschiddene Bibliothéiken an der Verontreiung vun engem zentraliséierte Repository. Et geschitt sou datt Telegram Desktop vu villen anere Versiounsspezifesche Bibliothéiken hänkt. Den offiziellen Repository huet manuell fir de Projet ze montéieren. An och eng grouss Zuel vun oppen Themen iwwer Bauproblemer, zum Beispill Zäiten и два. All d'Problemer hu sech mat der Tatsaach erausgestallt datt de Build-Skript fir Ubuntu 14.04 geschriwwe gouf, a fir erfollegräich Telegramm ënner Ubuntu 18.04 ze bauen, mussten Ännerunge gemaach ginn.

Telegram Desktop selwer hëlt zimmlech laang Zäit fir ze montéieren: op engem Laptop mat engem Intel Core i5-7200U, komplett Assemblée (Fändel -j 4) mat all Ofhängegkeeten dauert ongeféier dräi Stonnen. Vun dësen ginn ongeféier 30 Minutten geholl andeems de Client selwer verlinkt (spéider huet sech erausgestallt datt an der Debug Konfiguratioun de Verknëppung ongeféier 10 Minutten dauert), awer d'Verknëppungsstadium muss all Kéier widderholl ginn nodeems Dir Ännerunge gemaach hutt.

Trotz de Probleemer hu mir et fäerdeg bruecht déi konzipéiert Iddi ëmzesetzen, souwéi ze aktualiséieren bauen Schrëft fir Ubuntu 18.04. Eng Demonstratioun vun der Aarbecht kann op gesi ginn Link. Mir enthalen och verschidden Animatiounen. E Knäppchen ass nieft all Stëmmmeldungen opgetaucht, wat Iech erlaabt de Message an Text ze iwwersetzen. Andeems Dir riets klickt, kënnt Dir zousätzlech d'Sprooch spezifizéieren déi fir d'Sendung benotzt gëtt. Vun Link Client verfügbar fir erofzelueden.

Repository.

An eiser Meenung no huet et sech als e gudde Proof of Concept vu Funktionalitéit erausgestallt, déi fir vill Benotzer praktesch wier. Mir hoffen et an zukünfteg Verëffentlechunge vum Telegram Desktop ze gesinn.

Verbesserte natierlech Sprooch Ënnerstëtzung an IntelliJ IDEA

Hackathon DevDays'19 (Deel 2): ​​Audio Message Parser fir Telegramm a Grammatik iwwerpréift an IntelliJ IDEA

Idea Autor

Tankov Vladislav

Opstellen

Tankov Vladislav (Team Lead, schafft mat LanguageTool an IntelliJ IDEA)
Nikita Sokolov (schafft mat LanguageTool an erstellt UI)
Khvorov Alexander (schafft mat LanguageTool an optiméiert Leeschtung)
Sadovnikov Alexander (Ënnerstëtzung fir Parsing Markup Sproochen a Code)

Mir hunn e Plugin fir IntelliJ IDEA entwéckelt deen verschidden Texter (Kommentaren an Dokumentatioun, wuertwiertlech Zeilen am Code, Text formatéiert an Markdown oder XML Markup) iwwerpréift fir grammatesch, Schreifweis a stilistesch Genauegkeet (op Englesch gëtt dëst Korrekturliesen genannt).

D'Iddi vum Projet war de Standard Spellcheck IntelliJ IDEA op d'Skala vu Grammarly auszebauen, fir eng Zort Grammarly bannent IDE ze maachen.

Dir kënnt gesinn wat geschitt ass Link.

Gutt, hei drënner wäerte mir méi detailléiert iwwer d'Fähigkeiten vum Plugin schwätzen, wéi och d'Schwieregkeeten, déi während senger Schafung entstoen.

Motivatioun

Et gi vill Produkter entworf fir Text an natierleche Sproochen ze schreiwen, awer Dokumentatioun a Codekommentarer gi meeschtens an Entwécklungsëmfeld geschriwwen. Zur selwechter Zäit maachen IDEs eng exzellent Aarbecht fir Feeler am Code ze fannen, awer si schlecht fir Texter an natierleche Sprooche passend. Dëst mécht et ganz einfach Feeler a Grammatik, Punctuatioun oder Stil ze maachen ouni datt d'Entwécklungsëmfeld se weist. Et ass kritesch fir e Feeler beim Schreiwen vun der User-Interface ze maachen, well dëst net nëmmen d'Verständlechkeet vum Code beaflosst, awer och d'Benotzer vun der entwéckelter Applikatioun selwer.

Ee vun de populäersten an entwéckelten Entwécklungsëmfeld ass IntelliJ IDEA, souwéi IDEs baséiert op der IntelliJ Plattform. IntelliJ Plattform huet schonn en agebaute Spellchecker, awer et läscht net souguer déi einfachst grammatesch Feeler. Mir hunn decidéiert ee vun de populäre natierleche Sproochanalysesystemer an IntelliJ IDEA z'integréieren.

Ëmsetzung

Hackathon DevDays'19 (Deel 2): ​​Audio Message Parser fir Telegramm a Grammatik iwwerpréift an IntelliJ IDEAMir hunn eis net d'Aufgab gesat fir eisen eegenen Textverifizéierungssystem ze kreéieren, also hu mir eng existent Léisung benotzt. Déi gëeegent Optioun huet sech erausgestallt Sprooch Tool. D'Lizenz erlaabt eis et fräi fir eis Zwecker ze benotzen: et ass gratis, geschriwwe op Java an Open-Source. Zousätzlech ënnerstëtzt et 25 Sproochen an ass zënter méi wéi fofzéng Joer an der Entwécklung. Trotz senger Offenheet ass LanguageTool e seriöse Konkurrent fir bezuelte Textverifizéierungsléisungen, an d'Tatsaach datt et lokal ka funktionnéieren ass wuertwiertlech seng Killer Feature.

De Plugin Code ass an Repositories op GitHub. De ganze Projet gouf a Kotlin geschriwwen mat engem klengen Zousatz vu Java fir d'UI. Wärend dem Hackathon hu mir et fäerdeg bruecht Ënnerstëtzung fir Markdown, JavaDoc, HTML a Plain Text ëmzesetzen. Nom Hackathon huet e gréisseren Update Ënnerstëtzung fir XML bäigefüügt, Stringliteralen op Java, Kotlin a Python, a Rechtschreifkontrolle.

Schwieregkeeten

Zimlech séier hu mir gemierkt datt wa mir all Kéier den Text op LanguageTool fir Inspektioun fidderen, da wäert d'IDEA Interface op all méi oder manner seriösen Text afréieren, well d'Inspektioun selwer den UI Flow blockéiert. De Problem gouf duerch den `ProgressManager.checkCancelled` Scheck geléist - dës Funktioun werft eng Ausnam wann IDEA mengt datt et Zäit ass d'Inspektioun ofzebriechen.

Dëst huet d'Gefriess komplett eliminéiert, awer et ass onméiglech ze benotzen: den Text dauert ganz laang fir ze veraarbecht. Ausserdeem ännert sech an eisem Fall meeschtens e ganz klengen Deel vum Text a mir wëllen d'Resultater iergendwéi cacheieren. Dat ass genee wat mir gemaach hunn. Fir net all Kéier alles z'iwwerpréiwen, hu mir den Text deterministesch a Stécker opgedeelt an nëmmen déi iwwerpréift, déi geännert hunn. Well d'Texter grouss kënne sinn a mir de Cache net wollten lueden, hu mir net d'Texter selwer gespäichert, awer hir Hashes. Dëst huet de Plugin erlaabt och op grouss Dateien glat ze bedreiwen.

LanguageTool ënnerstëtzt méi wéi 25 Sproochen, awer et ass onwahrscheinlech datt ee Benotzer se all brauch. Ech wollt d'Méiglechkeet ginn op Ufro Bibliothéike fir eng spezifesch Sprooch erofzelueden (wann Dir et an der UI markéiert). Mir hunn dat souguer ëmgesat, awer et huet sech ze komplizéiert an onzouverlässeg gewisen. Besonnesch hu mir LanguageTool mat engem neie Set vu Sprooche mat engem getrennten Klasseloader ze lueden, an dann virsiichteg initialiséieren. Zur selwechter Zäit waren all d'Bibliothéiken an engem Benotzer .m2 Repository, a bei all Start hu mir hir Integritéit ze kontrolléieren. Zum Schluss hu mir décidéiert datt wann d'Benotzer Probleemer mat der Gréisst vum Plugin hunn, da géife mir e separaten Plugin fir e puer vun de populärste Sproochen ubidden.

Nom Hackathon

Den Hackathon ass eriwwer, awer d'Aarbecht um Plugin ass mat enger méi schmueler Equipe weidergaang. Ech wollt Strings, Kommentaren a souguer Sproochkonstruktioune wéi Variabel a Klassennimm ënnerstëtzen. De Moment gëtt dëst nëmme fir Java, Kotlin a Python ënnerstëtzt, awer mir hoffen datt dës Lëscht wäert wuessen. Mir hu vill kleng Bugs fixéiert a méi kompatibel mat Idea's agebaute Spellchecker ginn. Zousätzlech sinn XML-Ënnerstëtzung a Rechtschreifkontrolle erschéngen. All dëst kann an der zweeter Versioun fonnt ginn, déi mir viru kuerzem publizéiert hunn.

Wat d'nächst?

Esou e Plugin kann nëtzlech sinn net nëmme fir Entwéckler, awer och fir technesch Schrëftsteller (dacks schaffen, zum Beispill, mat XML an enger IDE). All Dag musse si mat der natierlecher Sprooch schaffen, ouni en Assistent a Form vun Redakter Tipps iwwer méiglech Feeler ze hunn. Eise Plugin liwwert sou Hiweiser a mécht et mat engem héije Grad vu Genauegkeet.
Mir plangen de Plugin z'entwéckelen, souwuel andeems Dir nei Sproochen bäidréit an duerch eng allgemeng Approche fir Textprüfung z'organiséieren. Eis direkt Pläng enthalen d'Ëmsetzung vu stilistesche Profiler (Reegele vu Reegelen déi e Stilguide fir Text definéieren, zum Beispill "net schreiwen zB, awer déi voll Form schreiwen"), d'Wierderbuch ausbauen an d'Benotzerinterface verbesseren (besonnesch, mir wëllen dem Benotzer d'Méiglechkeet ginn net nëmmen e Wuert ze ignoréieren, mä et an d'Wörterbuch derbäi ze setzen, déi de Ried uginn).

Source: www.habr.com

Setzt e Commentaire