Commit 79bea788 authored by Dan Povey's avatar Dan Povey
Browse files

Commit further changes to latgen paper-- shortening some parts

git-svn-id: 5e6a8d80-dfce-4ca6-a32a-6e07a63d50c8
parent 1ee92df2
......@@ -438,9 +438,8 @@ with the words.
We implemented $\epsilon$ removal and determinization as a single algorithm
because $\epsilon$-removal using the traditional approach would greatly
increase the size of the state-level lattice (this is mentioned
in~\cite{efficient_general}). Rather than using completely generic
code as is usually done in OpenFst~\cite{openfst} which our code is based on,
we implemented it in a fairly specialized way for this case. The issue
in~\cite{efficient_general}). Our algorithm uses data-structures
specialized for the particular type of weight we are using. The issue
is that the determinization process often has to append a single symbol to
a string of symbols (for the state alignments), and the easiest way to
do this in ``generic'' code would involve copying the whole sequence each time.
......@@ -467,22 +466,7 @@ to following through the $\epsilon$ arcs, i.e. it only contains the states
that we reached by following non-$\epsilon$ arcs from a previous determinized
state. We maintain a separate map from the initial representation to
the output state index; think of this as a ``lookaside buffer'' that helps us
avoid the expense of following $\epsilon$ arcs. Note that formally
proving the correctness of this algorithm would be a big project, but we
are able to test correctness in a randomized way; this is easy because we
can test WFSA equivalence and we can test whether a WFSA is deterministic.
We should note that although the determinization algorithm
is guaranteed to terminate (since the state-level lattice is acyclic), it can
sometimes exhaust memory, i.e. in practice it can ``blow up'' for particular
inputs. Our observation is that in cases where it significantly expands
the input, this tends to be reversed by pruning after determinization.
We currently make our software robust to this phenomenon by
pre-specifying a maximum number of states for a lattice, and if the
determinization exceeds this threshold, we prune with a tighter beam
and try again. In the future we may implement a form of determinization that
includes an efficient form of pruning.
avoid the expense of following $\epsilon$ arcs.
%% The algorithm for $\epsilon$-removal and determinization is also optimized
......@@ -26,14 +26,14 @@
title={On-the-Fly Lattice Rescoring for Real-Time Automatic Speech Recognition},
author={Sak, H. and Sara{\c{c}}lar, M. and G{\"u}ng{\"o}r, T.},
booktitle={Eleventh Annual Conference of the International Speech Communication Association},
booktitle={Proc. Interspeech},
title={{Anatomy of an extremely fast LVCSR decoder}},
author={Saon, G. and Povey, D. and Zweig, G.},
booktitle={Ninth European Conference on Speech Communication and Technology},
booktitle={Proc. Interspeech},
......@@ -390,7 +390,7 @@
author = {C. Allauzen and M. Riley and J. Schalkwyk and W. Skut and M. Mohri },
title = "{OpenFst: a general and efficient weighted finite-state transducer library}",
booktitle = "CIAA",
booktitle = "Proc. CIAA",
year = 2007
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment