OpenFST.jl

Author laurentbartholdi
Popularity
1 Star
Updated Last
5 Months Ago
Started In
October 2022

OpenFST

Implements finite state transducers via the C++ library OpenFST. Its syntax follows closely that of the C++ library.

julia> using Pkg; Pkg.add("OpenFST"); Pkg.build("OpenFST")

julia> # the sheep language: ba, baa, baaa, ...

julia> # start state is 0, accept states are [3], alphabet is {a,b}

julia> sheep = StdVectorFst(0, [(0, 1, :b), (1, 2, :a), (2, 3, :a), (3, 3, :a)], [3], Dict(:a => 1, :b => 2))
StdVectorFst(4 state(s))

julia> OpenFST.growth(sheep) # number of words
OpenFST.growth(sheep)
10-element Vector{BigInt}:
 0
 0
 0
 1
 1
 1
 1
 1
 1
 1

julia> sheepsheep = concat(sheep,sheep) # concatenation: baba, baaba, babaa, ...
StdVectorFst(8 state(s))

julia> OpenFST.growth(sheepsheep)
10-element Vector{BigInt}:
 0
 0
 0
 0
 0
 0
 1
 2
 3
 4

julia> sheepsheepsheep |> determinize |> minimize
StdVectorFst(9 state(s))

julia> (initial, transitions, accepting) = unpack(ans)
(0, [(0, 1, ), (1, 2, :b), (2, 3, :a), (3, 4, :a), (4, 5, ), (4, 4, :a), (5, 6, :b), (6, 7, :a), (7, 8, :a), (8, 8, :a)], [4, 8])

Used By Packages

No packages found.