如何在 SRILM 中实现基于监督 class 的语言模型?

How to implement supervised class based language model in SRILM?

我找到了一些教程,其中基于 class 的 LM 是使用 Brown 聚类实现的,只传递你想要的 classes 的数量,但我想实现一个基于 class 的模型,我给出 class最初的作业。 我试过这个 http://projects.csail.mit.edu/cgi-bin/wiki/view/SLS/SriLM。但这会为 LM 中的所有 ngram 提供 -99。 关于这方面的文档很少,有人可以帮我吗?

我以前做过,但那是几年前的事了。让我看看我是否可以为您追溯这些步骤。

第一步是创建指定 classes 的文件。它应该有三列。首先是 class id,然后是给定 class 的单词的概率,最后是单词。

下一步是用 class ID 替换训练数据中的所有单词。您可以使用 SRILM replace-words-with-classes 脚本,也可以编写自己的脚本来执行此操作。

现在您可以使用 ngram-count 训练语言模型,就像训练常规非 class n-gram 模型一样。

对于评估,您只需指定语言模型以及 class 文件。

ngram -ppl test_data.txt -lm class.lm -classes class_definition_file.txt