I have heard many good things about OpenFST, yet I struggle with making it work. I am constructing an FST automaton (fstcompile) that I want to use as an acceptor to check if a set of strings are matching (very much alike regular expressions but with the advantages provided by optimizations of the automatons provided by OpenFST). And here is the thing:
How to check if the resulting automaton accepts a string?
I found a suggestion that the input string shall be turned into a simple automaton and composed with the accepting automaton to get a result. I found it highly cumbersome and strange. Is there an easier way (either via cmd line or Python/C++)?
Why OpenFST does not seem to have 'run' or 'accept' or 'transduce' command?
1.3k views Asked by sophros At
1
There are 1 answers
Related Questions in PYTHON
- How to store a date/time in sqlite (or something similar to a date)
- Instagrapi recently showing HTTPError and UnknownError
- How to Retrieve Data from an MySQL Database and Display it in a GUI?
- How to create a regular expression to partition a string that terminates in either ": 45" or ",", without the ": "
- Python Geopandas unable to convert latitude longitude to points
- Influence of Unused FFN on Model Accuracy in PyTorch
- Seeking Python Libraries for Removing Extraneous Characters and Spaces in Text
- Writes to child subprocess.Popen.stdin don't work from within process group?
- Conda has two different python binarys (python and python3) with the same version for a single environment. Why?
- Problem with add new attribute in table with BOTO3 on python
- Can't install packages in python conda environment
- Setting diagonal of a matrix to zero
- List of numbers converted to list of strings to iterate over it. But receiving TypeError messages
- Basic Python Question: Shortening If Statements
- Python and regex, can't understand why some words are left out of the match
Related Questions in OPENFST
- OpenFST build fails
- Generate and Store random Path in openFST
- How to validate input according to Open FST?
- libtool: error: can't build x86_64-w64-mingw32 shared library unless -no-undefined is specified
- Kaldi error while running script prepare_lang.sh -- GenericRegister::GetEntry: No such file or directory
- What does "ERROR: fstsymbols: Saving osymbols but there are no output symbols" means and how can i solve it?
- OpenFST - creating FST's from list of words
- Understanding fst
- OpenFST install freezing at seemingly random times
- Error when instaling Openfst Thrax [configure: error: fst/fst.h header not found]
- How can I edit the weights of a GrammarFst?
- How can I install and use Pynini on Windows 10?
- How do I write a Tensorflow custom op containing a persistent C++ object?
- How to link OpenFST to tensorflow custom op?
- MacOS Mojave: ./configure script fails when checking the archiver (ar) interface
Related Questions in FST
- How to calculate basic.stats of each population using hierfstat in R
- Deserializing byte array into Java object in a different JVM
- Pass string into map_dfr to filter using tidyfst
- Load R data objects' attributes without loading object from file?
- read.fst() crashes R : workaround needed to detect corrupted file before read.fst()
- union two FSA's with different symbol lists
- How to understand this formula in Direct Construction of Minimal Acyclic Subsequential Transducers?
- Does the R arrow package have anything like the random access capability of the fst package?
- Saving and readings lubridate intervals to/from disk
- There is a set of pairs (set_pairs) and I want to create a set (set_fsts) of first elements of those pairs. How can I do this in Isabelle?
- Fastest way to search for a long list of patterns in a text
- Detect cyclic feeding interactions without applying XFST replace rules to lexicon
- Is there any downside/risk to using fst to compress a serialized list?
- Migrate lucene FST files from 5.1.0 to 8.9.0
- Kaldi error while running script prepare_lang.sh -- GenericRegister::GetEntry: No such file or directory
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Here's a quick example on how you can test whether an automaton accepts a string using Open FST's Python wrapper. Indeed, you have to turn your input into an automaton, and Open FST doesn't even create this "linear chain automata" for you! Fortunately, it's simple to automate this process as seen below:
Let's define a simple Acceptor that only accepts series of "ab":
Now we can simply apply the Acceptor using :
To see how to use the transducer look at my other answer