Domanda

Sto cercando di direzione e di tentare di etichetta questo problema:

Sto cercando di creare un semplice motore di inferenza (c'è un nome migliore?) in Python, che avrà una stringa e -

1 - creare una lista di token semplicemente la creazione di un elenco di valori separati da uno spazio bianco

2 - classificare questi gettoni, uso di espressioni regolari

3 - Utilizzare un livello più alto insieme di regole per prendere decisioni basate sulla suddivisione di

Esempio:

"90001" - un token, confronta il codice di avviamento postale regex, esiste una regola per una stringa che contiene solo un codice postale le cause di un determinato comportamento si verifichi

"30 + 14" - tre gettoni, regexs per valore numerico e gli operatori matematici partita, esiste una regola per un valore numerico seguito da un operatore matematico, seguito da un altro valore numerico le cause di un determinato comportamento si verifichi

Sto lottando con il modo migliore per fare il passo #3, il livello più alto insieme di regole.Sono sicuro che alcuni framework deve esistere.Tutte le idee?Inoltre, come si caratterizzano questo problema?La regola di base del sistema, expert system, motore di inferenza, qualcos'altro?

Grazie!

È stato utile?

Soluzione

Sono molto sorpreso che passo #3 è quello che ti dà problemi...

Supponendo che si può label/classificare correttamente ogni token (e che prima di categorizzazione è possibile trovare il proprio token, come ci possono essere molti casi ambigui...), il "Passo #3" problema sembra quello che potrebbe facilmente essere affrontato con una grammatica libera dal contesto cui ciascuna delle azioni desiderate (ad esempio il cap di ricerca o espressione Matematica di calcolo...) sarebbe simboli con la loro regola di produzione di per sé le possibili categorie di token.Per illustrare questo in notazione BNF, si potrebbe avere qualcosa di simile

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

Forse la vostra preoccupazione è che quando le cose si fanno complicate, diventerà difficile esprimere tutto il requisito in termini di non-conflitto di regole di grammatica.O forse la vostra preoccupazione è che si potrebbe aggiungere dinamicamente le regole, quindi, costringendo la grammatica "compilation" logica integrata con il programma ?Qualunque sia la preoccupazione, penso che questo 3 ° passo relativamente essere banale.

D'altra parte, e se le diverse categorie (e sottostante di testo di input) sono tali che possono essere descritti con una lingua normali (come ti sembrano alludere alla questione), un parser testuale e di classificazione (Punti #1 e #2...) è in genere meno di un'attività banale..

Alcuni esempi di librerie Python che permettono di semplificare la stesura e la valutazione di grammatiche:

Altri suggerimenti

Sembra che la ricerca di "grammatica inferenza" (grammatica, induzione, biblioteca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top