?

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 )

небольшое ручное сравнение 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 )


Случай с Оливером - парсинг несловарной лексики
kelijah
Прогнал через парсер текст "Случай с Оливером". Далее - результаты и пояснения.

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

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

Вот сам текст:

Случай с Оливером - исходник...Collapse )

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

Несловарная лексика в тексте...Collapse )

Важное замечание: морфоанализатор на самом деле знает, что, к примеру, "ласкунно" может быть наречием. В этом легко убедиться с помощью утилиты Lexicon:

Варианты распознавания слова ЛАСКУННО...Collapse )

Неправильный выбор делается именно вероятностной моделью part-of-speech tagger'а.