在语言模型文件中更新词汇以提高识别正确率

完成CMU Sphinx Toolkit到UNICODE的移植后,由于其自身支持的中文词汇太少且过于简单,实际生活中的很多词汇无法识别,由于其缺少开发文档,只能在代码跟踪的过程里心烦了。

 

于是想,肯定需要在词典文件中增加新词汇吧,如果其本身是按照Ciphone序列进行识别的话,应该就能识别出新词汇。

后来在词典文件中增加了几个特定词汇,发现识别结果未发生任何变化。

 

于是又对DMP模型文件进行分析,发现里面也有词典中的部分词汇(默认为5000个,简体中文,UNIGRAM),于是猜测是否需要更新词汇到DMP模型文件中呢?

 

由于DMP模型文件本身是二进制写入的,于是在运行过程中,进行手动改写原有部分词汇为新词汇(不以内存映射文件打开即可),最终发现最后识别出新词汇了。

 

OK!

 

结论:

由于CMU Sphinx Toolkit的开发文档几乎没有,而源代码中的注释信息也不充分,于是纯粹的跟踪代码的是件费神的事儿,看来某些时候还得有怀疑的心态并去尝试,也许会得到意想不到的结果。

通过这次尝试,最终确定Sphinx是将DMP模型文件和词典文件绑定在一起(内部建立索引),对于新词汇两者需要同时更新,下一步需要进行DMP模型文件的剖析工作。当然DMP模型文件中其实是存在其它信息的,比如概率信息等。想得到更精确的识别结果,可能也并不是简单的更新词汇就行,但至少也有了个突破口吧!

 

嗯,还得继续琢磨。。。

 

你可能感兴趣的:(工作,生活,文档,语言)