Фон
В прошлом посте я уже говорил о том, как преобразовать предложение в токены, готовые к дальнейшему анализу.
Теперь я собираюсь поговорить о том, как преобразовать его в график.
Подход
Для этого мне нужны следующие вспомогательные функции.
На этот раз немного длинновато со вспомогательными функциями, поэтому я пройдусь по функциям.
А. Токенизатор
У меня есть две разные функции токенизатора. Одним из них является «spanner», который вы найдете в моем последнем посте. Другой - тот, который я представляю здесь. Он называется «dynamicTokenizer». Их различия заключаются в том, как рекомбинировать необработанные токены обратно в осмысленную сущность.
«Spanner» использует прямой вывод процессора NER, то есть «bionlp13cg». «dynamicTokenizer», с другой стороны, использует мою пользовательскую функцию «consolidatedpassV2». Эта функция выполняет ту же задачу, что и встроенная строфа NER. Однако этот процессор зависит от набора правил, а не от процессора на основе нейронной сети. Набор правил представляет собой общие правила того, как английский язык используется для построения значимой фразы (например, именной фразы, прилагательной фразы и т. Д.), И поэтому он является детерминированным. Его необходимо использовать вместе с «dynamicToknierzer», потому что при каждом проходе теги части речи (POS) для каждого токена будут меняться, что приводит к еще одной рекомбинации. Процесс будет продолжаться до тех пор, пока не достигнет устойчивого состояния, при котором количество токенов больше не изменится.
Функция «песочница» — это еще одна вспомогательная функция для отображения процесса токенизации «dynamicTokenizer» и его окончательных результатов токенизации. Это помогает мне визуализировать результат и изменить функции в соответствии с моей целью, если результат мне не нравится.
B. Правила подключения токенов
Теперь у нас есть токенизированное предложение. Нам нужны некоторые правила, которые помогут нам построить сеть, отражающую базовый синтаксис. При построении графика я использую два руководящих принципа.
1. Линейная последовательность порядка слов
2. Зависимость между двумя словами
Первый довольно прост. Это просто порядок слов в английском предложении, который читается слева направо. Ничего особенного.
Второй сильно зависит от грамматики зависимостей [1]. Анализ на основе зависимостей отличается от анализа на основе групп [2], в котором каждый токен в качестве узла будет классифицироваться как терминальный или нетерминальный. Анализ на основе зависимостей не различает каждый узел, а структура зависимостей определяется отношением между словом (головой) и его зависимостями. Структуры зависимостей более плоские, чем структуры фраз, отчасти потому, что в них отсутствует конечная составляющая фразы глагола. И именно по этой причине я выбираю выходные данные синтаксического анализа на основе зависимостей для построения графика, потому что я хочу предоставить возможность одному токену перейти к другому токену, игнорируя порядок слов в предложении. Я позаимствовал эту идею из алгоритма PageRank [3].
Антракт
Я подробно описал, какие шаги нужно разбить предложение на токены, готовые для построения графа.
В следующем посте я расскажу о графике, построенном на основе правил и процессов, изложенных здесь.
Чао пока и следите за обновлениями.
[1] https://en.wikipedia.org/wiki/Dependency_grammar