1 # See www.openfst.org for extensive documentation on this weighted
2 # finite-state transducer library.
5 from libc.time cimport time_t
6 from libc.time cimport time
8 from libcpp cimport bool
9 from libcpp.vector cimport vector
10 from libcpp.utility cimport pair
12 from libcpp.string cimport string
13 from basictypes cimport int32
14 from basictypes cimport int64
15 from basictypes cimport uint32
16 from basictypes cimport uint64
17 from ios cimport istream
18 from ios cimport ostream
21 cdef extern from "<fst/util.h>" nogil:
23 # Note that this is a copy, so it should be viewed as read-only.
25 bool FLAGS_fst_error_fatal
28 cdef extern from "<fst/fstlib.h>" namespace "fst" nogil:
31 const uint64 kExpanded
34 const uint64 kAcceptor
35 const uint64 kNotAcceptor
36 const uint64 kIDeterministic
37 const uint64 kNonIDeterministic
38 const uint64 kODeterministic
39 const uint64 kNonODeterministic
40 const uint64 kEpsilons
41 const uint64 kNoEpsilons
42 const uint64 kIEpsilons
43 const uint64 kNoIEpsilons
44 const uint64 kOEpsilons
45 const uint64 kNoOEpsilons
46 const uint64 kILabelSorted
47 const uint64 kNotILabelSorted
48 const uint64 kOLabelSorted
49 const uint64 kNotOLabelSorted
50 const uint64 kWeighted
51 const uint64 kUnweighted
54 const uint64 kInitialCyclic
55 const uint64 kInitialAcyclic
56 const uint64 kTopSorted
57 const uint64 kNotTopSorted
58 const uint64 kAccessible
59 const uint64 kNotAccessible
60 const uint64 kCoAccessible
61 const uint64 kNotCoAccessible
63 const uint64 kNotString
64 const uint64 kWeightedCycles
65 const uint64 kUnweightedCycles
66 const uint64 kNullProperties
67 const uint64 kCopyProperties
68 const uint64 kIntrinsicProperties
69 const uint64 kExtrinsicProperties
70 const uint64 kSetStartProperties
71 const uint64 kSetFinalProperties
72 const uint64 kAddStateProperties
73 const uint64 kAddArcProperties
74 const uint64 kSetArcProperties
75 const uint64 kDeleteStatesProperties
76 const uint64 kDeleteArcsProperties
77 const uint64 kStateSortProperties
78 const uint64 kArcSortProperties
79 const uint64 kILabelInvariantProperties
80 const uint64 kOLabelInvariantProperties
81 const uint64 kWeightInvariantProperties
82 const uint64 kAddSuperFinalProperties
83 const uint64 kRmSuperFinalProperties
84 const uint64 kBinaryProperties
85 const uint64 kTrinaryProperties
86 const uint64 kPosTrinaryProperties
87 const uint64 kNegTrinaryProperties
88 const uint64 kFstProperties
91 const uint32 kArcILabelValue
92 const uint32 kArcOLabelValue
93 const uint32 kArcWeightValue
94 const uint32 kArcNextStateValue
95 const uint32 kArcNoCache
96 const uint32 kArcValueFlags
97 const uint32 kArcFlags
100 const uint32 kEncodeLabels
101 const uint32 kEncodeWeights
102 const uint32 kEncodeFlags
104 # Default argument constants.
106 const float kShortestDelta
108 const int64 kNoStateId
124 cdef cppclass ComposeOptions:
126 ComposeOptions(bool, ComposeFilter)
129 enum DeterminizeType:
130 DETERMINIZE_FUNCTIONAL
131 DETERMINIZE_NONFUNCTIONAL
132 DETERMINIZE_DISAMBIGUATE
140 enum EpsNormalizeType:
162 # This is a templated struct at the C++ level, but Cython does not support
163 # templated structs unless we pretend they are full-blown classes.
164 cdef cppclass RandGenOptions[RandArcSelection]:
166 RandGenOptions(const RandArcSelection &, int32, int32, bool, bool)
169 enum ReplaceLabelType:
170 REPLACE_LABEL_NEITHER
181 cdef cppclass SymbolTableTextOptions:
183 SymbolTableTextOptions(bool)
187 cdef cppclass SymbolTable:
191 SymbolTable(const string &)
194 SymbolTable *Read(const string &)
197 SymbolTable *ReadText(const string &, const SymbolTableTextOptions &)
199 int64 AddSymbol(const string &, int64)
201 int64 AddSymbol(const string &)
205 # Aliased for overload.
206 string FindSymbol "Find"(int64)
208 # Aliased for overload.
209 int64 FindIndex "Find"(string)
211 # Aliased for overload.
212 bool MemberSymbol "Member"(string)
214 # Aliased for overload.
215 bool MemberIndex "Member"(int64)
217 void AddTable(const SymbolTable &)
219 int64 GetNthKey(ssize_t)
223 void SetName(const string &)
227 string LabeledCheckSum()
229 bool Write(const string &)
231 bool WriteText(const string &)
238 SymbolTable *CompactSymbolTable(const SymbolTable &syms)
240 SymbolTable *MergeSymbolTable(const SymbolTable &, const SymbolTable &,
243 SymbolTable *FstReadSymbols(const string &, bool)
246 cdef cppclass SymbolTableIterator:
248 SymbolTableIterator(const SymbolTable &)
261 cdef extern from "<fst/script/fstscript.h>" namespace "fst::script" nogil:
265 cdef cppclass WeightClass:
269 WeightClass(const WeightClass &)
271 WeightClass(const string &, const string &)
278 const WeightClass &Zero(const string &)
281 const WeightClass &One(const string &)
284 const WeightClass &NoWeight(const string &)
287 cdef bool Eq "operator=="(const WeightClass &, const WeightClass &)
290 cdef bool Ne "operator!="(const WeightClass &, const WeightClass &)
292 cdef WeightClass Plus(const WeightClass &, const WeightClass &)
294 cdef WeightClass Times(const WeightClass &, const WeightClass &)
296 cdef WeightClass Divide(const WeightClass &, const WeightClass &)
298 cdef WeightClass Power(const WeightClass &, size_t)
301 cdef cppclass ArcClass:
303 ArcClass(const ArcClass &)
305 ArcClass(int64, int64, const WeightClass &, int64)
316 cdef cppclass FstClass:
318 FstClass(const FstClass &)
321 FstClass *Read(const string &)
323 # Aliased for overload.
325 FstClass *ReadFromStream "Read"(istream &, const string &)
329 WeightClass Final(int64)
331 size_t NumArcs(int64)
333 size_t NumInputEpsilons(int64)
335 size_t NumOutputEpsilons(int64)
337 const string &ArcType()
339 const string &FstType()
341 const SymbolTable *InputSymbols()
343 const SymbolTable *OutputSymbols()
345 const string &WeightType()
347 bool Write(const string &)
349 bool Write(ostream &, const string &)
351 uint64 Properties(uint64, bool)
353 bool ValidStateId(int64)
356 cdef cppclass MutableFstClass(FstClass):
358 bool AddArc(int64, const ArcClass &)
362 bool DeleteArcs(int64, size_t)
364 bool DeleteArcs(int64)
366 bool DeleteStates(const vector[int64] &)
370 SymbolTable *MutableInputSymbols()
372 SymbolTable *MutableOutputSymbols()
376 bool ReserveArcs(int64, size_t)
378 void ReserveStates(int64)
382 bool SetFinal(int64, const WeightClass &)
384 void SetInputSymbols(SymbolTable *)
386 void SetOutputSymbols(SymbolTable *)
388 void SetProperties(uint64, uint64)
390 cdef cppclass VectorFstClass(MutableFstClass):
392 VectorFstClass(const FstClass &)
394 VectorFstClass(const string &)
398 cdef cppclass EncodeMapperClass:
400 EncodeMapperClass(const string &, uint32, EncodeType)
402 # Aliased to __call__ as Cython doesn't have good support for operator().
403 ArcClass __call__ "operator()"(const ArcClass &)
405 const string &ArcType()
409 uint64 Properties(uint64)
413 const SymbolTable *InputSymbols()
415 const SymbolTable *OutputSymbols()
417 void SetInputSymbols(const SymbolTable *)
419 void SetOutputSymbols(const SymbolTable *)
421 const string &WeightType()
427 cdef cppclass ArcIteratorClass:
429 ArcIteratorClass(const FstClass &, int64)
445 void SetFlags(uint32, uint32)
447 cdef cppclass MutableArcIteratorClass:
449 MutableArcIteratorClass(MutableFstClass *, int64)
461 void SetValue(const ArcClass &)
467 void SetFlags(uint32, uint32)
469 cdef cppclass StateIteratorClass:
471 StateIteratorClass(const FstClass &)
482 ctypedef pair[int64, const FstClass *] LabelFstClassPair
484 ctypedef pair[int64, int64] LabelPair
487 cdef extern from "<fst/script/fstscript.h>" namespace "fst::script" nogil:
492 INPUT_EPSILON_ARC_FILTER
493 OUTPUT_EPSILON_ARC_FILTER
499 cdef void ArcSort(MutableFstClass *, ArcSortType)
501 cdef ClosureType GetClosureType(bool)
503 cdef void Closure(MutableFstClass *, ClosureType)
505 cdef FstClass *CompileFstInternal(istream &, const string &,
506 const string &, const string &,
507 const SymbolTable *, const SymbolTable *,
508 const SymbolTable*, bool, bool, bool, bool,
511 cdef void Compose(FstClass &, FstClass &, MutableFstClass *,
512 const ComposeOptions &)
514 cdef void Concat(MutableFstClass *, const FstClass &)
516 cdef void Connect(MutableFstClass *)
518 cdef FstClass *Convert(const FstClass &, const string &)
520 cdef void Decode(MutableFstClass *, const EncodeMapperClass &)
522 cdef cppclass DeterminizeOptions:
524 DeterminizeOptions(float, const WeightClass &, int64, int64,
525 DeterminizeType, bool)
527 cdef void Determinize(const FstClass &, MutableFstClass *,
528 const DeterminizeOptions &)
530 cdef cppclass DisambiguateOptions:
532 DisambiguateOptions(float, const WeightClass &, int64, int64)
534 cdef void Disambiguate(const FstClass &, MutableFstClass *,
535 const DisambiguateOptions &)
537 cdef void Difference(const FstClass &, const FstClass &, MutableFstClass *,
538 const ComposeOptions &)
540 cdef void DrawFst(const FstClass &fst, const SymbolTable *,
541 const SymbolTable *, const SymbolTable *, bool,
542 const string &, float, float, bool, bool, float, float, int,
543 int, const string &, bool, ostream *, const string &)
545 cdef void Encode(MutableFstClass *, EncodeMapperClass *)
547 cdef EpsNormalizeType GetEpsNormalizeType(bool)
549 cdef void EpsNormalize(const FstClass &, MutableFstClass *, EpsNormalizeType)
551 cdef bool Equal(const FstClass &, const FstClass &, float)
553 cdef bool Equivalent(const FstClass &, const FstClass &, float)
555 cdef void Intersect(const FstClass &, const FstClass &, MutableFstClass *,
556 const ComposeOptions &)
558 cdef void Invert(MutableFstClass *fst)
560 cdef bool Isomorphic(const FstClass &, const FstClass &, float)
567 OUTPUT_EPSILON_MAPPER
577 cdef FstClass *Map(const FstClass &, MapType, float, const WeightClass &)
579 cdef void Minimize(MutableFstClass *, MutableFstClass *, float, bool)
581 cdef ProjectType GetProjectType(bool)
583 cdef void Project(MutableFstClass *, ProjectType)
585 cdef void PrintFst(const FstClass &, ostream &, const string &,
586 const SymbolTable *, const SymbolTable *,
587 const SymbolTable *, bool, bool, const string &)
589 cdef void Prune(const FstClass &, MutableFstClass *, const WeightClass &,
592 cdef void Prune(MutableFstClass *, const WeightClass &, int64, float)
594 cdef void Push(const FstClass &, MutableFstClass *, uint32 flags,
597 cdef void Push(MutableFstClass *, ReweightType, float, bool)
599 enum RandArcSelection:
601 LOG_PROB_ARC_SELECTOR
602 FAST_LOG_PROB_ARC_SELECTOR
604 cdef bool RandEquivalent(const FstClass &, const FstClass &, int32, float,
605 time_t, const RandGenOptions[RandArcSelection] &)
607 cdef void RandGen(const FstClass &, MutableFstClass *, time_t,
608 const RandGenOptions[RandArcSelection] &)
610 cdef void Relabel(MutableFstClass *, const SymbolTable *,
611 const SymbolTable *, const string &, bool,
612 const SymbolTable *, const SymbolTable *, const string &,
615 cdef void Relabel(MutableFstClass *, const vector[LabelPair] &,
616 const vector[LabelPair] &)
618 cdef cppclass ReplaceOptions:
620 ReplaceOptions(int64, ReplaceLabelType, ReplaceLabelType, int64)
622 cdef void Replace(const vector[LabelFstClassPair] &, MutableFstClass *,
623 const ReplaceOptions &)
625 cdef void Reverse(const FstClass &, MutableFstClass *, bool)
627 cdef void Reweight(MutableFstClass *, const vector[WeightClass] &,
630 cdef cppclass RmEpsilonOptions:
632 RmEpsilonOptions(QueueType, bool, const WeightClass &, int64, float)
634 cdef void RmEpsilon(MutableFstClass *, const RmEpsilonOptions &)
636 cdef cppclass ShortestDistanceOptions:
638 ShortestDistanceOptions(QueueType, ArcFilterType, int64, float)
640 cdef void ShortestDistance(const FstClass &, vector[WeightClass] *,
641 const ShortestDistanceOptions &)
643 cdef void ShortestDistance(const FstClass &, vector[WeightClass] *, bool,
646 cdef cppclass ShortestPathOptions:
648 ShortestPathOptions(QueueType, int32, bool, float, const WeightClass &,
651 cdef void ShortestPath(const FstClass &, MutableFstClass *,
652 const ShortestPathOptions &)
654 cdef void Synchronize(const FstClass &, MutableFstClass *)
656 cdef bool TopSort(MutableFstClass *)
658 cdef void Union(MutableFstClass *, const FstClass &)
660 cdef bool Verify(const FstClass &)
663 cdef extern from "<fst/script/getters.h>" namespace "fst::script" nogil:
665 cdef bool GetArcSortType(const string &, ArcSortType *)
667 cdef bool GetComposeFilter(const string &, ComposeFilter *)
669 cdef bool GetDeterminizeType(const string &, DeterminizeType *)
671 cdef uint32 GetEncodeFlags(bool, bool)
673 cdef bool GetMapType(const string &, MapType *)
675 cdef uint32 GetPushFlags(bool, bool, bool, bool)
677 cdef bool GetQueueType(const string &, QueueType *)
679 cdef bool GetRandArcSelection(const string &, RandArcSelection *)
681 cdef bool GetReplaceLabelType(string, bool, ReplaceLabelType *)
683 cdef ReweightType GetReweightType(bool)
686 cdef extern from "<fst/extensions/far/far.h>" namespace "fst" nogil:
695 cdef extern from "<fst/extensions/far/getters.h>" \
696 namespace "fst" nogil:
698 string GetFarTypeString(FarType)
701 cdef extern from "<fst/extensions/far/getters.h>" \
702 namespace "fst::script" nogil:
704 FarType GetFarType(const string &)
707 cdef extern from "<fst/extensions/far/far-class.h>" \
708 namespace "fst::script" nogil:
710 cdef cppclass FarReaderClass:
712 const string &ArcType()
718 bool Find(const string &)
720 const FstClass *GetFstClass()
722 const string &GetKey()
730 # For simplicity, we always use the multiple-file one.
733 FarReaderClass *Open(const vector[string] &)
735 cdef cppclass FarWriterClass:
737 bool Add(const string &, const FstClass &)
741 const string &ArcType()
746 FarWriterClass *Create(const string &, const string &, FarType)