from:http://blog.csdn.net/lifesider/article/details/6553096

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

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

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

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

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

OK!

结论:

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

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

续。。。

通过在运行时修改某一词汇至特定词汇进行识别,然而当需要测试的新词汇较多时,并且新增词汇相近时,对于运行时手动修改的工作量是巨大的。为了具有更好的扩展性,这里提出一种对新增词汇进行统一处理的方法。

在语言模型目录(及与DMP模型和DICT词典文件相同的目录)下新增一个文本文件,如new_dict.txt,对于需要新增的词汇只需要手动加入到new_dict.txt中,一行一个词及音元序列,如

守波 sh ou b o

赖守波 l ai sh ou b o

.............

同时需要在词典和模型处理的源代码文件中,添加对new_dict.txt进行处理的代码:

在词典的创建过程中,需要读取new_dict.txt文件,并将词语和音元序列进行对应,这里需要注意的是音元必须是70个基本音元之一,同时词语不能有重复;

在模型的创建过程中,可优先读出new_dict.txt文件中的词语数目,并自动丢弃原模型文件中5000个词语中与新词汇相同数目的词语。

这样,则在运行时进行了对词典和模型文件的自动更新,并且我们需要测试新的词汇时,只需要手动添加到new_dict.txt文件中一次即可,便可看到识别效果。

目前的测试结果仍是基于修改Unigram词表,更进一步的是,需要对Bigram和Trigram词表进行分析及更新,这样既能节省词表空间,同时结合HMM模型使识别结果更精确。

更新词汇至Unigram词表进行识别相关推荐

  1. 利用tensorflow的VocabularyProcessor增量更新词汇表

    1.背景 在初版模型,基于训练数据集,利用VocabularyProcessor构建了词汇表,存储文件为old_vocab.pickle.在以后的增量更新中 如何把已经保存的上版词汇加载上,同时加入增 ...

  2. 微信终于良心一回,更新了语音识别功能可识别粤语,广东人有福了

    微信终于良心一回,更新了语音识别功能可识别粤语,广东人有福了 那么大家都知道微信吧,很多人都已经使用在微信,并且用微信支付,以及微信聊天的微信可以说是一个普及的功能,非常多的软件,而比起QQ来微信更加 ...

  3. 新能源车牌识别SDK核心算法不断更新

    新能源车牌识别SDK的应用背景 2016年12月1日,新能源车牌照在上海.深圳.南京.无锡.济南试点发行.启用新能源汽车号牌,一方面可以更有效.更便捷的区分辨识新能源汽车,实施差异化交通管理政策,为新 ...

  4. CVPR 2020 | 旷视研究院探究优化场景文字识别的「词汇依赖」问题

    IEEE国际计算机视觉与模式识别会议 CVPR 2020 (IEEE Conference on Computer Vision and Pattern Recognition) 大会官方论文结果公布 ...

  5. 检索有关计算机系统功能设计方面的文献,基于词汇功能识别的科研文献分析系统设计与实现-武汉大学信息检索.PDF...

    基于词汇功能识别的科研文献分析系统设计与实现-武汉大学信息检索.PDF 61 1 20 17 1 第 卷第 期 年 月 基于词汇功能识别的科研文献分析系统设计与 实现* 1,2 1,2 1,2 ■ 李 ...

  6. 计算机无法识别新挂硬盘,电脑更新后系统不识别移动硬盘的原因分析及解决办法 系统无法识别移动硬盘教程(两种方...

    今天把电脑系统进行了更新,然后插入移动硬盘,电脑无法识别系统.折腾了半天时间,问题解决了.下面小编把系统无法识别移动硬盘的解决办法分享到脚本之家平台帮助那些和我遇到同样问题的朋友. 方法一:1.先尝试 ...

  7. 文本预处理的基本方法(分词、词性标注、命名实体识别)

    文本预处理及其作用 文本语料在输送给模型前一般需要一系列的预处理工作, 才能符合模型输入的要求, 如: 将文本转化成模型需要的张量, 规范张量的尺寸等, 而且科学的文本预处理环节还将有效指导模型超参数 ...

  8. 2.文本预处理(分词,命名实体识别和词性标注,one-hot,word2vec,word embedding,文本数据分析,文本特征处理,文本数据增强)

    文章目录 1.1 认识文本预处理 文本预处理及其作用 文本预处理中包含的主要环节 文本处理的基本方法 文本张量表示方法 文本语料的数据分析 文本特征处理 数据增强方法 重要说明 1.2 文本处理的基本 ...

  9. 【翻译】Visual Place Recognition_ A Survey视觉场景识别综述【二】

    3 什么是地点? 机器人学中地点的概念出自机器人导航和建图.实际的机器人传感器和致动器是会出错的,所以构建一个度量准确的世界地图,并用来自定位是具有挑战性的.而这两个目标的结合,称为SLAM [37] ...

最新文章

  1. 大熊君学习html5系列之------History API(SPA单页应用的必备------重构完结版)
  2. mysql中正则表达式的用法_mysql之正则表达式的用法
  3. 表面招助理实为“拉皮条”?招聘平台也有情色陷阱,BOSS直聘回应...
  4. 2 snippets vue 修改配置_教你发布vue+.netCore项目到服务器
  5. Linux unit 5
  6. C#反射Assembly 详细说明
  7. 机器学习十大经典算法-KMeans
  8. Man vs. AI – Six Fields Where Artificial Intelligence Are Surpassing Human Intelligence
  9. RecyclerView-- 侧滑删除和拖动排序
  10. 友情链接交换工具使用方法
  11. javaweb开发后端常用技术_java web后端开发技术
  12. C语言英文打字训练程序(给出正确率,耗时)
  13. 电脑登录微信,手机退出微信,电脑端微信仍然在线(IOS)
  14. 多台服务器搭建Nacos集群
  15. Linux PCI总线驱动-1
  16. 2018 中国Linux内核开发者大会
  17. day26_安卓基础之之Android介绍与入门
  18. python 抓取头条街拍图片
  19. 第28集丨马斯洛的“需求层次论”在讲什么?
  20. burpsuite安装注册

热门文章

  1. saturate_cast<uchar>(int v)的作用
  2. java double储存原理_Java内存分配原理
  3. phy芯片测试寄存器_PCIe 5.0首秀!7nm IP方案已成熟!PCIe 5.0的芯片设计有多难?...
  4. shardingjdbc全局表_Sharding-JDBC动态分表实现
  5. 号外号外!RancherOS v1.2.0发布啦!
  6. JMF介绍之媒体框架二
  7. .net平台下C#socket通信(上)
  8. 《OpenACC并行程序设计:性能优化实践指南》一 3.5 在应用程序执行期间记录性能信息...
  9. Gradle 2.0用户手册——总览(译)(转)
  10. GDI+ 学习记录(27): Bitmap