美文网首页
说说拆解拼音那些事

说说拆解拼音那些事

作者: 臭豆腐_b3dc | 来源:发表于2019-09-25 09:48 被阅读0次

    背景

    拆解拼音? 看完图你应该已经知道了

    image.png
    咦.....那百度是怎么拆解出 ni men gong si 的呢?

    来分析一波

    通常,我们是先想出基本实现过程,然后再优化过程点,最后得出最优解。
    通常大体思路是:

    1、拆分用户输入
    2、与音节做有效匹配 得出解

    image.png

    接下来我们开始分解,优化每一步

    1、拆分用户输入

    定个目标:要找出所有有效的音节(正向的)

    像上图的 拆分 拆分到o时,这个规则就行不通了,会漏掉 gong, 如下:

    image.png

    介就尴尬咯,咦....好像回退步骤是可以找到 gong这个拼音的

    image.png

    如上图,通过加一层判断来回退步骤,我们可以找到漏掉的拼音gong, 当然也发现了个新问题。
    上面步骤找出的 ni me men meng gong 这些拼音,
    memene字母下标是一样的
    mengggong的第一个g下标也是一样的 , 保留谁呢?

    2、与音节做有效匹配 得出解

    依据上面的回退机制,我们可以得出所有的有效拼音是 ni me men meng gong si

    我们人是可以 从前往后 依据拼音之间的 距离 判断要保留项,把这个思想移植到机器上,哈哈哈....当然也行得通。
    实现步骤:

    1、遍历有效音节列表,
    2、判断 当前拼音的开始下标 是否等于 上一个拼音
         的开始下标, me和ni,  m下标等于n ?不
        , 继续往下走
    3、men和me ? 咦...开始下标一样,给men做个标记,
       继续往下走 meng和men ?  一样 给meng做个标记
    4、gong和meng ? 开始下标不相等,
      停止继续往后  列出 [me men meng]  选谁呢,
       当然是按最大的选,
       且 拼音下标范围不能 包含下个拼音,
       当然是选men因为meng的g下标等于gong的开头g
    

    执行上面的步骤,我们就能找拆出正确的拼音了。哈哈哈....是不是很简单!

    3、结尾

    哈哈哈......这是我写的一篇技术分解文章,没有一句代码! 以后也尽量,就是想锤炼表达能力,让非IT程序员也能理解。
    如果你是非程序员也懂了, 请给个赞, 谢谢大佬 O(∩_∩)O

    最后
    相信心细的同学肯定也发现了 这只是简单的实现,真实场景下还存在不少问题:

    1、音节表的查询次数很高,如何提升性能?
    2、用户输入里混有错误拼音如何处理
    3、拼音如何转中文
    4、更多问题疑问 请留言抛出 大家一起讨论

    请听下回分解之:【编程-拼音树的威力】
    ———————

    如有错误,欢迎指正。

    如果你喜欢鄙文和图片,那就在右下角点个喜欢吧,你的鼓励是我最大的动力来源,小臭在此深表感恩。

    相关文章

      网友评论

          本文标题:说说拆解拼音那些事

          本文链接:https://www.haomeiwen.com/subject/kndjectx.html