mhulden / foma

Automatically exported from code.google.com/p/foma
117 stars 90 forks source link

Javascript FST results are different from the plain FST results #144

Open wincentbalin opened 1 year ago

wincentbalin commented 1 year ago

When testing the FST in the file babyfst-2020.foma from the repository https://github.com/asahala/BabyFST the suggested test cases

šarru
kaspam
iddin

return when running flookup babyfst-2020.foma < input.txt

šarru   šarru+AJ=Masc+Sg+Nom
šarru   šarāru+V+G+Stat=3Sg=Masc+Subjunct
šarru   šarāru+V+G+Stat=3Sg=Masc+Subjunct+Vent
šarru   šarāru+V+G+Stat=3Sg=Masc
šarru   šarāru+V+G+Stat=3Sg=Masc+Vent
šarru   šarāru+V+G+Vadj+Sg+Nom
šarru   šarru+N=Masc+Sg+Nom
šarru   šerru+N=Masc+Sg+Nom

kaspam  kaspu+N=Masc+Sg+Acc
kaspam  kaspu+AJ=Masc+Sg+Acc
kaspam  kasāpu+V+G+Stat=3Sg=Masc+Vent
kaspam  kasāpu+V+G+Imp=2Sg=Masc+Vent
kaspam  kasāpu+V+G+Vadj+Sg+Acc

iddin   nadānu+V+G+Prt=3Sg=Masc
iddin   nadānu+V+G+Prt=3Sg=Fem
iddin   nadānu+V+Gt+Imp=2Sg=Masc

Instead, after converting the file babyfst-2020.foma to Javascript using command python3 ./foma2js.py -n BabyFST babyfst-2020.fomabin > babyfst.js and creating a web page with babyfst.js and foma_apply_down.js, running foma_apply_down(BabyFST, 'iddin') results in an empty array.

A file converted using the original Perl script foma2js.perl yielded the same result.

wincentbalin commented 1 year ago

Current test web page is here: https://wincentbalin.github.io/BabyFST

wincentbalin commented 1 year ago

@mhulden, is it possible to debug a (rather large) FST state-by-state using for example flookup? I would like to compare resuting paths with flookup vs. with foma_apply_down.js.

wincentbalin commented 1 year ago

The error was on my side: flookup applies up, whereas foma_apply_down.js applies down (even the names tell that!). I inverted the FST and then it returned results almost as expected.

The output of foma_apply_down.js still differs from the output of flookup as described in the README of BabyFST: https://github.com/asahala/BabyFST. For example, the input iddin returns only nadānu+V+Gt+Imp=2Sg=Masc with foma_apply_down.js, but

nadānu+V+Gt+Imp=2Sg=Masc
nadānu+V+G+Prt=3Sg=Masc
nadānu+V+G+Prt=3Sg=Fem

with flookup.

Because of different outputs I will not close this issue.

dhdaines commented 5 months ago

Note that there is a bug in foma2js.py which causes it to omit symbols in the alphabet, which may be the cause of your problem. Can you test with the fixed version from #156 ?

wincentbalin commented 5 months ago

Dear @dhdaines, I have seen your solution already, and I will test it in a couple of days.

wincentbalin commented 3 months ago

Dear @dhdaines, at last I did execute the foma2js.py from #156, but sadly the problem with idinustill persists.