Генерация OOV лексики

Есть вот такой побочный результат небольшого ресеча в области русского словоизменения и словообразования. Относительно небольшой код генерирует словоформы в любых количествах, позволяя получить "out-of-vocabulary грамматический словарь" любого объема. Процесс unsupervised, то есть никаких ручных правил не требуется, псевдокорни и флексии берутся из имеющегося грамматического словаря. Без GPT-2 :).
Для примера - некоторые формы существительных:

Номинатив (кто? что?), единственное число:

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

Collapse )

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

PS: еще немного забавных номинативов:

Collapse )

Озвучка и визуализация стихов сервисом виртуального ведущего от mail.ru

Попробовал озвучить цифровые стихи с помощью сервиса от Mail.Ru.
Жаль, но движения губ диктора получились вообще не синхронизированы с текстом. Возможно, это результат "специфичного" текста, нейросетка при обучении такого контента, конечно, не видела.
А вот качество TTS вполне на высоте, не хуже Яндексовского TTS (вначале будет реклама, неизбежное зло):

Collapse )

Цифровые стихи

Генерация "стихотворного" текста, в котором лексика ограничена числительными и служебными словами:

я пятьдесят из четыре шестьсот
девяносто одиннадцать двадцать.
пятнадцать, одиннадцать, я - девятьсот
четырнадцать двенадцать!


Озвучка TTS движком Яндекса голосом радостного Филиппа - тут.

PS: Лирично (насколько это применимо к числительным):


Семьдесят пятнадцать
Под семьсот шестьсот
половина восемь,
двадцать восемьсот.

На четыре двадцать
тысяча шестьсот
девятнадцать восемь
десять восемьсот.

И двадцать тринадцать
В девять восемьсот,
И пятьсот пятнадцать
В семьдесят шестьсот.

Немного "шедевров" от генератора стихов для чит-чата

Чатбот не картошка, не выбросишь в окошко.

Чатбот дурака видит издалека.

Чатбот спать не даёт: хорошо живет.

Язык чешется, чатбот тешится.

(Предыдущие нетленки - тут)

Веб-интерфейс для чатбота

В релизе 0.0.2.14 восстановлен старый код веб-морды бота на фляшке. Теперь он запускается тоже в докере, как и консольный вариант. Для запуска нужно скачать образ, загрузить и запустить его командой:

docker image load -i chatbot.tar.gz
docker run -p 9001:9001 -it chatbot bash -c "/chatbot/scripts/flask_bot.sh"


Через несколько минут бот загрузится и выдаст в консоль сообщение с текстом:

werkzeug - * Running on http://0.0.0.0:9001/ (Press CTRL+C to quit)

Теперь можно открывать в браузере адрес http://127.0.0.1:9001/ и общаться с ботом, вводя запросы в простой веб-форме:
Collapse )

К вопросу о языковой креативности

В роли креативщика - Миша, 8 лет:

Мама: - Что хочешь на завтрак?
Миша: - Яйца в лепешку

После уточняющего вопроса выяснилось, что (в его картине мира) есть яйца всмятку, есть вкрутую, а есть в лепешку - яичница-глазунья.

Релиз чатбота 0.0.2.13 - генеративный перефразировщик реплик и улучшение качества

Для чатбота в рамках релиза 0.0.2.13 подготовлено несколько улучшений.
Collapse )

Релиз чатбота 0.0.2.12 - улучшения интерпретатора, переработка интентов

В этом релизе чатбота Вика реализованы такие главные изменения:

1) Модель интерпретатора, которая занимается раскрытим анафоры, гэппинга и элипсиса, доработана. Теперь в ряде случаев срабатывает более точная kNN шаблонная модель, которая обучается на тех же данных, что и seq2seq сетка.

2) Датасет интерпретатора расширен до 26,000 сэмплов. Это еще немного повысило качество seq2seq модели интерпретации.

3) Сделана декомпозиция классификатора интентов. В отдельные классификаторы, помимо интентов, выделено определение тональности (sentiment), оскорбительности (abusiveness), направленности (direction) реплики. Это позволяет оценивать каждую реплику пользователя по нескольким критериям одновременно. То есть реплика пользователя может быть одновременно про политику, быть оскорбительной и являться вопросом к боту.
Collapse )

Еще раз - сравнение part-of-speech tagger'ов на OpenCorpora

Для оценки взят корпус из OpenCorpora со снятой омонимией. Он конвертирован в CONLLU и тегсет Universal Dependencies, насколько это возможно. Всего в корпусе получилось 13208 предложений.

Далее, выдача нескольких POS tagger'ов сравнивалась с этим корпусом. При сравнении имен существительных (NOUN и PROPN) и прилагательных (ADJ и DET) сравнивались только теги падежа, числа и рода (в единственном числе). Для форм множественного числа род не проверялся, так как rupostagger его не выводит (by design). Для глаголов не учитывались теги вида и залога. Время измерялось в режиме прогона по 1 предложению, т.е. батчи не использовались, даже если это возможно в API теггера.
Collapse )

PS: По возможности все-таки лучше измерять качество тэггеров в привязке в метрикам всего пайплайна. Например, работа тэггеров при разрешении омографов в TTS может давать существенно другие цифры качества, особенно если тэггер активно доучивать на разрешении частотных омографов (доро́га-дорога́, etc).