На самом деле, нормальная форма Хомского (CNF) не требует запуска CYK, только бинаризация. Бинаризация необходима для сохранения кубической сложности синтаксического анализа, но важна только в отношении нетерминалов (NT). Но затем, если у вас есть правила, включающие только 2 нетерминала и несколько терминалов, алгоритм CYK становится более сложным для программирования и объяснения.
Как вы говорите, есть много способов сделать бинаризацию. Некоторые из них будут давать меньшие грамматики, чем другие. Например
X -> B C D
Y -> B C E
может быть преобразован в двоичную форму как
X -> Z D
Y -> Z E
Z -> B C
таким образом, сохраняя одно правило путем факторизации, что может сэкономить на вычислениях и размере результата.
Но с другими правилами вы можете захотеть факторизовать конец правил, а не начало.
Я не знаком с работой Сонга, Дина и Линя , на которую ссылается ответ Роба Симмонса . Идея интересная, но мне интересно, насколько она эффективна по сравнению с другими способами оптимизации вычислений. Я не так боюсь.
Дело в том, что анализ проблем только в отношении чистого алгоритма CKY кажется немного академическим, но дорогостоящим упражнением, поскольку существуют другие виды оптимизации, которые могут значительно улучшить устранение тупиковых парсингов.
CYK - это лишь одна из самых простых вариаций в семействе алгоритмов, которые, очевидно, построены на одной модели динамического программирования. Я говорю, по- видимому, потому что самая простая версия этих алгоритмов не известна как динамическое программирование, а как перекрестный продукт. Это старая конструкция CF-грамматики G, которая порождает пересечение языка CF-грамматики F и обычного языка FSA A. из-за работы
Бар Гилеля, Перлеса и Шамира (1961) , как отметил Ланг в 1995 году .
Все синтаксические анализаторы диаграмм или общие CF-анализаторы, основанные на динамическом программировании, могут рассматриваться как «оптимизированный» вариант построения этого перекрестного продукта, причем оптимизация используется главным образом во избежание бесполезных вычислений синтаксического анализатора. Но проблема тонкая, поскольку избегание бесполезных вычислений может привести к дублированию полезных, что может быть хуже.
Будучи восходящим, алгоритм CKY производит бесполезные вычисления частичных разборов, которые не могут быть выведены из аксиомы грамматики.
Алгоритмы, такие как синтаксический анализатор GLR (чтобы назвать один из наиболее известных, хотя ошибочная версия была опубликована), имеют некоторые нисходящие знания, которые позволят избежать многих таких бесполезных вычислений, возможно, за плату. И есть много других вариантов с другим поведением относительно экономии на бесполезных вычислениях ..
Именно с учетом этих стратегий оптимизации следует проанализировать стратегию бинаризации. Какой смысл оптимизировать то, что может быть незначительной проблемой, и игнорировать более мощные методы.
Оптимизация процесса синтаксического анализа также тесно связана с «качеством» полученной структуры синтаксического анализа, которая представляет все возможные синтаксические анализы, и часто называется (разделяемым) лесом анализа. Я обсуждаю это в другом ответе .
Некоторые из этих вопросов обсуждаются в литературе. Например, Билло и Лэнг анализируют некоторые аспекты бинаризации в отношении стратегий синтаксического анализа.