Разбор текстовых игровых команд? - PullRequest
3 голосов
/ 16 мая 2011

Я заинтересован в написании механизма синтаксического анализа, такого как в Inform, который очень надежен.

Я пробовал несколько разных подходов:

  • регулярное выражение. Для регулярных выражений я могу сопоставить только {verb} {noun1 optional-noun2} {optional-preposition} {indirect-noun1 optional-indirect-noun2} Это не очень хорошо работает.
  • список предопределенных глаголов с соответствующими им предлогами и существительными. Этот подход слишком сложен, так как должно быть МНОГО предопределенных данных.
  • разбить на разные слова и запустить их через словарь карт. Опять же, это слишком сложно и не практично из-за двусмысленности некоторых слов, таких как «смотреть» или «надевать (выходить)»

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

У меня есть несколько идей:

  • Как я уже сказал, обработка естественного языка.
  • Разработка синтаксического анализатора, который анализирует что-то похожее на SQL.

Есть еще идеи? Как мне заняться дизайном и их реализацией?

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

1 Ответ

2 голосов
/ 16 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...