背景介绍
在发音评测中,如果一个单词中某个音素读错了,比如apple[ˈæpl]中的p读错了,我们怎么反馈给用户,一般是在其对应的字母里标红如apple,这就引出了一个问题已知一个单词和它对应的音标,如何得到每个音标对应的字母。如apple[ˈæpl] 中a:æ pp:p l:l e不发音
算法介绍
- 算法路线
- 深度搜索
- 多序列对齐问题
深度搜索
深度搜索思路:找到48个元音和辅音对应的常用的字母组合,将音标依次按常用的字母组合展开,当完全展开成单词或者剩余为e的情况停止
算法示例:
work[wɜːk]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVTeY8WD-1590497196100)(https://img-blog.csdnimg.cn/20200526204732985.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2MxODM2NjIxMDE=,size_16,color_FFFFFF,t_70)]
缺点:当出现开头有字母不发音如honor和多条路径时,只会选择最先搜到的,不一定最合适
多序列对齐问题

多对多问题,如果不考虑字母不发音的情况,其实是在上图中选出一条概率最大的路径,而考虑字母不发音的情况也只是把路径扩大一些,深度搜索的问题在于每条边的概率都为1,而实际情况不是如此。
问题建模
问题1:如果有了对齐结果我们能计算出 给定字母组合属于给定音素的概率吗?
问题2:如果有所有字母组合属于所有音素的概率表,我们能计算出一个单词的对齐结果吗,也就是计算出最大概率的路径?
问题1的答案是可以的具体公式比如说字母a发æ的概率P(æ|a)
P ( æ ∣ a ) = c o