2015-12-01 16 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按字節順序排列的字符。