Category: лингвистика

Category was added automatically. Read all entries about "лингвистика".

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

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

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

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

Collapse )

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

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

Collapse )

Генерация форм существительных с помощью GPT-2

Генерация определений слов с помощью GPT-2 и толкового словаря описана в этом посте.
Продолжим забивать языковые гвозди микроскопом!

Я обучил GPT-2 на парадигмах существительных из грамматического словаря. В обучающий датасет взято около 110 тысяч существительных, в каждом по 6 падежных форм для единственного числа. Модель училась из номинатива выдавать остальные 5 форм - родительный, творительный, винительный, дательный и предложный.

Примеры генерации:


Collapse )
Нужно еще добавить модель определения ударения и можно генерить Викисловарь.

Использование статистики аргументной структуры для генерации рэпа

Цель

Овладеть искусством (или мастерством) генерации рэпа на заданную тему.

Я ожидал, что это будет попроще, чем онегинская строфа, но не тут-то было :) Приходится идти небольшими шагами, перебирая множество подходов.
Collapse )
PS: и немного свежей выдачи стихогенератора на тему программистов-лингвистов:
Collapse )

Реализация модели детектора перефразировок с BERT в pytorch transformers

Продолжение темы изучения питорча: сделал модель бинарного классификатора для определения синонимичности двух фраз с использованием multilinual BERT: гист
Collapse )

Забавные моменты с русскоязычным GPT-2

Смотрю на текущие результаты сэмплирования из обучающейся языковой модели GPT-2 в варианте с  117M параметрами. Иногда проскакивают забавные словечки, получающиеся из-за склейки bpe-токенов. С некоторыми натяжками выглядят так, будто модель уже знает общие правила русского словообразования и словоизменения, но ошибается с правильным выбором морфем:
Collapse )

Об ошибках морфологической разметки в OpenCorpora

В догонку к предыдущему посту про качество RnnMorph.

В ходе тщательного анализа результатов моего part-of-speech tagger'а по данным из OpenCorpora наткнулся на такие штуки:

False positive NOUN misprediction for sample:

Центральная катма дискордианства гласит :
itoken=1
word=катма
expected part-of-speech =UNKN
predicted part-of-speech=NOUN


Строка "expected part-of-speech =UNKN" означает, что в разметке OpenCorpora слово "катма" помечено классом UNKN. Подозреваю, что это артефакт полуавтоматической разметки, слово "катма" просто отсутствует в словарной базе OpenCorpora.

Эта ошибка повторяется в корпусе систематически и достаточно сильно смещает статистику.

Также можно заметить, что у меня модель правильно пометила это слово классом NOUN.

Вывод - при подсчете статистики по разметке OpenCorpora категорически рекомендуется выкидывать из рассмотрения метки UNKN. Оценка тут сделана с учетом этого нюанса.

Оценка качества RnnMorph по ручной морфологической разметке из OpenCorpora

Оценка точности разметки существительных для морфологического анализатора RnnMorph.
В качестве эталона разметки взят "Подкорпус со снятой омонимией" из OpenCorpora.

NOUN recall=0.9931500509117838
NOUN precision=0.9943005421435522
NOUN+tags precision=0.9590843797785089


NOUN precision - точность без учета тегов, NOUN+tags - точность с учетом тэгов Case, Number.

Датасет для тренировки модели синонимичности

В репозиторий добавлена часть датасета для тренировки модели синонимичности.
Чтобы переобучить модель после изменений этого датасета, нужно выполнить скрипт train_lgb_synonymy.sh.

Аналогичный датасет для модели релевантности вопроса и предпосылки был выложен ранее. Переобучение этой модели запускается скриптом train_lgb_relevancy.sh

Изменения в грамматическом словаре касательно составных прилагательных

В "грамматическом словаре русского языка" закончена большая чистка русского лексикона. Из словарной базы убраны почти все составные прилагательные такого вида "ярко-зеленый", "багрово-красный" и т.д. В итоге словарь стал меньше, но мощность описываемой им лексики - больше. Далее - пояснения мотивации и последствия.

Collapse )

Большое обновление русского лексикона, морфологии и синтаксических правил в грамматическом движке

Закомитил в https://github.com/Koziev/GrammarEngine накопившиеся изменения:

1) Добавлено много новых словарных статей
2) Убраны некоторые составные слова типа "мотор-генератор"
3) Исправлены различные ошибки, обнаруженные при тестировании - неверные формы слов etc.
4) Для некоторых слов уточнены морфологические теги (модальность, падежная валентность etc.)
5) В синтаксический анализатор добавлена пара правил разбора.

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