Module rustfst::semirings

source ·
Expand description

Provides a trait that shall be implemented for all weights stored inside a wFST.

Structs

Boolean semiring: (&, |, false, true).
UnionWeight of GallicWeightRestrict.
Product of StringWeightLeft and an arbitrary weight.
Product of StringWeightRestrict and an arbitrary weight.
Product of StringWeighRestrict and an arbitrary weight.
Product of StringWeightRight and an arbitrary weight.
Probability semiring: (x, +, 0.0, 1.0).
Log semiring: (log(e^-x + e^-y), +, inf, 0).
Probability semiring: (x, +, 0.0, 1.0).
Product semiring: W1 * W2.
Properties verified by the Semiring.
String semiring: (longest_common_prefix, ., Infinity, Epsilon)
String semiring: (identity, ., Infinity, Epsilon)
String semiring: (longest_common_suffix, ., Infinity, Epsilon)
Tropical semiring: (min, +, inf, 0).
Semiring that uses Times() and One() from W and union and the empty set for Plus() and Zero(), respectively. Template argument O specifies the union weight options as above.

Enums

Determines direction of division.
Determines whether to use left or right string semiring. Includes a ‘restricted’ version that signals an error if proper prefixes/suffixes would otherwise be returned by Plus, useful with various algorithms that require functional transducer input with the string semirings.

Traits

A semiring (S, ⊕, ⊗, 0, 1) is said to be complete if for any index set I and any family (ai)i ∈ I of elements of S, ⊕(ai)i∈I is an element of S whose definition does not depend on the order of the terms in the ⊕-sum. Note that in a complete semiring all weighted transducers are regulated since all infinite sums are elements of S. For more information : https://cs.nyu.edu/~mohri/pub/hwa.pdf
The weight on an Fst must implement the Semiring trait. Indeed, the weight set associated to a Fst must have the structure of a semiring. (S, +, *, 0, 1) is a semiring if (S, +, 0) is a commutative monoid with identity element 0, (S, *, 1) is a monoid with identity element 1, * distributes over +, 0 is an annihilator for *. Thus, a semiring is a ring that may lack negation. For more information : https://cs.nyu.edu/~mohri/pub/hwa.pdf
A complete semiring S is a starsemiring that is a semiring that can be augmented with an internal unary closure operation ∗ defined by a∗=⊕an (infinite sum) for any a ∈ S. Furthermore, associativity, commutativity, and distributivity apply to these infinite sums. For more information : https://cs.nyu.edu/~mohri/pub/hwa.pdf
A semiring is said to be divisible if all non-0 elements admit an inverse, that is if S-{0} is a group. (S, +, *, 0, 1) is said to be weakly divisible if for any x and y in S such that x + y != 0, there exists at least one z such that x = (x+y)*z. For more information : https://cs.nyu.edu/~mohri/pub/hwa.pdf