?

Log in

No account? Create an account

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

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

Entries by tag: синтаксис

Новая модель для синтаксического парсинга
kelijah
Я немного расширил набор фич в модели синтаксического парсинга и сделал предварительный grid search по метапараметрам.

Пока по предварительным замерами на валидации старая модель давет точность определения родителя примерно 96.83%, а новая модель дает минимум 98.54%.

Файлы новой русской синтаксической модели (предварительные) выложены в репозиторий: syntax.codebook и syntax.model.

После того, как сработает early stopping в тренере модели я планирую погонять финальную версию на текстах и затем выложить дистр на сайте.

Эксперимент с использованием reinforcement learning keras-rl для синтаксического парсинга
kelijah
Используется размеченный treebank отсюда: http://universaldependencies.org
Reinforcement learning делается средствами keras-rl
Парсер - простая стековая машина, не поддерживающая непроективные ребра.
Эксперимент пока неудачный, не могу добиться роста качества парсинга.
Питоновский исходник выложил здесь: https://github.com/Koziev/RI_Syntax

Еще примеры перестановочных правил: bag-of-words переходит в bag-of-collocations
kelijah
На предложениях длиной 6 и 7 токенов токенов изюминка задачи видна лучше:
Read more...Collapse )
Предлоги образуют очень устойчивые связи и ведут себя скорее как морфемы, нежели самостоятельные слова. С русскими прилагательными немного сложнее, так как согласование по роду, числу и падежу дает достаточно грамматических признаков считать даже разбросанные по предложению слова связанными. Поэтому достаточно часто встречаются прилагательные, оторвавшиеся от атрибутируемого существительного:
Read more...Collapse )

Или вот примеры внутренних перестановок (частей в составляющих), подчеркивающих рекурсивную природу речи:
Read more...Collapse )

Датасет для unsupervised обучения синтаксической модели для русского языка
kelijah
Мой "текстоперегонный" куб сделал очередную итерацию, скушав пару десятков гигабайтов текстов из википедии, новостей и так далее, и выдав примерно 6 Гб с очищенными предложениями.

Если посмотреть на группу самых маленьких предложений по 4 токена, то с одной стороны 90 Мб файл ничего интересного не показывает:

Read more...Collapse )

Поищем теперь среди этих предложений перестановочные ДУБЛИКАТЫ. То есть нас интересуют пары (или группы) предложений, в которых русский почти свободный порядок слов показывает себя во всей силе:

Я был счастлив!
Счастлив я был!
Я счастлив был!

Исходный список содержит почти 3 миллиона предложений, так что он слишком большой для решения задачи в лоб перебором всех со всеми. Но, к счастью, умные дяди давно разработали подходящий алгоритм, см. краткую инфу https://en.wikipedia.org/wiki/MinHash или подробнейшее описание тут http://infolab.stanford.edu/~ullman/mmds/ch3.pdf

Описанный в доке алгоритм нужен для быстрого поиска дубликатов документов в интернете, и умеет даже нечеткое сравнение через Жаккардову меру с заданной релевантностью. Нам пока нечеткое сравнение не нужно, за исключением порядка слов.

Я сделал реализацию алгоритма на C#. Более того, я потом реализовал эту вкусняшку на pl/sql для поиска дублей в базе, хотя мучения с переводом матричных вычислений на временные таблицы отравили все удовольствие. Как бы то ни было, C# реализация кушает многомиллионные коллекции строк и выдает группы дубликатов, которые для коротких предложений очень похожи просто на bag-of-words:

Read more...Collapse )

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

Read more...Collapse )

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

Всего таких групп - десятки тысяч. Это означает, что у нас есть хороший, достаточно объемный датасет, годный для нейросетевого обучения. По крайней мере, есть резон попытаться.

Синтаксис в такой модели представляет собой набор трансформационных правил, которые сохраняют семантику исходной цепочки. Предполагаю, что это 50% "функционального" определения синтаксиса естественного языка. Недостающая часть связана с тем, что латентные репрезентации высказывания должны позволять ответить (сгенерировать ответ) на вопрос к любой части предложения, а также выполнить более сложную перефразировку. Но для таких задач у меня пока нет датасетов подходящего размера, так что сосредоточимся на трансформационном синтаксисе...

Категоризация имён существительных
kelijah
Придется делать в следующей версии грамматического словаря исключительно из утилитарных соображений - для корректного парсинга.
Дело в том, что сейчас используемая модель для shift-reduce парсера не знает, что существительное "год" и "крещение" имеют разную валентность для заполнения слота обстоятельства времени у глагола. В результате стат. парсер иногда делает ошибки разбора. И эти ошибки видны в статистике паттернов "ГЛАГОЛ + ИМЕННАЯ ГРУППА В РОЛИ ОБСТОЯТЕЛЬСТВА". Кроме правильный "год", "неделя" и прочих там встречаются артефакты:
Read more...Collapse )

Сбор коллокаций предлог+(прилагательное+существительное) из tree bank
kelijah
Продолжение темы http://kelijah.livejournal.com/166962.html.
Из части tree bank собраны предложные паттерны ПРЕДЛОГ+(ПРИЛ+СУЩ).
TOP 200 с сортировкой по mutual information:

Коллокации...Collapse )

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

Статистически устойчивые пары прилагательное+существительное
kelijah
Исходный материал - tree bank размером 143,139,298 слов, полученный синтаксическим разбором примерно 1.4 Гб русского текста в utf-8.

Из синтаксических деревьев брались именные группы прилагательное+существительное. Если прилагательное отсутствовало, то в статистике такая пара отражалась с подстановочным маркером прилагательного ((null)). Слова приводились к леммам.

Далее результат был загружен в MS SQL в табличку с тремя столбцами adj, n и freq. С помощью запроса

select A_N.adj + REPLICATE(' ', 20-LEN(A_N.adj) ), A_N.n + REPLICATE(' ', 20-LEN(A_N.N)), A_N.freq
 from adj_n A_N, adj_n NULL_N
 where NULL_N.n=A_N.n
       and A_N.adj!='((null))'
       and NULL_N.adj='((null))'
       and A_N.freq>NULL_N.freq
 order by A_N.freq desc
    
выведены такие пары adj+n, для которых частотность ((null))+n ниже, чем частотность adj+n. Другими словами, в выборку попали такие существительные, которые употребляются без определения реже, чем с ним. Первые 100 записей выглядят так:

Read more...Collapse )

Статистика по сочетаемости глаголов и предложных паттернов
kelijah
Продолжаем обработку статистики. Собираем сочетания глагола (сказуемое или деепричастный оборот) с группой предлог+существительное.
У существительного могут быть атрибуты и дополнения, их в данной статистике мы не учитываем.
Top-100  по абсолютной частоте:

TOP-100 глагол+предлог+существительноеCollapse )

Коллокации предлог+прилагательное+существительное
kelijah
Продолжаею тему, начатую здесь.
Собраны предложные группы, состоящие из трех слов. Прилагательное является атрибутом существительного, то есть согласовано с ним по падежу, числу, роду, одушевленности.

TOP-100 по абсолютной частоте:
TOP-100 по абсолютной частоте...Collapse )

TOP-100 по mutual information:
TOP-100 по mutual information...Collapse )

Статистика по коллокациям предлог+сущ
kelijah
Из результатов синтаксического парсинга собраны предложные дополнения, содержащие только предлог и существительное.
ТОП-100 по частоте:
TOP-100 коллокаций по абсолютной частотеCollapse )

Можно заметить, что предлоги "лемматизированы", то есть для коллокации "во сне" в статистике появилось "в|сне". Формы существительного оставлены как есть, поэтому "за окно" и "за окном" являются отдельными коллокациями.

Эта же статистика, но ранжировка по mutual information:
TOP-100 с ранжировкой по mutual information...Collapse )