Тема: Разработка редактора для работы с текстами на естественном языке
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Постановка задачи 5
1. Обзор предметной области 6
1.1. Текстовый редактор 6
1.2. Аналоги 7
1.3. Jetpack Compose и Compose Desktop 12
1.4. Kotlin Multiplatform 14
1.5. Grazie 15
2. Разработка редактора 16
2.1. Архитектура 16
2.2. Пользовательский интерфейс 18
2.3. Взаимодействие со встроенными сервисами 22
3. Компонент CoreTextField в Jetpack Compose 25
3.1. Состояние компонента и отрисовка текста 25
3.2. Оптимизация отрисовки текста 26
3.3. Изменения в API CoreTextField и BasicTextField 28
4. Работа с текстом 30
4.1. Документная модель 30
4.1.1 Определение 30
4.1.2 Внешний вид элементов документной модели в редакторе 31
4.1.3 Экспорт в форматы Markdown и LaTeX 32
4.2. Класс TextState 34
4.3. Отрисовка результатов анализа 36
Заключение 39
Список литературы
📖 Введение
С развитием технологий и появлением языков разметки функциональность текстовых редакторов расширялась для упрощения работы с новыми форматами файлов.
Существуют редакторы не только для работы с естественными языками, но и с языками программирования. Для языков программирования разрабатываются так называемые редакторы программ. Редакторы программ обычно входят в состав интегрированных сред разработки — программных средств, используемых программистами для разработки программного обеспечения. Редакторы программ являются более продвинутыми в сравнении с редакторами для текстов на естественном языке. Языки программирования обладают формальным набором синтаксических, лексических и семантических правил, по коду можно построить дерево абстрактного синтаксиса, и поэтому становится возможным выполнение следующих задач:
• проверка наличия ошибок до компиляции программ
• разбиение на синтаксические конструкции для создания удобной подсветки кода
• автодополнение названия функции или другой конструкции языка на основе первых введенных символов
Открытия в области обработки естественных языков сегодня позволяют создавать модели машинного обучения, способные выполнять различные действия над естественными текстами [1]: разбивать на предложения, выделять термины или морфемы, проверять орфографию и пунктуацию, производить перевод на другой язык, генерировать новый текст и так далее. Стало возможным работать с естественными текстами схожим с языками программирования образом. Однако существующие текстовые редакторы не предоставляют возможность простого внедрения таких моделей, потому что они проектировались без учета возможности сложной обработки текста.
Создание редактора, способного внедрять сервисы, обрабатывающие естественный текст, позволит людям без опыта в программировании получить редактор с нужной им проверкой текста. Копирайтеры, журналисты, редакторы, писатели и другие люди, профессия которых связана с написанием текстов, получат возможность ускорить и автоматизировать свою работу, так как у них будет доступ к результатам анализа текста в самом редакторе.
Стоит также отметить, что многие современные редакторы являются кроссплатформенными и позволяют пользователям редактировать файлы с разных устройств: телефонов, планшетов, браузеров и т.д. Поэтому возможность работы редактора на разных платформах станет отдельным преимуществом.
Постановка задачи
Целью данной работы является разработка кроссплатформенного текстового редактора, который позволяет встраивать сервисы для анализа текста и поддерживает декорирование текста.
Таким образом, были поставлены следующие задачи:
1. Провести обзор и анализ существующих аналогов.
2. Разработать архитектуру собственного мультиплатформенного редактора и пользовательский интерфейс.
3. Реализовать редактор с использованием выбранных технологий.
4. Создать интерфейс и руководство для встраивания стороннего сервиса, анализирующего текст.
✅ Заключение
Основная функциональность редактора — возможность встроить собственный сервис для проверки грамматики и автодополнения. Реализация интерфейса TextAnalyzer дает пользователям возможность встроить собственные сервисы. Руководство для встраивания сервиса также приведено в репозитории [36].
Дополнительно редактор позволяет экспортировать текст в такие известные форматы как Markdown и LaTeX, а так же есть возможность открывать ссылки, написанные в редакторе, в браузере.
В будущем планируется расширить множество элементов, поддерживаемых документной моделью. Вдобавок хочется предоставить пользователям возможность дополнительно декорировать текст (менять размер шрифта и его тип, и тому подобное), а также позволить редактировать языки разметки и анализировать их в самом редакторе.
Реализация редактора представлена в репозитории [36].



