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

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

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

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

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

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

Collapse )

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

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

Collapse )

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

Цель

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

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

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

Продолжение темы изучения питорча: сделал модель бинарного классификатора для определения синонимичности двух фраз с использованием multilinual BERT: гист
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, в том числе - списки ударений для нескольких сотен тысяч форм слов. Но это произойдет, наверное, в лучшем случае в сентябре.

Странная фича для определения перефразировки вопросов в каггле Quora Question Pairs

Соревнование по определению похожести вопросов закончилось, теперь можно поизучать чужие решения. И пересмотреть еще раз некоторе нюансы в своем решении тоже.

Итак, есть один признак, который я добавил в датасет, не ожидая особого эффекта. Но он оказался достаточно сильным, и это странно.

Вот топ списка фич, выдаваемых xgboost и отсортированных в порядке убывания веса:

Collapse )

Выделенные болдом признаки kenlm_* представляют из себя оценки достоверности фрагментов фразы. Они вычисляются с помощью предварительно построенной языковой н-грамной модели KenLM. Вычисление делается вот так:

Collapse )

То есть берем начало вопроса из нескольких слов. Значения для начальных фрагментов длиной в 8, 16 и 32 слова вычисляются отдельно. Вычисляем оценку для первого вопроса, для второго, сохраняем их в датасете, а также добавляем разницу оценок. Учитывая логарифмический характер оценок, мы фактически определяем относительную оценку.

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

Но тем не менее xgboost в ходе построения деревьев на каком-то уровне делает вывод, что выгода от учета значения kenlm-фичи больше, чем, например учет похожести предложений на базе информации в WordNet (синонимия и так далее) - см. положение фичи wordnet_sim_0.

Сеточная модель для определения части речи слова по его символьному представлению

Еще одна сеточная модель для char-based language modeling.
Для произвольной цепочки символов пытаемся определить, к какой части речи это слово относится.
Collapse )