문제

나는 방향을 찾고 있습니다 상표 이 문제:

파이썬에 간단한 추론 엔진 (더 나은 이름이 있습니까?)을 구축하려고합니다.

1- 단순히 공백 분리 된 값 목록을 작성하여 토큰 목록을 만듭니다.

2- 일반 표현식을 사용 하여이 토큰을 분류하십시오

3- 더 높은 수준의 규칙 세트를 사용하여 분류에 따라 결정을 내립니다.

예시:

"90001" - 하나의 토큰은 Zipcode Regex와 일치하며 규칙이 있습니다. 우편 번호 만 포함하는 문자열 특정 행동이 발생합니다

"30 + 14" - 3 개의 토큰, 수치 값에 대한 정규식 및 수학 연산자 일치, 규칙이 존재합니다. 수치 값과 수학 연산자가 뒤 따르는 다른 수치 값이 뒤 따릅니다. 특정 행동이 발생합니다

나는 3 단계를 가장 잘하는 방법, 더 높은 수준의 규칙 세트에 어려움을 겪고 있습니다. 일부 프레임 워크가 존재해야한다고 확신합니다. 어떤 아이디어? 또한이 문제를 어떻게 특성화 하시겠습니까? 규칙 기반 시스템, 전문가 시스템, 추론 엔진 등이 있습니까?

감사!

도움이 되었습니까?

해결책

3 단계 #3이 당신에게 어려움을 겪는 사람이라는 것에 매우 놀랐습니다 ...

각 토큰을 올바르게 레이블링/분류 할 수 있다고 가정하면 (그리고 분류하기 전에 많은 모호한 경우가있을 수 있으므로 적절한 토큰을 찾을 수 있습니다 ...), "3 단계"문제는 컨텍스트가없는 문법으로 쉽게 다룰 수있는 것 같습니다. 원하는 동작 (예 : 우편 번호 조회 또는 수학적 표현 계산 등)은 가능한 토큰 범주로 만들어진 생산 규칙 자체가있는 기호가됩니다. 이것을 BNF 표기법으로 설명하기 위해

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

어쩌면 당신의 관심사는 상황이 복잡해지면 비 분쇄 된 문법 규칙에 따라 전체 요구 사항을 표현하기가 어려워 질 것입니다. 아니면 당신의 관심사는 규칙을 동적으로 추가 할 수 있으므로 문법 "컴파일"논리가 프로그램과 통합되도록 강요 할 수 있다는 것입니다. 우려가 무엇이든, 나는이 세 번째 단계가 비교적 사소 할 것이라고 생각합니다.

반면에, 다양한 범주 (및 기본 입력 텍스트)가 일반 언어로 설명 할 수있는 경우 (질문에서 힌트를 힌트하는 것처럼) 텍스트 파서 및 분류기 (1 단계 및 1 단계 및 #2 ...)는 일반적으로 사소한 일보다 적습니다 ..

문법 작성 및 평가를 단순화하는 Python 라이브러리 : 일부 예 :

다른 팁

"문법 추론"(문법 유도) 라이브러리를 검색하는 것처럼 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top