
Hi, I tried FSA with very small examples and find out that: 1. FSA can not read the acceptor in AT&T format. Does it just only work with transducer in AT&t format ? Or am I wrong ? - suppose I have the file name "test.fst" which contains: 0 1 A 0 2 B 0 3 C 1 0 eps 1 2 B 1 3 C 1 2 0 eps 2 3 C 2 3 - RUN "fsa.linux-x86_64-standard att:testlm.def.DEF infor". The following message appeared: PROGRAM DEFECTIVE: precondition type() == TypeTransducer violated in virtual void Fsa::StorageAutomaton::setOutputAlphabet(Fsa::ConstAlphabetRef) file Storage.cc line 63 stack trace (innermost first): #2 fsa.linux-x86_64-standard [0x483b53] #3 fsa.linux-x86_64-standard(_ZN3Fsa7readAttEPNS_16StorageAutomatonERSi+0x81d) [0x45ea3d] #4 fsa.linux-x86_64-standard(_ZN3Fsa4readEPNS_16StorageAutomatonERKSs+0xf1) [0x45d3e1] #5 fsa.linux-x86_64-standard(_ZN3Fsa4readERKSsN4Core3RefIKNS_8SemiringEEE+0x2c2) [0x45dd02] #6 fsa.linux-x86_64-standard(_ZN7FsaTool4mainERKSt6vectorISsSaISsEE+0x262f) [0x43eaff] #7 fsa.linux-x86_64-standard(_ZN4Core11Application3runERKSt6vectorISsSaISsEE+0x25) [0x48ece5] #8 fsa.linux-x86_64-standard(_ZN4Core11Application4mainEiPPc+0x886) [0x48ffb6] #9 /lib64/tls/libc.so.6(__libc_start_main+0xdb) [0x38e3e1c4bb] #10 fsa.linux-x86_64-standard(__gxx_personality_v0+0xd2) [0x437dca] Aborted 2. Problem with "epsilon edges" ? I found that, with a WFST in AT&T format, FSA correctly treats the symbol "eps" as an epsilon label. However, with a FST (without weights on edges), FSA correctly treats "eps" of the output label as an epsilon label but "eps" of the input label is kept as the distinct label. Here is an example: WITH WFST: Suppose we have a WFST file named DICT1.def 0 1 eps eps 0 1 2 a eps 0 2 3 a eps 0 3 4 a eps 0 4 5 eps A 0 0 6 eps eps 0 6 7 a eps 0 7 8 a eps 0 8 9 b eps 0 9 5 eps B 0 0 10 eps eps 0 10 11 a eps 0 11 12 a eps 0 12 13 c eps 0 13 5 eps C 0 5 - RUN: fsa.linux-x86_64-standard att:DICT1.def write,file=DICT1.fsa We have DICT1.fsa as we expected: <?xml version="1.0" encoding="UTF8"?> <fsa type="transducer" semiring="tropical" initial="0"> <input-alphabet> <symbol index="0">a</symbol> <symbol index="1">b</symbol> <symbol index="2">c</symbol> </input-alphabet> <output-alphabet> <symbol index="0">A</symbol> <symbol index="1">B</symbol> <symbol index="2">C</symbol> </output-alphabet> <state id="0"> <arc target="1"></arc> <arc target="6"></arc> <arc target="10"></arc> </state> <state id="10"> <arc target="11"><in>0</in></arc> </state> <state id="11"> <arc target="12"><in>0</in></arc> </state> <state id="12"> <arc target="13"><in>2</in></arc> </state> <state id="13"> <arc target="5"><out>2</out></arc> </state> <state id="5"><final/> </state> <state id="6"> <arc target="7"><in>0</in></arc> </state> <state id="7"> <arc target="8"><in>0</in></arc> </state> <state id="8"> <arc target="9"><in>1</in></arc> </state> <state id="9"> <arc target="5"><out>1</out></arc> </state> <state id="1"> <arc target="2"><in>0</in></arc> </state> <state id="2"> <arc target="3"><in>0</in></arc> </state> <state id="3"> <arc target="4"><in>0</in></arc> </state> <state id="4"> <arc target="5"><out>0</out></arc> </state> </fsa> - But with FST named DICT2.def: 0 1 eps eps 1 2 a eps 2 3 a eps 3 4 a eps 4 5 eps A 0 6 eps eps 6 7 a eps 7 8 a eps 8 9 b eps 9 5 eps B 0 10 eps eps 10 11 a eps 11 12 a eps 12 13 c eps 13 5 eps C 5 and RUN: fsa.linux-x86_64-standard att:DICT2.def write,file=DICT2.fsa then we've got the unexpected result: DICT2.fsa contained: <?xml version="1.0" encoding="UTF8"?> <fsa type="transducer" semiring="tropical" initial="0"> <input-alphabet> <symbol index="0">eps</symbol> <symbol index="1">a</symbol> <symbol index="2">b</symbol> <symbol index="3">c</symbol> </input-alphabet> <output-alphabet> <symbol index="0">A</symbol> <symbol index="1">B</symbol> <symbol index="2">C</symbol> </output-alphabet> <state id="0"> <arc target="1"><in>0</in></arc> <arc target="6"><in>0</in></arc> <arc target="10"><in>0</in></arc> </state> <state id="10"> <arc target="11"><in>1</in></arc> </state> <state id="11"> <arc target="12"><in>1</in></arc> </state> <state id="12"> <arc target="13"><in>3</in></arc> </state> <state id="13"> <arc target="5"><in>0</in><out>2</out></arc> </state> <state id="5"><final/> </state> <state id="6"> <arc target="7"><in>1</in></arc> </state> <state id="7"> <arc target="8"><in>1</in></arc> </state> <state id="8"> <arc target="9"><in>2</in></arc> </state> <state id="9"> <arc target="5"><in>0</in><out>1</out></arc> </state> <state id="1"> <arc target="2"><in>1</in></arc> </state> <state id="2"> <arc target="3"><in>1</in></arc> </state> <state id="3"> <arc target="4"><in>1</in></arc> </state> <state id="4"> <arc target="5"><in>0</in><out>0</out></arc> </state> </fsa> __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com

Hi, this was a small bug triggered by a change in the interface class StorageAutomaton. We aimed at making that class more safe by not supporting to set an output alphabet when the user already decided on an acceptor. In that case the output alphabet should be the same than the input alphabet. I've put a new fixed version 0.9.4 on the web for download. Stephan On Tuesday 20 September 2005 00:04, Owen TN wrote:
Hi,
I tried FSA with very small examples and find out that:
1. FSA can not read the acceptor in AT&T format. Does it just only work with transducer in AT&t format ? Or am I wrong ?
- suppose I have the file name "test.fst" which contains:
0 1 A 0 2 B 0 3 C 1 0 eps 1 2 B 1 3 C 1 2 0 eps 2 3 C 2 3 - RUN "fsa.linux-x86_64-standard att:testlm.def.DEF infor". The following message appeared:
PROGRAM DEFECTIVE: precondition type() == TypeTransducer violated in virtual void Fsa::StorageAutomaton::setOutputAlphabet(Fsa::ConstAlphabetRef) file Storage.cc line 63
stack trace (innermost first): #2 fsa.linux-x86_64-standard [0x483b53] #3 fsa.linux-x86_64-standard(_ZN3Fsa7readAttEPNS_16StorageAutomatonERSi+0x81d) [0x45ea3d] #4 fsa.linux-x86_64-standard(_ZN3Fsa4readEPNS_16StorageAutomatonERKSs+0xf1) [0x45d3e1] #5 fsa.linux-x86_64-standard(_ZN3Fsa4readERKSsN4Core3RefIKNS_8SemiringEEE+0x2c 2) [0x45dd02] #6 fsa.linux-x86_64-standard(_ZN7FsaTool4mainERKSt6vectorISsSaISsEE+0x262f) [0x43eaff] #7 fsa.linux-x86_64-standard(_ZN4Core11Application3runERKSt6vectorISsSaISsEE+0 x25) [0x48ece5] #8 fsa.linux-x86_64-standard(_ZN4Core11Application4mainEiPPc+0x886) [0x48ffb6] #9 /lib64/tls/libc.so.6(__libc_start_main+0xdb) [0x38e3e1c4bb] #10 fsa.linux-x86_64-standard(__gxx_personality_v0+0xd2) [0x437dca]
Aborted
2. Problem with "epsilon edges" ?
I found that, with a WFST in AT&T format, FSA correctly treats the symbol "eps" as an epsilon label.
However, with a FST (without weights on edges), FSA correctly treats "eps" of the output label as an epsilon label but "eps" of the input label is kept as the distinct label.
Here is an example:
WITH WFST:
Suppose we have a WFST file named DICT1.def
0 1 eps eps 0 1 2 a eps 0 2 3 a eps 0 3 4 a eps 0 4 5 eps A 0 0 6 eps eps 0 6 7 a eps 0 7 8 a eps 0 8 9 b eps 0 9 5 eps B 0 0 10 eps eps 0 10 11 a eps 0 11 12 a eps 0 12 13 c eps 0 13 5 eps C 0 5
- RUN: fsa.linux-x86_64-standard att:DICT1.def write,file=DICT1.fsa
We have DICT1.fsa as we expected:
<?xml version="1.0" encoding="UTF8"?> <fsa type="transducer" semiring="tropical" initial="0"> <input-alphabet> <symbol index="0">a</symbol> <symbol index="1">b</symbol> <symbol index="2">c</symbol> </input-alphabet> <output-alphabet> <symbol index="0">A</symbol> <symbol index="1">B</symbol> <symbol index="2">C</symbol> </output-alphabet> <state id="0"> <arc target="1"></arc> <arc target="6"></arc> <arc target="10"></arc> </state> <state id="10"> <arc target="11"><in>0</in></arc> </state> <state id="11"> <arc target="12"><in>0</in></arc> </state> <state id="12"> <arc target="13"><in>2</in></arc> </state> <state id="13"> <arc target="5"><out>2</out></arc> </state> <state id="5"><final/> </state> <state id="6"> <arc target="7"><in>0</in></arc> </state> <state id="7"> <arc target="8"><in>0</in></arc> </state> <state id="8"> <arc target="9"><in>1</in></arc> </state> <state id="9"> <arc target="5"><out>1</out></arc> </state> <state id="1"> <arc target="2"><in>0</in></arc> </state> <state id="2"> <arc target="3"><in>0</in></arc> </state> <state id="3"> <arc target="4"><in>0</in></arc> </state> <state id="4"> <arc target="5"><out>0</out></arc> </state> </fsa>
- But with FST named DICT2.def:
0 1 eps eps 1 2 a eps 2 3 a eps 3 4 a eps 4 5 eps A 0 6 eps eps 6 7 a eps 7 8 a eps 8 9 b eps 9 5 eps B 0 10 eps eps 10 11 a eps 11 12 a eps 12 13 c eps 13 5 eps C 5
and RUN: fsa.linux-x86_64-standard att:DICT2.def write,file=DICT2.fsa
then we've got the unexpected result: DICT2.fsa contained:
<?xml version="1.0" encoding="UTF8"?> <fsa type="transducer" semiring="tropical" initial="0"> <input-alphabet> <symbol index="0">eps</symbol> <symbol index="1">a</symbol> <symbol index="2">b</symbol> <symbol index="3">c</symbol> </input-alphabet> <output-alphabet> <symbol index="0">A</symbol> <symbol index="1">B</symbol> <symbol index="2">C</symbol> </output-alphabet> <state id="0"> <arc target="1"><in>0</in></arc> <arc target="6"><in>0</in></arc> <arc target="10"><in>0</in></arc> </state> <state id="10"> <arc target="11"><in>1</in></arc> </state> <state id="11"> <arc target="12"><in>1</in></arc> </state> <state id="12"> <arc target="13"><in>3</in></arc> </state> <state id="13"> <arc target="5"><in>0</in><out>2</out></arc> </state> <state id="5"><final/> </state> <state id="6"> <arc target="7"><in>1</in></arc> </state> <state id="7"> <arc target="8"><in>1</in></arc> </state> <state id="8"> <arc target="9"><in>2</in></arc> </state> <state id="9"> <arc target="5"><in>0</in><out>1</out></arc> </state> <state id="1"> <arc target="2"><in>1</in></arc> </state> <state id="2"> <arc target="3"><in>1</in></arc> </state> <state id="3"> <arc target="4"><in>1</in></arc> </state> <state id="4"> <arc target="5"><in>0</in><out>0</out></arc> </state> </fsa>
__________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
_______________________________________________ fsa mailing list fsa@lists.rwth-aachen.de http://mailman.rwth-aachen.de/mailman/listinfo/fsa
-- _____________________________________________________________________________ Stephan Kanthak, Dipl.-Informatiker mobil: +49 178 3883852 IT-Ingenieur, Markt 1-3, 52062 Aachen email: stylon@gmx.de
participants (2)
-
Owen TN
-
Stephan Kanthak