Материал: Браузерное расширение для визуализации грамматики

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Веб-браузер Google Chrome так же предоставляет один из наиболее широких API для доступа к содержимому страниц, истории посещенных пользователем страниц, и для модификации пользовательского интерфейса браузера.

Выбор архитектуры реализации расширения

Браузерные расширения, как было сказано выше, представляют собой программу, реализованную на стеке технологий HTML/CSS/JavaScript. Особенности архитектуры, предлагаемой браузерами для разработки расширений, является необходимость использования одного HTML файла, реализующего весь пользовательский интерфейс и всю логику его поведения.

Таким образом, единственным способом организации архитектуры расширения является так называемое одностраничное веб-приложение (single page application, SPA). Одностраничное приложение предполагает реализацию интерфейса пользователя на единственной странице и обновление данных без ее перезагрузки по мере необходимости или в качестве реакции на действия пользователя (рис. 8).

Рис. 8. Схема архитектуры одностраничного веб-приложения.

Взаимодействие с одностраничным приложением часто включает в себя взаимодействие с серверной программой, предоставляющей новые данные для отображения, чем и будет в том числе являться разрабатываемая в рамках данной работы серверная программа. Для реализации одностраничного приложения на стороне клиента используются различного рода вспомогательные библиотеки (фреймворки), которые будут рассмотрены далее.

Программа-сервер

Серверная программа представляет собой набор функций и методов, формирующий API для предоставления данных клиенту и обслуживания запросов, поступивших от клиента. API сервера релизует следующий функционал:

Авторизация пользователей через Facebook.

Сохранение и получение истории переведенных слов.

Предоставление перевода и дополнительной информации о выделенном на странице слове.

Лемматизация слов.

Хранение истории посещенных страниц и реализация алгоритма, выделяющего на ее основе важные слова на текущей странице.

Предоставляет доступ к словам, добавленным на изучение через расширение мобильному приложению для изучения иностранных слов.

Выбор аппаратной архитектуры для серверной программы

Для того, чтобы запустить разработанную серверную программу, необходимо наличие соответствующего аппаратного обеспечения (одного или нескольких компьютеров - серверов). Данные компьютеры должны обладать значительной мощностью для запуска программ, выполняющих сложные вычисления, а так же для одновременного обслуживания большого количества запросов от клиентов. Так же, немаловажен быстрый и стабильный доступ к данным компьютерам через Интернет с резервированием каналов, чтобы минимизировать вероятность неработоспособности системы в целом из-за отказа серверной части. Организация такого рода аппаратного обеспечения стоит значительных денежных и временных ресурсов.

В настоящее время все большую популярность приобретают облачные сервисы. Суть подобных сервисов в предоставлении повсеместного и удобного доступа к пулу общих конфигурируемых вычислительных ресурсов (сети, сервера, хранилища данных, приложения и сервисы). Данные сервисы могут быть предоставлены и освобождены оперативно и с использованием минимальных эксплуатационных затрат.

Основными преимуществами облачных сервисов считаются:

Эластичность и расширяемость - возможность в любой момент перераспределить, расширить или сузить вычислительные ресурсы.

Стоимость - большинство компаний, предоставляющих облачные сервисы, заявляют о значительном снижении стоимости вычислительных ресурсов.

Легкость в обслуживании - доступ к администрированию облачных вычислительных ресурсов возможен в любой момент из любого места через Интернет

Надежность и безопасность - как правило, вычислительные ресурсы в облачных сервисах дублируются в различных локациях, и большинство провайдеров уделяет большое внимание вопросам безопасности доступа к ним.

Набор сервисов, предоставляемых провайдерами облачных сервисов, организуется в стек следующего вида: “инфраструктура как сервис” (infrastructure-as-a-service, IaaS), “платформа как сервис” (platform-as-a-service, PaaS), “программное обеспечение как сервис” (software-as-a-service, SaaS) (рис. 9).

Рис. 9. Стек облачных сервисов.

Модель “инфраструктура как сервис” представляет собой доступ к вычислительным ресурсам реального или виртуального компьютера и соответствующему сетевому окружению.

Модель “платформа как сервис” предоставляет доступ к различным окружениям для разработки: веб-серверам, базам данных, средствам для разработки и тестирования. Здесь вся информационно-технологическая инфраструктура, включающая в себя вычислительные сети, серверы, системы хранения, т.е фактически ресурсы, предоставляемые в рамках модели “инфраструктура как сервис”, целиком и полностью управляется провайдером.

Модель “программное обеспечение как сервис” предоставляет пользователям доступ кразличного рода програмному обеспечению, размещенному в облаке. Программное обеспечение полностью обслуживается провайдером, что исключает затраты с установкой, обновлением и поддержкой программного обеспечения для клиентов.

Для запуска разработанной в рамках данной работы программы-сервера будет использован один из сервисов, реализующих модель “платформа как сервис” (PaaS). Таким образом будет исключена необходимость установки и поддержки аппаратного обеспечения, что будет полностью контролироваться провайдером облачных сервисов, что приведет к уменьшению сроков разработки системы, уменьшению стоимости ее разработки и обслуживания, а так же сделает ее легко расширяемой и устойчивой к варьирующимся нагрузкам.

Выбор программной архитектуры для серверной программы

Важное значение для разрабатываемого браузерного расширение имеет организация программной архитектуры серверной части. Здесь будет рассмотрено два способа организации методов разрабатываемого API: как монолитное приложение (monolithic application) и как набор сервисов называемый микросервисами (microservices), приобретаемый все большую популярность в настоящее время (рис. 10).

Рис. 10. Монолитная и микросервисная архитектура. [28]

В основе монолитного подхода лежит идея, что приложение представляет собой единое целое, содержит в себе весь необходимый функционал, не зависит от других приложений. Монолитное приложение отвечает не за конкретную задачу, а реализует все задачи, требуемые от системы, в рамках одного приложения. Разрабатываемые в рамках данного подхода приложения, при отстутствии грамотной организации кода и модульности, могут стать слишком сложны для разработки, поддержки и масштабирования.

Микросервисы, в свою очередь, представляют собой набор небольших, независимых друг от друга процессов, общающихся между собой. Такие сервисы похожи на небольшие блоки из которых строится модульная система. Преимуществами данного подхода являются:

Легкость замены и модификации сервиса, т.к от программного кода конкретного сервиса не зависит работоспособность ни одного другого.

Возможность реализации различных сервисов с использованием различных технологий (языков программирования, баз данных, и т.д.).

Легкость развертывания получившейся системы, т.к при изменении функционала одного из сервисов не требуется развертывание приложения целиком.

Архитектура микросервисов так же критикуется по ряду причин, включащих в себя дополнительные сложности, возникающие при организации такой инфраструктуры, т.к требуется организация обмена данными между микросервисами и дополнительные расходы на грамотную организацию развертывания такой системы.

Серверное приложение, разрабатываемое в рамках данной работы, будет организовано по принципу микросервисов, т.к объем задач, которые должно решать данное приложение, невелик, и задачи практически не связаны между собой.

Теоретические основы построения системы

Одна из основных задач разрабатываемого браузерного расширения - предоставление пользователю перевода выделенного на странице слова и дополнительной информации о нем. Так же дополнительным функционалом, предоставляемым расширением, является возможность выделить на текущей странице слова, являющиеся характерными для данной странице, чтобы помочь пользователю легче понять содержимое страницы на иностранном языке, а так же подсказать ему слова для изучения, которые наиболее ему необходимы.

Перевод слов

Для получения перевода выделенных на странице слов, информации о части речи слова и его словарных значениях, аудио и прочей информации используются два основных источника. Для большинства слов источником информации является словарь, используемый в мобильном приложении для изучения иностранных слов, дополнением которого и является разрабатываемое расширение. Словарь (Collins, 2015) включает в себя более 100 000 слов на английском языке, их словарные значения и аудио, что обеспечивает возможность предоставления хороших данных для большинства переводимых слов.

Для слов, перевода которых не найдено в базе мобильного приложения, используется API переводчика Google Translate [10]. Переводчик так же предоставляет перевод слов и словарные значения для них, но лимит запросов в день достаточно сильно ограничен, что, помимо лучшего качества данных и аудио в словаре Collins, и обуславливает необходимость использования альтернативного Google Translate источника данных.

Лемматизация слов

Большая часть слов, встречающихся в текстах на веб-страницах, не находится в нормальной форме. Для того, чтобы обеспечить поиск перевода выделенного слова и дополнительной информации о нем, адекватную передачу слов на изучение в мобильное приложение, а так же для хранения истории встречающихся слов для алгоритма, выделяющего важные слова на странице используется процесс приведения слова к нормальной форме, называющийся лемматизацией.

Для лемматизации используется библиотека для работы с естественными языками Natural Language Toolkit (NLTK) [47], написанная на языке Python. Данная библиотека предоставляет широкий набор средств для работы с различными корпусами текстов и лексическими ресурсами и для работы с текстовой информацией на естественном языке.

По умолчанию данная библиотека использует для лемматизации слов на английском языке лексическую базу данных WordNet [29], имеющую в своем составе морфологический процессор morphy [30], который в рамках WordNet используется для поиска нормальной формы слова для переданной строки, что позволяет осуществлять поиск по WordNet, хранящей слова в нормальной формах, по поисковым запросам, содержащим слова не находящиеся в нормальной форме.

Выделение характерных слов на странице

Разрабатываемое в рамках данной работы браузерное расширение, как было сказано выше, помимо предоставления базовых функций, таких как предоставление перевода, словарных значений, аудио и дополнительной информации о слове, выделенном на странице, а так же хранения истории просмотренных и добавленных на изучение слов, предполагает реализацию платформы для добавления дополнительного функционала, использующего возможности бразура для различного рода улучшения процессов пополнения словарного запаса и изучения иностранных языков.

В рамках данной работы, помимо реализации самой платформы и базового функционала расширения, в качестве примера подобного рода дополнительного функционала реализуется возможность автоматического выделения важных слов на странице учитывая историю просмотренных страниц пользователя. В качестве алгоритма для выделения таких слов используется алгоритм, использующий оценку важности слова по мере TF-IDF.

Мера TF-IDF (англ. TF - term frequency, частота слова; IDF - inverse document frequency, обратная частота документа) - статистическая мера, позволяющая оценить важность слова в контексте документа, который является частью коллекции документов. Важность слова повышается пропорционально числу потребления данного слова в рассмариваемом документе, но компенсируется частотой употребления слова в других документах коллекции.

Вес слова по TF-IDF подсчитывается по двум метрикам: (Term Frequency - частота слова) представляет собой меру, оценивающую частоту встречаемости слова в документе. Так как документы различаются по объему, возможно такое, что слово будет встречаться в длинных документах чаще, чем в коротких. Поэтому, для нормализации, часто количество раз, которое слово встретилось в документе, делится на общее количество слов в документе.


IDF (Inverse Document Frequency - обратная частота документа) характеризует важность рассматриваемого слова. Учет IDF уменьшает вес слов, часто встречающихся в других документах коллекции, тем самым уменьшается вес общеупотребительных слов.


          где |D| - количество документов в коллекции, а в знаменателе - количество документов, в которых встречается рассматриваемое слово.

Мера TF-IDF является произведением двух сомножителей: в результате большой вес получат слова, которые редко употребляются в документах коллекции, но часто употребляются в текущем документе.


В разрабатываемом расширении коллекцией документов, по которым происходит расчет метрики IDF, будет являться история страниц, просмотренных пользователем. Тем самым, использование TF-IDF позволит автоматически выделять на текущей странице слова, важные в контексте текущего документа, не являющиеся общеупотребительными, а так же в большой степени являющиеся для пользователя новыми, т.е словами, которые редко встречаются ему при просмотре веб-страниц, что должно помочь пониманию содержимого просматриваемой странице на иностранном языке.

Выбор программных и инструментальных средств для решения поставленных задач

Для решения поставленных задач в первую очередь необходимо сделать выбор используемого для реализации серверной программы облачного сервиса, предоставляющего услуги по модели Platform-as-a-Service (PaaS). Далее, исходя из сделанного выбора, выбираются конкретные сервисы выбранной платформы, которые будут использоваться в разработке, языки программирования, на которых будет написан программный код серверной и клиентской части, а так же система управления базами данных (СУБД). Для реализации клиентской части необходимо выбрать программную платформу (фреймворк), позволяющий реализовать одностраничное веб-приложение (single page web-application).

Выбор облачного сервиса

В настоящее время, в связи с популярностью подхода Platform-as-a-Service, существует множество провайдеров облачных сервисов, предоставляющих услуги по подобной модели. Далее будут рассмотрены преимущества и недостатки нескольких наиболее популярных провайдеров.App Engine [13] - облачный сервис, предоставляющий услуги Platform-as-a-Service для создания распределенных веб-приложений на языках Java, Python, PHP и Go. Среда Java, запускаемая сервисом, поддерживает так же другие языки, работающие на JRE (Java Runtime Environment). Сервис предоставляет SDK для каждого из четырех основных поддерживаемых языков, а так же плагин для среды разработки Eclipse.App Engine предоставляет поддерживаемую инфраструктуру и среду для разработки, гарантируя возможность легкого масштабирования, но только, если приложение соответствует ограничениям платформы. Хранилище данных, предоставляемое сервисом, представляет собой NoSQL базу данных типа “ключ-значение”. Сервис использует модель “песочницы”, изолируя выполняемые процессы, тем самым предотвращая возможность влияния на их выполнение извне.