私は現在(自然言語の)コーパスを持っています、そしてこれらはすでにとられたステップです:
コーパスを1つの大きなファイルに連結した後、シンボルテーブルを生成しました。
$ ngramsymbols <corpus.txt >corpus.syms
このシンボルテーブルを前提として、コーパスをバイナリFSTアーカイブ(FAR)に変換します。
$ farcompilestrings -symbols=corpus.syms -keep_symbols=1 corpus.txt > corpus.far
FAR内のすべてのFSTの和集合を取得し、開始状態から最終状態までの最大重みパスを計算したいと思います。シェルからテストするために、これは私がしたことです:
$ farextract corpus.far # generates fst files corpus-01, corpus-02, ...
$ fstarcsort --sort_type=olabel corpus.txt-01 1.fst
$ fstarcsort --sort_type=ilabel corpus.txt-02 2.fst
$ fstunion 1.fst 2.fst 12.fst
しかし、私は次のエラーに遭遇し続けます:
警告:CompatSymbols:最初のシンボルテーブルは存在しますが、2番目は欠落しています
エラー:ユニオン:1番目の引数の入力/出力シンボルテーブルが2番目の引数の入力/出力シンボルテーブルと一致しません
もちろん、このエラーは、最初にFSTをソートせずに2項演算を実行しようとすると発生します。
FSTを正しくソートしていないと思います、または...シンボルテーブルの使用方法を完全に誤解しています。ユニオン(または、さらに言えば、他の二項演算)がこのように失敗する理由はありますか?