在语言模型文件中更新词汇以提高识别正确率
2011-06-18 10:33
281 查看
完成CMU Sphinx Toolkit到UNICODE的移植后,由于其自身支持的中文词汇太少且过于简单,实际生活中的很多词汇无法识别,由于其缺少开发文档,只能在代码跟踪的过程里心烦了。
于是想,肯定需要在词典文件中增加新词汇吧,如果其本身是按照Ciphone序列进行识别的话,应该就能识别出新词汇。
后来在词典文件中增加了几个特定词汇,发现识别结果未发生任何变化。
于是又对DMP模型文件进行分析,发现里面也有词典中的部分词汇(默认为5000个,简体中文,UNIGRAM),于是猜测是否需要更新词汇到DMP模型文件中呢?
由于DMP模型文件本身是二进制写入的,于是在运行过程中,进行手动改写原有部分词汇为新词汇(不以内存映射文件打开即可),最终发现最后识别出新词汇了。
OK!
结论:
由于CMU Sphinx Toolkit的开发文档几乎没有,而源代码中的注释信息也不充分,于是纯粹的跟踪代码的是件费神的事儿,看来某些时候还得有怀疑的心态并去尝试,也许会得到意想不到的结果。
通过这次尝试,最终确定Sphinx是将DMP模型文件和词典文件绑定在一起(内部建立索引),对于新词汇两者需要同时更新,下一步需要进行DMP模型文件的剖析工作。当然DMP模型文件中其实是存在其它信息的,比如概率信息等。想得到更精确的识别结果,可能也并不是简单的更新词汇就行,但至少也有了个突破口吧!
嗯,还得继续琢磨。。。
于是想,肯定需要在词典文件中增加新词汇吧,如果其本身是按照Ciphone序列进行识别的话,应该就能识别出新词汇。
后来在词典文件中增加了几个特定词汇,发现识别结果未发生任何变化。
于是又对DMP模型文件进行分析,发现里面也有词典中的部分词汇(默认为5000个,简体中文,UNIGRAM),于是猜测是否需要更新词汇到DMP模型文件中呢?
由于DMP模型文件本身是二进制写入的,于是在运行过程中,进行手动改写原有部分词汇为新词汇(不以内存映射文件打开即可),最终发现最后识别出新词汇了。
OK!
结论:
由于CMU Sphinx Toolkit的开发文档几乎没有,而源代码中的注释信息也不充分,于是纯粹的跟踪代码的是件费神的事儿,看来某些时候还得有怀疑的心态并去尝试,也许会得到意想不到的结果。
通过这次尝试,最终确定Sphinx是将DMP模型文件和词典文件绑定在一起(内部建立索引),对于新词汇两者需要同时更新,下一步需要进行DMP模型文件的剖析工作。当然DMP模型文件中其实是存在其它信息的,比如概率信息等。想得到更精确的识别结果,可能也并不是简单的更新词汇就行,但至少也有了个突破口吧!
嗯,还得继续琢磨。。。
相关文章推荐
- 易语言-配置文件更新的方法-续(2)
- 易语言-配置文件的更新方法-续(3)
- 转载LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件
- 有哪些提高OCR文字识别软件识别正确率的方法
- Android系统切换语言的时候APP无法更新资源文件的解决方法
- 网络安全工具FileAudit更新v5.5版本,更好地识别和分析异常的文件
- Embedded_SW_模块化]嵌入式C语言工程文件组织_保持更新
- 使用SRILM为大文件构建语言模型
- 识别出 EXE 文件是用什么语言编写的软件PEiD v0.94 20060510 汉化版
- mac 下更新 .bash_profile 文件及解决mac不能识别某款android手机问题
- 【复杂网络系列】图模型语言(graph model language)gml格式文件生成代码
- 有哪些提高ABBYY识别正确率的方法
- [Embedded_SW_模块化]嵌入式C语言工程文件组织_保持更新
- 网络安全工具FileAudit更新v5.5版本,更好地识别和分析异常的文件
- 易语言-配置文件更新文件-续(4)
- 语音识别中基于规则的语言模型
- (更新视频教程)Tensorflow object detection API 搭建属于自己的物体识别模型(2)——训练并使用自己的模型
- ABBYY FineReader的识别正确率该怎样提高
- LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件
- 语音识别之语言模型----前缀搜索算法