输入法之模型训练

输入法,尤其是拼音输入法,解决的就是一些序列标注的问题,针对给定的状态(拼音),获取其概率最高的隐状态(中文)。

这个是一个标准的HMM,针对HMM的解码过程,是一个很成熟也很完备的东西。

local的计算和存储能力都有限,我们选择一般是二阶马尔科夫,也就是所谓的bigram model。 高阶对质量会有帮助,但是涉及到存储和计算,工程上不可行。

同理,利用ME 以及CRFmodel都可以解决这一类的标注问题,同样是工程上的问题,不太可行。

确定了采用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),那么就需要对这个进行剪枝,剪枝非常重要,最大限度的保证剪枝后模型的准确率和剪枝前相近,后面详细介绍。

输入法之模型训练,布布扣,bubuko.com

时间: 2024-08-11 03:35:34

输入法之模型训练的相关文章

输入法之模型剪枝一(基于熵的剪枝)

prunning,剪枝,顾名思义就是减掉那些不重要的. 从理论上来讲,剪枝达到的效果就是剪枝后的q和剪枝前的 p 最大化相似,有两种算法 entroy-based以及rank-based. 针对model,使用相对熵来刻画D(q||p) 来刻画,保证两个model的熵差别最小,就是entropy-based.如果使用rank(p|q)来描述,保证整个model的rank差别最小(主要是针对同一个bigram pair的left word),就是rank-based. 对于smoothing,我们

机器学习基本概念和模型训练基本问题

分类与回归的区别 二叉树 二叉树很容易理解,在这里我们一般用满二叉树:就是非叶子节点都有2个分支的树形数据结构 决策树分类 决策树最初是用来做决策用的,就好像下面的见不见相亲对象的决策过程一样: 如果把最后的决策结果看成是分类,那么决策树就可以用来分类了,例如,下面的例子就是把相亲对象分为见和不见两种. 下面通过一个例子来区分这些概念 特征,正负样本,训练集(数据),验证集(数据),预测集(数据) 我们的数据集是一百个点,如下图所示,是二维平面的100个点,这个就是我们总的数据集(全集),这些数

[Kaggle] dogs-vs-cats之模型训练

上一步建立好模型之后,现在就可以训练模型了. 主要代码如下: import sys #将当期路径加入系统path中 sys.path.append("E:\\CODE\\Anaconda\\tensorflow\\Kaggle\\My-TensorFlow-tutorials-master\\01 cats vs dogs\\") import os import numpy as np import tensorflow as tf import input_data import

opencv_人脸检测、模型训练、人脸识别

人脸检测.模型训练.人脸识别 2018-08-15 今天给大家带来一套人脸识别一个小案例,主要是帮助小伙伴们解决如何入门OpenCV人脸识别的问题,现在的AI行业比较火热,AI技术的使用比较广泛.就拿现在的只能手机来说吧,现在很多智能手机都必须有人脸识别解锁.拍照自动美颜.拍照物体识别等等功能,这些都是AI技术的功劳.在此也不多说了,让我们来见证奇迹的发生. 1.首先我们先准备好跑代码的环境,这一点很重要,我在跑这个代码的时候就是环境配置搞了我半天的实际,很头疼.我使用的是python3.6.5

模型训练技巧

模型训练技巧 神经网络模型设计训练流程 图1-1 神经模型设计流程 当我们设计并训练好一个神经网络之后,需要在训练集上进行验证模型效果是否良好.这一步的目的在于判断模型是否存在欠拟合:在确定已经在训练集上拟合的很好,就需要在测试集上进行验证,如果验证结果差就需要重新设计模型:如果效果一般,可能需要增加正则化,或者增加训练数据: 欠拟合处理策略 当模型在训练集上的表现结果并不好的时候,在排除不是数据集和训过程有问题,你可以采用以下几个方法来进行处理. 更换激活函数 Sigmoid激活函数 Sigm

AI模型训练无需购买设备啦!Tesar超算网络让AI模型训练更便捷!

现代科技的发展可以用日新月异来形容,新技术的出现也是层出不穷.一个眨眼的功夫,一门足以改变世界的应用可能就被发明出来了,当然也有可能一个遥遥领先的企业瞬间被超越.处在风云变化时代,最重要的就是时间,就是效率. 对于人工智能行业尤为如此,我们的衣食住行方面都有涉及到人工智能,这将为我们未来的生活提供便捷,一个优秀的idea 被构想出来之后就需要在最短的时间内实现应用,不然就很可能错失先机,被别的企业率先投入使用.而AI在进行深度学习模型训练的时候,需要耗费大量的时间与计算资源,如何在这方面节约时间

使用yolo3模型训练自己的数据集

使用yolo3模型训练自己的数据集 本项目地址:https://github.com/Cw-zero/Retrain-yolo3 一.运行环境 1. Ubuntu16.04. 2. TensorFlow-gpu 1.4.0 或更高版本. 3. Keras 2.2.4 . 4. numpy 1.15.2(实测1.16.1会报错). 二.创建数据集 1. 使用VOC2007数据集的文件结构: 文件结构如下图,可以自己创建,也可以下载VOC2007数据集后删除文件内容. 注:数据集中没有 test.p

神经网络+CNN模型训练总结:

Keras中有一个层是Flatten层,这个层可以把二维的图片转换成一维的数据,因此不需要单独做处理,而是在做完各种数据预处理后,用这个平层,把二维的数据处理成一维. Keras模型中有对数据进行分类,首先不是一定需要把所有的图片都处理成正方形,长方形的图片一样可以进行各种处理,另外,压缩成小的图片是为了处理量小,快速方便,而不是因为一定要这么做,如果资源够的话,那么就用原图也可以. 神经网络层的输入必须是numpy数组,或者numpy数组组成的数组.只有这个格式的数据才可以输入模型训练,另外,

用深度学习做命名实体识别(四)——模型训练

通过本文你将了解如何训练一个人名.地址.组织.公司.产品.时间,共6个实体的命名实体识别模型. 准备训练样本 下面的链接中提供了已经用brat标注好的数据文件以及brat的配置文件,因为标注内容较多放到brat里加载会比较慢,所以拆分成了10份,每份包括3000多条样本数据,将这10份文件和相应的配置文件放到brat目录/data/project路径下,然后就可以从浏览器访问文件内容以及相应的标注情况了. 链接:https://pan.baidu.com/s/1-wjQnvCSrbhor9x3G