1.5 QSMM Components ¶
The QSMM library consists of the following main components:
- Actor implementation.
Actor is an adaptive probabilistic mapping.
An actor has a number of adjustable modes and parameters and supports limited customization of its algorithms.
The Actor API makes it possible to create and destroy actors and perform various operations on them.
The main operation is obtaining an outcome for a particular argument.
Supplying the spur to an actor modulates causal relationships between the arguments and outcomes.
- Multinode model engine.
It is an engine for running adaptive (“intelligent”) state models.
The engine relies on actors to achieve adaptive behavior.
A node, a state sub-model represented by a probabilistic finite automaton, interacts with an environment by means of executing assembler instructions.
A developer provides a set of assembler instructions and provides their implementations as callback functions.
By default, every node is a probabilistic finite automaton of uniform structure—it has all states connected in all possible ways with equal probabilities.
- Assembler.
Parses a probabilistic assembler program and converts it to a probabilistic finite automaton.
The assembler program defines probabilities of transitions between automaton states.
The probabilities specify soft and hard constraints on automaton behavior.
- Disassembler.
Converts a probabilistic finite automaton with state transition probabilities adjusted by spur modulation back to a probabilistic assembler program.
The QSMM library also includes a C implementation of functionality of STL map and multimap templates.
A developer can use it to create ordered tree mapping objects in C programs without the need to rewrite them in C++.
The QSMM package includes the following main tools:
- Adaptive top-down parser.
Adaptively parses a terminal symbol sequence in the top-down direction according to a template grammar specified as a set of nonterminal symbols with associated regular expressions.
The parser learns a restricted (more precise) grammar by iteratively determinizing the template grammar while parsing the terminal symbol sequence multiple times.
- Adaptive bottom-up parser.
Adaptively parses a list of terminal symbol sequences in the bottom-up direction by utilizing a top-down template grammar containing references to the productions of a context-free grammar inferred from a bottom-up template grammar.
Both the top-down template grammar and bottom-up template grammar are sets of nonterminal symbols with associated regular expressions, where the former grammar is a transformation of the latter grammar.
While parsing the list of terminal symbol sequences multiple times, the parser learns a more precise top-down grammar and, consequently, learns a PCFG (Probabilistic Context-Free Grammar) by restricting the context-free grammar inferred from the bottom-up template grammar.
- Bottom-up to top-down grammar converter.
Converts a template grammar intended for parsing input terminal symbol sequences in the bottom-up direction to a template grammar intended for parsing input terminal symbol sequences in the top-down direction.
The latter (top-down) template grammar can contain references to the productions of a context-free grammar inferred from the former (bottom-up) template grammar.
-
Converter to a factored PCFG.
Converts a template grammar specified as a set of nonterminal symbols with associated regular expressions to a PCFG for parsing terminal symbol sequences up to specified length in Viterbi style.
Every nonterminal symbol of the PCFG has exact length of a terminal symbol sequence the nonterminal symbol consumes.
The PCFG has multiple start nonterminal symbols for various lengths of input parse units.