Хацкатхон ДевДаис'19 (2. део): анализатор аудио порука за Телеграм и проверу граматике у ИнтеллиЈ ИДЕА

Настављамо да причамо о пројектима пролећног хакатона ДевДаис, у којем су учествовали студенти мастер програма "Развој софтвера / софтверско инжењерство".

Хацкатхон ДевДаис'19 (2. део): анализатор аудио порука за Телеграм и проверу граматике у ИнтеллиЈ ИДЕА

Иначе, позивамо читаоце да се придруже ВК група студената мастер студија. У њему ћемо објавити најновије вести о запошљавању и студирању. У групи можете пронаћи и видео снимак са дана отворених врата. Подсећамо: догађај ће се одржати 29. априла, детаљи Онлине.

Телеграм Десктоп анализатор гласовних порука

Хацкатхон ДевДаис'19 (2. део): анализатор аудио порука за Телеграм и проверу граматике у ИнтеллиЈ ИДЕА

Идејни аутор
Кхоросхев Артиом

Командна структура

Кхоросхев Артем – менаџер пројекта/програмер/КА
Елисеев Антон – пословни аналитичар/специјалиста за маркетинг
Мариа Куклина – УИ дизајнер/програмер
Бакхвалов Павел – УИ дизајнер/програмер/КА

Са наше тачке гледишта, Телеграм је модеран и згодан месинџер, а његова ПЦ верзија је популарна и отвореног кода, што омогућава његову модификацију. Клијент нуди прилично богату функционалност. Поред стандардних текстуалних порука, садржи гласовне позиве, видео поруке и гласовне поруке. А ово друго је оно што понекад доноси непријатности њиховом примаоцу. Често није могуће преслушати гласовну поруку док сте на рачунару или лаптопу. Можда постоји амбијентална бука, недостатак слушалица или не желите да ико чује садржај поруке. Такви проблеми се готово никада не јављају ако користите Телеграм на паметном телефону, јер га можете једноставно принети уху, за разлику од лаптопа или рачунара. Покушали смо да решимо овај проблем.

Циљ нашег пројекта на ДевДаис-у је био да Телеграм десктоп клијенту (у даљем тексту Телеграм Десктоп) дода могућност превођења примљених гласовних порука у текст.

Сви аналоги у овом тренутку су ботови којима можете послати аудио поруку и добити текст као одговор. Нисмо баш задовољни овим: прослеђивање поруке боту није баш згодно; желели бисмо да имамо изворну функционалност. Поред тога, сваки бот је трећа страна која делује као посредник између АПИ-ја за препознавање говора и корисника, а то је, у најмању руку, несигурно.

Као што је раније поменуто, телеграм-десктоп има две значајне предности: лакоћу и брзину рада. И то није случајно, јер је у потпуности написан на Ц++. А пошто смо одлучили да додамо нову функционалност директно клијенту, морали смо да је развијемо у Ц++.

Хацкатхон ДевДаис'19 (2. део): анализатор аудио порука за Телеграм и проверу граматике у ИнтеллиЈ ИДЕАУ нашем тиму су биле 4 особе. У почетку су две особе тражиле одговарајућу библиотеку за препознавање говора, једна особа је проучавала изворни код Телеграм-десктоп-а, друга је постављала пројекат изградње Телеграм Десктоп. Касније су сви били заузети поправљањем корисничког интерфејса и отклањањем грешака.

Чинило се да имплементација предвиђене функционалности неће бити тешка, али, као што се увек дешава, појавиле су се потешкоће.

Решење проблема се састојало од два независна подзадатка: одабира одговарајућег алата за препознавање говора и имплементације корисничког интерфејса за нову функционалност.

Када смо бирали библиотеку за препознавање гласа, одмах смо морали да напустимо све офлајн АПИ-је, јер језички модели заузимају много простора. Али говоримо само о једном језику. Постало је јасно да ћемо морати да користимо онлајн АПИ. Касније се испоставило да услуге препознавања говора таквих гиганата као што су Гоогле, Иандек и Мицрософт нису уопште бесплатне и мораћемо да се задовољимо пробним периодом. Као резултат тога, изабран је Гоогле Спеецх-То-Тект јер вам омогућава да добијете токен за коришћење услуге, који ће трајати читаву годину.

Други проблем на који смо наишли везан је за неке од недостатака Ц++-а – зоолошки врт разних библиотека у одсуству централизованог спремишта. Десило се да Телеграм Десктоп зависи од многих других библиотека специфичних за верзију. Званични репозиториј има инструкција за склапање пројекта. И такође велики број отворених питања о проблемима изградње, на пример време и два. Испоставило се да су сви проблеми повезани са чињеницом да је скрипта за изградњу написана за Убунту 14.04, а да би се успешно изградио телеграм под Убунту 18.04, морале су се извршити промене.

Сам Телеграм Десктоп се саставља прилично дуго: на лаптопу са Интел Цоре и5-7200У, комплетна монтажа (застава -ј 4) са свим зависностима траје око три сата. Од тога, око 30 минута је потребно за повезивање самог клијента (касније се испоставило да у Дебуг конфигурацији повезивање траје око 10 минута), али се фаза повезивања мора понављати сваки пут након уношења измена.

Упркос проблемима, успели смо да реализујемо замишљену идеју, као и да ажурирамо буилд сцрипт за Убунту 18.04. Демонстрација рада може се видети на веза. Такође укључујемо неколико анимација. Дугме се појавило поред свих гласовних порука које вам омогућава да преведете поруку у текст. Десним кликом можете додатно одредити језик који ће се користити за емитовање. Од стране веза клијент доступан за преузимање.

Репозиторијум.

По нашем мишљењу, испоставило се да је то добар Прооф оф Цонцепт функционалности који би био погодан за многе кориснике. Надамо се да ћемо га видети у будућим издањима Телеграм Десктоп-а.

Побољшана подршка природног језика у ИнтеллиЈ ИДЕА

Хацкатхон ДевДаис'19 (2. део): анализатор аудио порука за Телеграм и проверу граматике у ИнтеллиЈ ИДЕА

Идејни аутор

Танков Владислав

Командна структура

Танков Владислав (вођа тима, ради са ЛангуагеТоол-ом и ИнтеллиЈ ИДЕА)
Никита Соколов (рад са ЛангуагеТоол-ом и креирање корисничког интерфејса)
Кхворов Александар (рад са ЛангуагеТоол-ом и оптимизација перформанси)
Садовников Александар (подршка за рашчлањивање маркуп језика и кода)

Развили смо додатак за ИнтеллиЈ ИДЕА који проверава различите текстове (коментаре и документацију, дословне редове у коду, текст форматиран у Маркдовн или КСМЛ маркуп) на граматичку, правописну и стилску тачност (на енглеском се то зове коректура).

Идеја пројекта је била да се стандардна провера правописа ИнтеллиЈ ИДЕА прошири на скалу Граммарли-а, како би се направила нека врста Граммарли-а унутар ИДЕ-а.

Можете видети шта се догодило по ссылке.

Па, у наставку ћемо детаљније говорити о могућностима додатка, као ио потешкоћама које су се појавиле током његовог креирања.

Мотивација

Постоји много производа дизајнираних за писање текста на природним језицима, али документација и коментари кода се најчешће пишу у развојним окружењима. У исто време, ИДЕ одлично раде на проналажењу грешака у коду, али су слабо прикладне за текстове на природним језицима. Ово чини веома лаким прављење грешака у граматици, интерпункцији или стилу, а да развојно окружење на њих не указује. Најважније је направити грешку у писању корисничког интерфејса, јер ће то утицати не само на разумљивост кода, већ и на саме кориснике развијене апликације.

Једно од најпопуларнијих и најразвијенијих развојних окружења је ИнтеллиЈ ИДЕА, као и ИДЕ засновани на ИнтеллиЈ платформи. ИнтеллиЈ платформа већ има уграђену проверу правописа, али не отклања чак ни најједноставније граматичке грешке. Одлучили смо да интегришемо један од популарних система за анализу природног језика у ИнтеллиЈ ИДЕА.

Имплементација

Хацкатхон ДевДаис'19 (2. део): анализатор аудио порука за Телеграм и проверу граматике у ИнтеллиЈ ИДЕАНисмо себи поставили задатак да направимо сопствени систем верификације текста, па смо користили постојеће решење. Испоставило се да је најпогоднија опција ЛангуагеТоол. Лиценца нам је омогућила да је слободно користимо у наше сврхе: бесплатна је, написана на Јави и отвореног кода. Поред тога, подржава 25 језика и развија се више од петнаест година. Упркос својој отворености, ЛангуагеТоол је озбиљан конкурент решењима за верификацију плаћеног текста, а чињеница да може да ради локално је буквално његова убилачка карактеристика.

Код додатка је унутра спремишта на ГитХуб-у. Цео пројекат је написан у Котлину са малим додатком Јаве за кориснички интерфејс. Током хакатона успели смо да имплементирамо подршку за Маркдовн, ЈаваДоц, ХТМЛ и Плаин Тект. Након хакатона, велико ажурирање је додало подршку за КСМЛ, стринг литерале у Јави, Котлину и Питхон-у и проверу правописа.

Тешкоће

Врло брзо смо схватили да ако сваки пут убацимо сав текст у ЛангуагеТоол за преглед, онда ће се ИДЕА интерфејс замрзнути на било ком мање или више озбиљном тексту, пошто сама инспекција блокира проток корисничког интерфејса. Проблем је решен провером `ПрогрессМанагер.цхецкЦанцеллед` - ова функција избацује изузетак ако ИДЕА верује да је време да се прекине провера.

Ово је потпуно елиминисало замрзавање, али га је немогуће користити: обрада текста траје веома дуго. Штавише, у нашем случају се најчешће мења веома мали део текста и желимо да некако кеширамо резултате. Управо смо то урадили. Да не бисмо сваки пут проверавали све, детерминистички смо поделили текст на делове и проверавали само оне који су се променили. Пошто текстови могу бити велики и нисмо хтели да учитавамо кеш меморију, сачували смо не саме текстове, већ њихове хешове. Ово је омогућило да додатак ради глатко чак и на великим датотекама.

ЛангуагеТоол подржава више од 25 језика, али је мало вероватно да ће неком кориснику бити потребни сви. Желео сам да дам могућност преузимања библиотека за одређени језик на захтев (ако то означите у корисничком интерфејсу). Чак смо и имплементирали ово, али се испоставило да је превише компликовано и непоуздано. Конкретно, морали смо да учитамо ЛангуагеТоол са новим скупом језика користећи посебан учитавач класа, а затим га пажљиво иницијализујемо. Истовремено, све библиотеке су биле у корисничком .м2 спремишту и при сваком стартовању смо морали да проверавамо њихов интегритет. На крају смо одлучили да ако корисници имају проблема са величином додатка, онда ћемо обезбедити посебан додатак за неколико најпопуларнијих језика.

После хакатона

Хакатон је завршен, али је рад на додатку настављен са ужим тимом. Желео сам да подржим низове, коментаре, па чак и језичке конструкције као што су имена променљивих и класа. Тренутно је ово подржано само за Јава, Котлин и Питхон, али се надамо да ће ова листа расти. Исправили смо много малих грешака и постали смо компатибилнији са уграђеном провером правописа Идеа. Поред тога, појавила се подршка за КСМЛ и провера правописа. Све ово се може наћи у другој верзији коју смо недавно објавили.

Шта је следеће?

Такав додатак може бити користан не само за програмере, већ и за техничке писце (често раде, на пример, са КСМЛ-ом у ИДЕ-у). Свакодневно морају да раде са природним језиком, а да немају помоћника у виду савета уредника о могућим грешкама. Наш додатак пружа такве савете и то са високим степеном тачности.
Планирамо да развијемо додатак, како додавањем нових језика тако и истраживањем општег приступа организовању провере текста. Наши непосредни планови укључују имплементацију стилских профила (скупова правила која дефинишу стилски водич за текст, на пример, „не пишите нпр., већ пишите пуну форму“), проширење речника и побољшање корисничког интерфејса (посебно, желимо да дамо кориснику могућност не само да игнорише реч, већ да је дода у речник, означавајући део говора).

Извор: ввв.хабр.цом

Додај коментар