zoukankan      html  css  js  c++  java
  • 输入法之模型训练

    输入法。尤其是拼音输入法,解决的就是一些序列标注的问题,针对给定的状态(拼音),获取其概率最高的隐状态(中文)。
    这个是一个标准的HMM,针对HMM的解码过程,是一个非常成熟也非常完备的东西。


    local的计算和存储能力都有限。我们选择通常是二阶马尔科夫,也就是所谓的bigram model。

    高阶对质量会有帮助。可是涉及到存储和计算。project上不可行。

    同理,利用ME 以及CRFmodel都能够解决这一类的标注问题,相同是project上的问题。不太可行。

    确定了採用bigram model。那么训练过程也就非常确定:
    1.Segment and Count bigram&unigram
    2.smoothing 
    3.prunning

    在seg之前,须要对我们的训练语料做一下预处理。输入法重点关注的是中文以及中文的关系,所以须要对当中的英文以及符号等切割做一个预处理。不然会添加后期剪枝的复杂度。
    一版的做法是,针对里面的英文,能够用一个统一的ENGLISH的标记取代,尽量不要去掉,而对于符号,作为句子的分隔符号,将整个句子折断成一个一个纯中文的短句。作为训练语料。

    作为完备的model。会包含 開始符号BOS 以及结束符EOS,则能够保证整个model是封闭的。只是针对输入法。这个不是必须的,对于输入过程。用户的每一次開始输入,都不一定是句子的開始,强行加上去,不一定有好的效果。

    作为训练过程#1 没有什么好说的,直接处理即可。
    #2是非常关键的一个。HMM的解码,涉及到大量的转义概率乘,假设两个状态的概率没看到,那么转义概率为0。整个相乘链就为0,显然不合理。所以须要平滑,事实上就是通过策略为没有看到的二元对提供一个默认的计算方式。

    #3 二元对之间的关系非常多,一版在1B规模以上。而输入法智能非常用非常小规模(1kw),那么就须要对这个进行剪枝,剪枝非常重要,最大限度的保证剪枝后模型的准确率和剪枝前相近,后面具体介绍。
  • 相关阅读:
    jquery中选择块并改变属性值的方法
    Bash Shell中Shift用法分享
    linux批量备份服务器配置文件和目录的脚本
    [Java开发之路](8)输入流和输出流
    cf 251 B Playing with Permutations 暴力 分类讨论
    CSS改变字体下划线颜色
    DICOM:C-GET服务
    Android平台录音音量计的实现
    【BZOJ】2186 沙拉公主的困惑
    【php】global的使用与php的全局变量
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10573835.html
Copyright © 2011-2022 走看看