我正在使用prosody.lab使用HTK来构建语言模型。我正在尝试训练这个新模型,但我收到以下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
错误
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).
以下是我的字典订购方式
sort
所以做了一些研究我遇到了一个website,说这个错误产生的原因是:
unsorted_list = ["EH", "ENSKA", "É'THO", "HAO'", "HENH", "KAHNAWAKE", "KAHYÁ:TON'"]
sorted(unsorted_list)
我认为排序受到我在字典中有特殊字符这一事实的影响。从网站开始,我将这些单词放入一个列表中,并使用python unsorted_dict.txt
函数对其进行排序,以对这些单词进行排序。
sort
但是上面的代码会产生一个与我的字典顺序相同的列表。
然后我尝试将我的字典放入另一个文件($sort unsorted_dict.txt
)并使用unix命令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
,并提供以下顺序:
for j in range(len(items)):
print("%d. %s" % (j+1, items[j]))
但是这个命令会产生以下错误:
{{1}}
答案 0 :(得分:0)
很可能,HTK期望的排序顺序非常幼稚,并且基于用于字符的字节序列。在这种情况下,É
将在所有没有重音的字符之后出现。所以这个顺序是正确的:
EH
ENSKA
HENH
HAO'
KAHNAWAKE
KAHYÁ:TON'
É'THO
有关按字节序列排序的字符,请参阅http://www.tamasoft.co.jp/en/general-info/unicode.html。
答案 1 :(得分:0)
错误[+1452] ReadDictProns:字HAO&#39;在dict dictionary.dict中无序。
这个问题出现在&#34; HAO&#39;&#34;输入字典中不存在单词。 你必须在字典中添加该单词及其cmu转换。
任何一个训练数据句子都包含该单词。
如果它包含在你的字典中,那么错误是由于你的yaml文件配置,有一组发音列表,你必须在那里添加任何单词的任何新转换。
注意:如果您没有对字典进行排序,请先使用此命令对其进行排序 - &#34; ./ sort.py lang.dict&#34;或&#34; ./ sort.py&lt; lang.dict&gt; new_lang.dict&#34;
请参阅此链接以获取更多信息 - https://github.com/prosodylab/Prosodylab-Aligner