?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Entries by category: it

Релиз чатбота 0.0.1 (альфа) - вербальные формы, сценарии и прочее
kelijah
В проекте русскоязычного чатбота сделан релиз с большими изменениями в коде бота. В основном работа велась над возможность задавать поведение бота через вручную задаваемые правила - сценарии и вербальные формы.

Read more...Collapse )

Релиз чатбота 0.0.0.16 - встраивание движка в RASA
kelijah
В рамках этого релиза чатбота я серьезно переработал исходный код и "обиблиотечил" движок. Теперь бот можно встраивать в питоновский код, как это показано на примере интеграции с RASA.

Для встраивания бота необходимо зарегистрировать пакет командой, находясь в корне скачанного проекта:
Read more...Collapse )

RASA, spacy, русский язык и NER
kelijah
После трех дней осады и борьбы, у меня заработала связка из текущей версии RASA и spacy (я взял готовые модели для русского языка, спасибо Юрию за помощь :) ).

Кроме того, я сделал конвертор для своего NER датасета в формат для обучения Spacy NER. После пары часов получилось дообучить спейсовский NER, взяв за основу код отсюда:
Read more...Collapse )

Собранные русские словарные базы и исполнимые файлы для Грамматического Словаря
kelijah
В репозиторий https://github.com/Koziev/GrammarEngine выгружены полные актуальные сборки русской словарной базы для 64-битных Windows и Linux. Историческая ремарка - необходимость в разных версиях словаря под вин и лин объясняется такой замечательной особенностью C++, как отсутствие гараний размера основных типов данных. В частности, wchar_t для вин для большинства компиляторов имеет размер 2 байта, для лин - 4 байта.

Для начала использования под Windows вообще не нужно компилировать ничего - репозиторий содержит все необходимое. Если запустить exe64\lexicon.exe, то можно в консоли проверить поиск слов в лексиконе. Запустив scripts\syntax\console_syntax.cmd, можно посмотреть, как разбираются простые предложения в rule-based синтаксическом парсере. Пересборка словарной базы выполняется скриптом scripts\dictionary\russian.cmd

Для работы в Linux нужно собрать исполнимые файлы. Процесс сборки описан в README.md. Ничего особого там нет, просто набор приседаний со скачиванием и установкой зависимостей и запуском сборки в CMake.

Но есть и проблема - под VisualStudio 2017 перестал собираться один из компонентов Парсера.

Текущие задачи, решенные в чатботе плохо или не решенные вообще
kelijah
Зафиксировал текущее состояние всех алгоритмов чатбота релизом 0.0.0.12. Как и раньше, это proof-of-concept, работающий на очень ограниченном domain'е, прежде всего "здрасьте - как вас зовут". В релизе добавлены новые правила и доработан workflow чатбота, что позволяет отрабатывать такие тестовые диалоги:
Read more...Collapse )

Большой рефакторинг чатбота: все правила в одном файле и модель определения intent'ов
kelijah
В репозиторий https://github.com/Koziev/chatbot залита текущая версия чатбота с множеством изменений и исправлений.
Read more...Collapse )

Аугментация и генерация NLP датасетов с помощью ruword2tags.RuFlexer
kelijah
В библиотеку ruword2tags добавлен новый класс RuFlexer, содержащий инструменты для генеративных текстовых моделей. Сейчас этот класс предоставляет единственный метод find_forms_by_tags для подбора форм слова с заданными тегами. Например, чтобы найти форму слова "кошка" для творительного падежа множественного числа, надо написать примерно такой код:
Как сделать аугментацию и генерацию датасета для NLP...Collapse )
PS: Юрий Бабуров подкинул еще хорошую статью по теме аугментации в NLP: https://towardsdatascience.com/these-are-the-easiest-data-augmentation-techniques-in-natural-language-processing-you-can-think-of-88e393fd610
Касательно упоминаемой в этой статье подстановки синонимов для русскоязычных датасетов я, возможно, выложу и свой примерчик.

Добавлена обработка OOV слов в лемматизаторе rulemma
kelijah
В питоновской библиотеке rulemma добавлена обработка несловарных (out-of-vocabulary) слов. Большинство OOV-слов образуются по относительно небольшому количеству словоизменительных правил русского языка, так что модель неплохо справляется с ними. При этом используются результаты частеречной разметки, чтобы снимать неоднозначности типа крокодил - проходил.

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

rupostagger - простой пакет для частеречной разметки русскоязычных предложений
kelijah
Привел в порядок и выложил пакет rupostagger - простую (и не SOTA) реализацию алгоритма для разметки слов тегами. Пакет не делает ничего, кроме разметки, поэтому токенизацию надо делать самостоятельно. Я использую пакет под 2 и 3 веткой питона, под Windows и Linux. Батарейки (обученная русская языковая модель) входят в комплект, ничего самостоятельно обучать не надо. Также используется русская словарная база - отдельный пакет ruword2tags, и слогоделитель rusyllabs,  они указаны в requirements.txt.

После установки (pip install git+https://github.com/Koziev/rupostagger) использовать так:
Read more...Collapse )

rusyllab - русский слогоделитель для замены SentencePiece
kelijah
В субботу на скорую руку сделал на питоне конвертор моего старого набора правил деления на слоги из проекта русского словаря.
Результат работы конвертора - код на питоне, оформленный в виде стандартного пакета rusyllab.
Read more...Collapse )