2015-12-01 6 views
0

我正在使用prosody.lab,它使用HTK来构建语言模型。我试图培养这种新的模式,但我发现了以下HTK错误使用Prosody.lab并获取HTK ERROR [+1452]关于字典中的单词无序

ERROR [+1452] ReadDictProns: word HAO' out of order in dict dictionary.dict 

下面是如何我的字典里是有序

EH EH0 
ENSKA UH0 S K AH0 
É'THO T OW0 
HAO' HH AW0 OW0 Q 
HENH HH AH0 
KAHNAWAKE G AH0 N AH0 G EY0 
KAHYÁ:TON' G AH0 Y AH0 D UH0 Q 

所以做了一些研究,我横跨website,说出来这个错误产生的原因是:

Unix sort doesn't seem to match the sort HTK is looking for. Python's sort function seems to work. Numbers are sorted with '.' before 0, shorter before longer (1 < 1.0 < 10 < 100). 

我假设排序正受到我的字典中有特殊字符的事实的影响。从网站的方向,我把这些单词放入一个列表中,并使用python sort函数对这些单词进行排序。

unsorted_list = ["EH", "ENSKA", "É'THO", "HAO'", "HENH", "KAHNAWAKE", "KAHYÁ:TON'"] 
sorted(unsorted_list) 

但是,上面的代码产生一个列表与我的字典相同的顺序。

于是我试图把我的字典到另一个文件(unsorted_dict.txt)和分类,使用unix命令sort

$sort unsorted_dict.txt 

但是,这也产生同样的顺序,我的字典。

EH 
ENSKA 
É'THO 
HAO' 
HENH 
KAHNAWAKE 
KAHYÁ:TON' 

我也试过在我的字典文件给予下列顺序切换HAO'HENH

EH 
ENSKA 
É'THO 
HENH 
HAO' 
KAHNAWAKE 
KAHYÁ:TON' 

但这个命令产生以下错误:

ERROR [+1452] ReadDictProns: word HENH out of order in dict dictionary.dict 

回答

0

很有可能, HTK期望的排序顺序非常幼稚,并且基于用于字符的字节序列。在这种情况下,É会出现在所有没有口音的字符之后。所以这个顺序是正确的:

EH 
ENSKA 
HENH 
HAO' 
KAHNAWAKE 
KAHYÁ:TON' 
É'THO 

请参阅http://www.tamasoft.co.jp/en/general-info/unicode.html按字节顺序排列的字符。