?

Log in

No account? Create an account

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

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

Entries by category: еда

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

Read more...Collapse )

Вербальные формы в чатботе: в ближайшем релизе
kelijah
Написанный для чатбота код для поддержки вербальных форм будет поддерживать такие ценарии общения с пользователем (реплики человека отмечены H:, реплики бота B:):

B:> День добрый
H:> хочу заказать что-нибудь поесть
B:> Что заказать?
H:> пиццу с анчоусами
B:> Сколько порций?
H:> две
B:> Заказываю: что="пиццу с анчоусами", сколько="две"

Аугментация и генерация 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
Касательно упоминаемой в этой статье подстановки синонимов для русскоязычных датасетов я, возможно, выложу и свой примерчик.

Как SentencePiece токенизирует русскоязычный текст
kelijah
SentencePiece - питоновская библиотека для unsupervised tokenization. Для японского и и китайского, видимо, является очень хорошей альтернативой токенизаторам с handcrafted rules (типа MeCab, который и я когда-то использовал). А для английского языка дает в нейросетевых моделях (гугловский трансформер и BERT) такую приятную вещь, как заранее фиксированный размер словаря.

А как выглядит результат токенизации для русскоязычного текста, учитывая темную сторону русского языка - слишком богатое словоизменение? Далее - краткие результаты эксперимента.
Read more...Collapse )

Модуль поддержания разговора (smalltalk режим) для чатбота
kelijah
В кодовую базу чат-бота добавлен небольшой модуль, которые позволяет в ответ на реплики пользователя, не являющиеся вопросами, отвечать для поддержания разговора (с условным названием smalltalk режим - см. также описание светской беседы в вики). В комплекте с общим retrieval-based алгоритмом чатбота и динамическим обновлением базы знаний из диалога получается более плавное общение (Q - мои реплики, A - ответы чат-бота):

Q:> привет
A:> Здравствуй

Q:> как тебя зовут?
A:> кеша

Q:> меня зовут Илья
A:> Привет!

Q:> я сегодня ел арбуз
A:> Арбуз очень вкусный был?

Q:> что я сегодня ел?
A:> арбуз




Read more...Collapse )

небольшое ручное сравнение vanilla w2v и fasttext на русском 10Гб корпусе
kelijah

Обучил word2vector и fasttext модели на одном и том же текстовом корпусе:10 Гб всяких текстов, включая социальные медиа, изобилующие опечатками и словообразовательным творчеством масс.
Параметры для w2v: CBOW=0 WIN=5 DIM=32 MIN_COUNT=1
Параметры для fasttext: SIZE=64 WINDOW=5 CBOW=0 MIN_COUNT=1
Далее сравниваю выдаваемую похожесть для нескольких пар слов с помощью 1 и 2.
Результаты под катом. Можно заметить, что в некоторых случаях fasttext дает намного лучшие результаты (борщ и борщец), корректнее учитывая русские продуктивные суффиксы. Но исправление опечаток fasttext не тянет (трактор и тракктор).

результаты для vanilla w2v...Collapse )

Результаты для fasttext...Collapse )


Как будем проверять word embeddings
kelijah
1. Если/когда заработает вторая модель получения word embeddings - то для нее проверка будет аналогичная нижеописанной.

2. Получение кластеров и просмотр их содержимого является только предварительной, грубой оценкой. Практического применения этим кластерам я пока не вижу. Если смутные мысли по поводу использования для machine translation, но смутность и необходимость получения еще и японских векторов пока меня расстраивает.

3. Сделаем POS Tagger на Support Vector Machine классификаторе, на входе - только полученные вектора для слов, на выходе - целевые теги (часть речи + падеж + число + ....). Сравнение с разметкой эталонного корпуса сразу покажет числовую оценку качества, от которой уже можно отталкиваться при подборе гиперпараметров модели.

4. Если вдруг POS Tagger на векторах окажется на уровне текущего варианта, то встанет вопрос о введении в него работы с неизвестными словами. Это будем решать по факту.

5. Если качество будет хорошим, то, к.м.к, можно будет добавить марковскую модель и получить MEMM со всеми плюшками глобальной оптимизации цепочки тегов.

6. Отдельная проверка - через использование векторов для shift-reduce парсера. С этой штукой будем возиться только после окончания проверки на pos tagging модели.