?

Log in

No account? Create an account

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

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

Entries by category: животные

Добавлена обработка OOV слов в лемматизаторе rulemma
kelijah
В питоновской библиотеке rulemma добавлена обработка несловарных (out-of-vocabulary) слов. Большинство OOV-слов образуются по относительно небольшому количеству словоизменительных правил русского языка, так что модель неплохо справляется с ними. При этом используются результаты частеречной разметки, чтобы снимать неоднозначности типа крокодил - проходил.

В качестве примера можно посмотреть на разбор фразы "Мяукая, голодные кошки ловят жирненьких хрюнделей":
Read more...Collapse )

rupostagger - простой пакет для частеречной разметки русскоязычных предложений
kelijah
Привел в порядок и выложил пакет rupostagger - простую (и не SOTA) реализацию алгоритма для разметки слов тегами. Пакет не делает ничего, кроме разметки, поэтому токенизацию надо делать самостоятельно. Я использую пакет под 2 и 3 веткой питона, под Windows и Linux. Батарейки (обученная русская языковая модель) входят в комплект, ничего самостоятельно обучать не надо. Также используется русская словарная база - отдельный пакет ruword2tags, и слогоделитель rusyllabs,  они указаны в requirements.txt.

После установки (pip install git+https://github.com/Koziev/rupostagger) использовать так:
Read more...Collapse )

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

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

Сеточная регрессия char-векторов в word2vector встраивания
kelijah
При использовании word2vector представлений слов для синтаксического парсинга реальных текстов, а не искусственно подобранных предложений, всегда возникает проблема out-of-vocabulary слов. Эти несловарные токены возникают по разным причинам, включая опечатки, слияние соседних слов, ошибочное разделение одного слова на несколько, образование новых слов с помощью продуктивных приставок или составных слов:
Read more...Collapse )

Визуализация пространства встраиваний в char-rnn модели word2word. Интерполяция слов.
kelijah

(оглавление)

Как я уже отмечал ранее, если в рекуррентную sequence 2 sequence подавать на вход и на выход одно и то же слово, то фактически мы получаем старый добрый сжимающий автоэнкодер (contractive autoencoder). На скрытом слое этой модели для каждого слова создается векторное представление фиксированной размерности, то есть происходит встраивание слов в некоторое многомерное пространство.


Как посмотреть на распределение векторов слов в этом пространстве?

Read more...Collapse )


Сиамские сети для получения вектора фразы (и детекторов семантических инвариантов текста)
kelijah
На нашем подиуме - новая модель. Называется Siamese Networks.

Касательно использования для обработки текста - см. к примеру http://www.mit.edu/~jonasm/info/MuellerThyagarajan_AAAI16.pdf "Siamese Recurrent Architectures for Learning Sentence Similarity"
Обработка визуальной информации - см. http://vision.ia.ac.cn/zh/senimar/reports/Siamese-Network-Architecture-and-Applications-in-Computer-Vision.pdf

Идея очень простая. Берем пары предложений, описывающих разным обрабом одно и то же. Эти предложения содержат семантические инварианты, которые мы хотим научиться детектировать в любом тексте. Это - позитивные паттерны.

К этим парам добавляем пары, в которых предложения никак не связаны по смыслу. Это - негативные паттерны.

Каждая пара пропускается через две копии сетки и затем сводится через функцию вычисления близости получившихся векторов:
ascii art - сиамская сеткаCollapse )
Обучение заключается в том, что финальная сетка учится определять, что исходные предложения в паре связаны или не связаны друг с другом. Так как предложения эта сетка (точнее, слой) видит как два вектора признаков, то фактически мы в ходе backprop'а заставляем сетки-кодировщики сформировать правила выделения семантических инвариантов. Сетки-кодировщики - это копия одной и той же сетки, отсюда и название.

После обучения у нас в руках оказывается сетка, которая для заданного предложения строит вектор заданной размерности (например, 64 или 256), в котором закодирована семантика.

Пока качество получающихся семантических векторов я проверяю обкатанным ранее способом - через косинусную меру близости разных тестовых фраз. Хотя мне кажется, нужна другая валидационная метрика.
Read more...Collapse )

Перефразировки и глубинная категория определенности в русском языке
kelijah
Если смотреть на некоторые перефразировки, то можно заметить торчащие уши некой категории "определенности/количества", которая в английском языке и некоторых других выражается артиклями:

Слышен собачий лай. (одна собака или несколько? собака известна слушателю или это некая абстрактная собака?)
Слышен лай собаки.
Слышен лай собак.

И прилагательное собачий, и существительное собака в этих случаях называет одно и тоже качество, но есть вышеупомянутая разница в определенности (confidence?). Не удивлюсь, если эта категория замечена и как-то умно называется в "текст<=>смысл" и т.д.

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

Что такое визуальные гештальты?
Это правила группировки видимых объектов и правила "воображения" невидимых частей.
Ключевая особенность - рекурсивное применение гештальтов. Группы объектов, получившиеся в результате применения каких-то правил, могут активировать новый гештальт, который объединит их в группу более высокого порядка:
Рекурсивная группировка...Collapse )
(Картинка взята из "From Gestalt Theory to Image Analysis: A Probabilistic Approach").

Правила могут как кооперироваться, так и  конкурировать. Говоря математически, у каждого правила в конкретном контексте есть некая достоверность. Из-за этого, в частности, возникает целый ряд динамических иллюзий, которые управляются вниманием к отдельным частям картинки.
Penrose fork...Collapse )

А теперь смотрим на синтаксический разбор предложений на естественном языке. Каковы ключевые моменты?

1. Рекурсивное применение правил. В предложении "Кот, который поймал мышь, сидит на крыльце." парсер сначала обнаруживает группу "который поймал мышь" и объединяет ее в придаточное определение. Затем это определение он объединяет с существительным "кот" и получает именную группу. В свою очередь, эта именная группа объединяется уже использованным на первом шаге правилом в итоговое дерево:
Синтаксическое дерево...Collapse )

2. Вероятностный характер процесса. Достоверность применения правил определяется контекстом, в том числе семантикой и прагматикой: "Я стояла, провожая его взглядом.". Присоединение его к глаголу в роли прямого дополнения вступает в конкуренцию с правилом преимущественного связывания близких слов, и побеждает на основе вероятностного характера заполнения слотов глагола.

3. Внимание к отдельным частям предложения может менять его разбор. В устной речи внимание управляется в том числе громкостью (тональная фактура), а на письме это отдается на откуп здравого смысла читателя, но идея в обоих случаях одинакова: "на яблоко" может быть ответом на вопрос "куда села бабочка?" и просторечным вариантом императива "возьми яблоко!". Если произнести словосочетание с ударением на "на" и на "яблоко", то разница ощущается без проблем. Это - синтаксический вариант визуальных иллюзий.

4. Эллипсис и нулевая связка в русском языке - это прямой аналог того, как визуальная система "достраивает" невидимые линии, стремясь получить законченный результат:
"Видишь ты видишь тут? Я - шар с шипами!"Reification...Collapse )


Анализ и выводы...Collapse )

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

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

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

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

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

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

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

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

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

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

Код и Кот
kelijah
Оффтопик про работу и недикую природу ...Collapse )