Weights to lttoolbox
Weighted transducers are automata in which each transition in addition to its usual input label is augmented with an output label from a possible new alphabet, and carries some weight element of a semiring.
For weight in lttoolbox which currently supports NDFA system, we need Semi-ring for calculating weight.
A Semiring is defined by two binary operations ⊕ and ⊗ and two designated elements 0 and 1 and it consists of a system like K, ⊕, ⊗, 0, 1 with following properties:-
- ⊕ shows associative, commutative and has 0 as its own identity.
- ⊗ shows associative and has 1 as its own identity.
A left semiring distributes on the left and also a right semiring is similarly defined.
⊕ is used to combine the weight of two identically labeled alternative paths.
⊗ is used to combine weights along a path or when matching paths in composition or intersection.
Calculation of weights in lttoolbox
An arc weight in an FST gives the cost of taking that transition.
Weightclass must have binary functions
Timesthese must form a left or right semiring.
Also in class
Weight, there are some additions which must be defined like the following:-
>>:- This reads textual representation of a weight.
<<:- This prints textual representation of a weight.
LeftSemiring:- This indicates how weights form a left semi-ring.
RightSemiring:- This indicates how weights form a right semi-ring.
Read(istream &):- This reads binary representation of a weight.
Write(ostream &):- This writes binary representation of a weight.
ApproxEqual:- This shows approximate equality (for inexact weights).