我找到了一些教程,其中基于类的LM是使用布朗聚类实现的,只传递了你想要的类数,但我想实现一个基于类的模型,我最初给出了类赋值。 我试过这个http://projects.csail.mit.edu/cgi-bin/wiki/view/SLS/SriLM。但这给了LM中所有ngram的-99。 关于此问题的文档非常少,任何人都可以帮助我吗?
答案 0 :(得分:2)
我之前已经这样做了,但是几年前。让我看看我是否可以回顾你的步骤。
第一步是创建指定类的文件。它应该有三列。首先是类id,然后是给出类的那个单词的概率,最后是单词。
下一步是用他们的班级ID替换训练数据中的所有单词。您可以使用SRILM replace-words-with-classes
脚本,也可以编写自己的脚本来执行此操作。
现在,您使用ngram-count
训练语言模型,就像使用常规非类n-gram模型一样。
对于评估,您只需指定语言模型以及类文件。
ngram -ppl test_data.txt -lm class.lm -classes class_definition_file.txt