我找到了使用 Brown 聚类实现基于类的 LM 的教程,只传递了你想要的类数量,但我想实现一个基于类的模型,我最初在其中给出类分配。我试过这个http://projects.csail.mit.edu/cgi-bin/wiki/view/SLS/SriLM。但这给 LM 中的所有 ngram 提供了 -99。关于这方面的文档很少,有人可以帮助我吗?
1 回答
2
我以前做过,但那是几年前的事了。让我看看我是否可以为您追溯这些步骤。
第一步是创建指定类的文件。它应该有三列。首先是类 id,然后是给定类的那个词的概率,最后是这个词。
下一步是将训练数据中的所有单词替换为其类 ID。您可以使用 SRILMreplace-words-with-classes
脚本,也可以编写自己的脚本来执行此操作。
现在,您ngram-count
可以像训练常规的非类 n-gram 模型一样训练语言模型。
对于评估,您只需指定语言模型和类文件。
ngram -ppl test_data.txt -lm class.lm -classes class_definition_file.txt
于 2018-05-08T21:05:38.423 回答