
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