Создание механизма логического вывода в Python

Я ищу направление и пытаюсь маркировать эту проблему:

Я пытаюсь создать простой механизм логического вывода (там лучшее имя?) в Python, который возьмет строку и -

1 - создайте список маркеров путем простого создания списка разделенных значений пробела

2 - категоризируйте эти маркеры, с помощью регулярных выражений

3 - Используйте высокоуровневый подшипник для принятия решений на основе классификаций

Пример:

"90001" - один маркер, соответствует индексу regex, правило существует для строки, содержащей просто причины индекса определенное поведение произойти

"30 + 14" - три маркера, regexs для численного значения и соответствия математических операторов, правило существует для численного значения, сопровождаемого математическим оператором, сопровождаемым другими причинами численного значения определенное поведение произойти

Я борюсь с тем, как лучше всего сделать шаг № 3, высокоуровневый подшипник. Я уверен, что некоторая платформа должна существовать. Какие-либо идеи? Кроме того, как Вы характеризовали бы эту проблему? Основанная на правиле система, экспертная система, механизм логического вывода, что-то еще?

Спасибо!

8
задан Art 6 February 2010 в 04:53
поделиться

1 ответ

Я очень удивлен, что шаг #3 доставляет вам хлопоты...

Если предположить, что вы можете правильно маркировать/категоризировать каждую лексему (и что перед категоризацией вы можете найти нужные лексемы, так как может быть много неоднозначных случаев...), то проблема "Шаг #3" кажется той, которую можно легко решить с помощью контекстно-свободной грамматики, где каждое из желаемых действий (таких как поиск ZIP кода или вычисление математических выражений...) было бы символами, а само их производственное правило состояло из возможных категорий лексемен. Чтобы проиллюстрировать это в нотации BNF, мы могли бы иметь что-то вроде

<SimpleMathOperation> ::= <NumericalValue><Operator><NumericalValue>

Может быть, вас беспокоит то, что когда все усложнится, будет сложно выразить все требование в терминах не противоречащих друг другу правил грамматики. А может быть, вас беспокоит то, что правила можно будет добавлять динамически, что заставит грамматическую "компиляционную" логику быть интегрированной в программу? Как бы то ни было, я думаю, что этот 3-й этап будет сравнительно тривиальным.

С другой стороны, и если различные категории (и лежащий в их основе входной текст) таковы, что их также можно описать обычным языком (как вы, кажется, намекаете в вопросе), то парсер и классификатор текста (Шаги #1 и #2...), как правило, менее тривиальны...

Некоторые примеры Python библиотек, которые упрощают написание и оценку грамматики:

6
ответ дан 5 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: