1

这是我在这里的第一篇文章,对我糟糕的英语感到抱歉。

我正在立即使用 Kaldi 和 srilm 工具进行研究,但是在使用 ngram-merge 合并由 ngram-count 生成的 3-gram.count 文件时遇到了一个奇怪的问题。(ngram-count 和 ngram-merge 是 srilm 中的两个模块)

我在我的 shell 脚本中使用的代码如下所示:

ngram-merge \
 -write $dir_ngram/corpus_${ng}-gram.count \
 $dir_ngram/glsp_poj_tlu.txt_${ng}-gram.count /
 $dir_ngram/icorpus_tlu.txt_${ng}-gram.count /
 $dir_ngram/khkp_tlu.txt_${ng}-gram.count /
 $dir_ngram/nmtl_tlu.txt_${ng}-gram.count /
 $dir_ngram/total_tlu.txt_${ng}-gram.count /
 $dir_ngram/twbb_tlu.txt_${ng}-gram.count

$dir_ngram仅代表 .count 文件的目录,而${ng}在这里是 3,因为我将 trigram 用于我的语言模型。

但是当我运行这部分代码时,发生了错误,它们看起来像这样:

/kaldi/egs/simple_20190520/source/ngram/icorpus_tlu.txt_3-gram.count: line 1: unk: No such file or directory
/kaldi/egs/simple_20190520/source/ngram/icorpus_tlu.txt_3-gram.count: line 2: syntax error near unexpected token `<'
/kaldi/egs/simple_20190520/source/ngram/icorpus_tlu.txt_3-gram.count: line 2: `<unk> <unk> 11844000'
/kaldi/egs/simple_20190520/source/ngram/khkp_tlu.txt_3-gram.count: line 1: unk: No such file or directory
/kaldi/egs/simple_20190520/source/ngram/khkp_tlu.txt_3-gram.count: line 2: syntax error near unexpected token `<'
/kaldi/egs/simple_20190520/source/ngram/khkp_tlu.txt_3-gram.count: line 2: `<unk> <unk>    449400'
/kaldi/egs/simple_20190520/source/ngram/nmtl_tlu.txt_3-gram.count: line 1: unk: No such file or directory
/kaldi/egs/simple_20190520/source/ngram/nmtl_tlu.txt_3-gram.count: line 2: syntax error near unexpected token `<'
/kaldi/egs/simple_20190520/source/ngram/nmtl_tlu.txt_3-gram.count: line 2: `<unk> <unk>    13706200'
/kaldi/egs/simple_20190520/source/ngram/total_tlu.txt_3-gram.count: line 1: unk: No such file or directory
/kaldi/egs/simple_20190520/source/ngram/total_tlu.txt_3-gram.count: line 2: syntax error near unexpected token `<'
/kaldi/egs/simple_20190520/source/ngram/total_tlu.txt_3-gram.count: line 2: `<unk> <unk>   11155390'
/kaldi/egs/simple_20190520/source/ngram/twbb_tlu.txt_3-gram.count: line 1: unk: No such file or directory
/kaldi/egs/simple_20190520/source/ngram/twbb_tlu.txt_3-gram.count: line 2: syntax error near unexpected token `<'
/kaldi/egs/simple_20190520/source/ngram/twbb_tlu.txt_3-gram.count: line 2: `<unk> <unk>    7575840'

似乎ngram-merge 将文件的第一行作为文件名或目录,因为 unk 符号是每个 .count 文件的第一行(以icorpus_tlu.txt_3-gram.count为例):

<unk>   21952800
<unk> <unk>     11844000
<unk> <unk> <unk>       6161460
<unk> <unk> pó-tshî     660
<unk> <unk> pe̍h-liáu-kang       60
<unk> <unk> m̄-sī        3840
<unk> <unk> lîu-hîng    540
<unk> <unk> ē-sái       12900
<unk> <unk> uî-huat     1740
<unk> <unk> kín-tiunn   780
<unk> <unk> tâi-tiong-tshī      840
<unk> <unk> kuī 120
<unk> <unk> tsú-lâng    660
<unk> <unk> tsi̍t        38520
.
.
.

.count 文件的 unk 符号和第二行出现在错误消息的第一行和第三行中。我不知道为什么会这样,因为我认为 ngram-merge 应该只打开文件并开始读取 ngram,而不是将内容视为要打开的目录。另一个奇怪的是,“以内容为目录”的问题只出现在最后五个文件上。第一个文件似乎根本没有读取或目录问题。

我知道我可以简单地将语料库合并在一起,因为所有语料库都不是太大,但我只是对这个问题有点好奇。有人知道怎么解决吗?</p>

4

0 回答 0