Processing math: 100%

2014/11/22

Juliusのmkdfa.plをwindowsで動かせるようにした

まとめ:mkdfa.plの上の方にある$thisdirあたりを修正すれば動く

*Win版Julius dictation-kit-v.4.3.1で動作を確認しています。

Juliusで文法を自分で書くときに、
mkdfa.plというperlのスクリプトを使ってgrammar+voca -> dfaの変換をすると思うのですが、

windowsでそれをすると

fruit.grammar has 6 rules
fruit.voca    has 9 categories and 20 words
---
sh: mkfa: command not found
sh: dfa_minimize: command not found
---
no .dfa or .dict file generated

とかでてきて死にたくなります。

同じディレクトリにmkfa.exeとかdfa_minimize.exeとかあるのにnot foundとはこれいかに。

ということで、mkdfa.plをprintfデバッグします。
そうすると上の方にある$thisdirが空になっていることがわかりました。

要するにカレントディレクトリがとれてないという事になります。

ということで、上の方をちょちょいと書き換えます。

use Cwd 'getcwd'; #add this row
## setup
# tmpdir
$usrtmpdir = ""; # specify if any
# mkfa executable location
#(thisdir) = (0 =~ /(.*(\/|\\))[^\/\\]*$/o); #delete this row
$thisdir = getcwd; #add this row
mkfabin = "{thisdir}/mkfa"; #add /
# dfa_minimize executable location
minimizebin = "{thisdir}/dfa_minimize"; # add /
view raw Fixmkdfa.pl hosted with ❤ by GitHub
そうすると、

fruit.grammar has 6 rules
fruit.voca    has 9 categories and 20 words
---
Now parsing grammar file
Now modifying grammar to minimize states[0]
Now parsing vocabulary file
Now making nondeterministic finite automaton[8/8]
Now making deterministic finite automaton[8/8]
Now making triplet list[8/8]
9 categories, 8 nodes, 10 arcs
-> minimized: 8 nodes, 10 arcs
---
generated: fruit.dfa fruit.term fruit.dict

となって、動きます。

0 件のコメント:

コメントを投稿