Полезно для НЛП. Не все так сложно.

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

Деревья синтаксического анализа - это способ явно визуализировать эту иерархию в виде древовидного графа.

Еще несколько лет назад большая часть обработки естественного языка (НЛП) включала в себя синтаксический анализ предложений в такие графы и возню с ними. Например, можно классифицировать деревья по различным типам структур; или манипулировать деревом для формирования новых деревьев, которые могут соответствовать или не соответствовать новым предложениям со смежными семантическими свойствами.

Для некоторых появление достаточной вычислительной мощности и глубоких нейронных сетей сделало все эти усилия излишними: если полный контекст слова определяется его соседями, достаточно иметь сеть, обрабатывающую достаточно текстовых данных.

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

Начнем с малого

Начнем с крошечного предложения. Мы проанализируем его с помощью парсера spaCy и представим результаты тремя разными способами, чтобы помочь контекстуализировать структуру дерева синтаксического анализа.

Первый - это упорядоченный список слов в предложении с указанием роли, которую каждое из них играет.

Вторая - это та же информация, изложенная в том, как деревья синтаксического анализа визуализируются в spaCy.

И третья - немного другая иллюстрация того же дерева, которая легко читается сверху вниз.

Вот четыре момента, на которые следует обратить внимание о деревьях синтаксического анализа:
1. Каждое слово в предложении является узлом (= точкой) на графике. Под словом мы на самом деле подразумеваем «синтаксическое слово», называемое токеном. Например, Она может быть записано одним словом, но представляет собой "Она есть", поэтому Она будет одним токеном, а 's - быть вторым токеном в собственном узле.

2. У дерева есть корень, узел, из которого вытекает остальная часть дерева. Это главный глагол предложения.

3. Как показывают стрелки, края являются направленными. Если ребро переходит от одного узла к другому, первый узел является «родительским», а второй узел - «дочерним». В деревьях синтаксического анализа каждый узел (кроме корня) имеет одного родителя и может иметь ноль или более дочерних узлов.

4. У каждого узла есть метка. Отдельно на каждом ребре есть метка. Это два разных набора ярлыков.

Вы, вероятно, знакомы с набором меток, которые идут на узлах, обозначающих части речи (POS): ГЛАГОЛ, СУЩЕСТВИТЕЛЬНОЕ, ПРИЛАГАЕМЫЙ и т. Д.
Этот список длиннее, чем вы думаете (подробнее об этом через минуту). Вот еще несколько, а полный список можно найти здесь.

А что насчет того, что идет по краям?

Они называются метками синтаксической зависимости, и, по-видимому, некоторые из них универсальны (37, если быть точным), тогда как другие зависят от языка. Вы можете увидеть полный список в документации по spaCy, но все, что вам действительно нужно, это: a. распознать, что они собой представляют, б. понимать, что они помогают ориентироваться в дереве, и c. запомните, какие из них вам пригодятся.

Например, nsubj будет очевидным для поиска, поскольку обычно это тема предложения. Другой популярный - это amod, модификатор прилагательного. В нашем случае женщина водила не какое-то старинное пианино, а особый вид пианино - греческий.

Улучшение тегов частей речи

Предположим, наше предложение изменено на «Она водит греческое пианино». Маркировка POS будет точно такой же - и «drive», и «drive» являются глаголами. Чтобы различать эти два понятия, необходима более совершенная система.

Что ж, полная система тегов POS действительно учитывает это различие. Вот список разных тегов; как и следовало ожидать, это значительно дольше, чем раньше. Опять же, я не могу вспомнить даже половину из этого, поэтому я сохраняю это в документе для справки.

Чтобы различать упрощенную маркировку (которая может сказать вам, что токен - это глагол, но не его время) и полную версию, spaCy вызывает первый POS и второй TAG. Ваше дерево синтаксического анализа может содержать полную маркировку токенов. В своей документации spaCy любезно перечисляет теги с соответствующими POS.

Фразы и поддеревья

Давайте посмотрим, что произойдет, когда мы изменим «Она» на что-то более конкретное. Тема предложения теперь меняется с одного слова на существительную, состоящую из нескольких слов. Следовательно, ребро nsubj указывает на «Queen», и оттуда вытекает поддерево.

Чтобы узнать, где начинается и где заканчивается поддерево, мы можем запросить крайний правый и крайний левый токены в предложении, принадлежащем этому поддереву, и получить все, что находится между ними:

А теперь взгляните на это новое предложение ниже. Несмотря на то, что в этом предложении нет ни одного слова с нашим предыдущим предложением, мы чувствуем сильное сходство между ними. Здесь мы видим, например, что поддерево субъекта синтаксически идентично:

Краткое резюме

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

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

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

Резюме

В своей основной презентации на мероприятии spaCy IRL в 2019 году Йоав Голдберг - исследователь НЛП и директор по исследованиям в Институте искусственного интеллекта Аллена - в общих чертах обозначил методы, используемые для анализа текста.

Он добавил, что большая часть прикладного НЛП по-прежнему использует системы, основанные на правилах, а не последние научные исследования. Среди их преимуществ системы, основанные на правилах, требуют меньше данных, более прозрачны и их легче отлаживать.

Однако они требуют больше лингвистических знаний.

Системы, основанные на правилах, далеки от совершенства, и будущее НЛП, вероятно, будет сочетать правила с машинным обучением и методами глубокого обучения.

В конечном итоге цель состоит в том, чтобы сделать НЛП не только эффективным, но и простым (или, по крайней мере, проще). Это означает снижение первоначальных требований к экспертным знаниям. Не только в машинном обучении, но и в лингвистике.

Мне хотелось бы думать, что эта статья поможет в этом.