实现原理与性能¶
在线学习算法框架¶
在机器学习领域,在线学习(Online learning)指每次通过一个训练实例学习模型的学习方法。在线学习的目的是正确预测训练实例的标注。在线学习最重要的一个特点是,当一次预测完成时,其正确结果便被获得,这一结果可直接用来修正模型。
在自然语言处理领域,在线学习已经被广泛地应用在分词、词性标注、依存句法分析等结构化学习任务中。
模型裁剪¶
在LTP中,词性标注、句法分析两个模块还存在模型比较大的问题。为了缩小模型的大小,我们参考 Learning Sparser Perceptron Model ,将其中提到的特征裁剪策略加入了LTP。
具体来讲,LTP特征映射是以特征前缀为单位进行组织的。对应的,我们裁剪了同一前缀下更新次数较少的所有特征。
测试设置¶
下述实验的测试硬件环境如下:
CPU: Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
RAM: 128G
分词模块¶
在LTP中,我们将分词任务建模为基于字的序列标注问题。对于输入句子的字序列,模型给句子中的每个字标注一个标识词边界的标记。在LTP中,我们采用的标记集如附录所示。
对于模型参数,我们采用在线机器学习算法框架从标注数据中学习参数。对于分词模型,我们使用的基本模型特征有:
类别 |
特征 |
---|---|
char-unigram |
ch[-2], ch[-1], ch[0], ch[1], ch[2] |
char-bigram |
ch[-2]ch[-1], ch[-1]ch[0],ch[0]ch[1],ch[1]ch[2] |
dulchar |
ch[-1]=ch[0]? |
dul2char |
ch[-2]=ch[0]? |
同时,为了提高互联网文本特别是微博文本的处理性能。我们在分词系统中加入如下一些优化策略:
英文、URI一类特殊词识别规则
利用空格等自然标注线索
在统计模型中融入词典信息
从大规模未标注数据中统计的字间互信息、上下文丰富程度
在统计模型中融合词典的方法是将最大正向匹配得到的词特征
类别 |
特征 |
---|---|
begin-of-lexicon-word |
ch[0] is preffix of words in lexicon? |
middle-of-lexicon-word |
ch[0] is middle of words in lexicon? |
end-of-lexicon-word |
ch[0] is suffix of words in lexicon? |
基础模型在人民日报测试数据上的性能如下:
语料信息:人民日报1998年2月-6月(后10%数据作为开发集)作为训练数据,1月作为测试数据。
准确率为:
P
R
F
开发集
0.979291
0.978217
0.978715
测试集
0.979109
0.977561
0.978335
测试程序:cws_cmdline
运行时内存:175MB
速度:161.97KB/sec
个性化分词¶
个性化分词是LTP的特色功能。个性化分词为了解决测试数据切换到如小说、财经等不同于新闻领域的领域。 在切换到新领域时,用户只需要标注少量数据。 个性化分词会在原有新闻数据基础之上进行增量训练。 从而达到即利用新闻领域的丰富数据,又兼顾目标领域特殊性的目的。
准备基础模型¶
用户可以从百度云托管上获得符合北大切词规范的基础模型。
如果需要利用其它切词规范的数据作为基础模型,使用 ./tools/train/otcws learn
训练模型时需要指定 --dump-details
选项为true。
个性化训练¶
个性化分词模型的训练同样可以通过分词训练套件 otcws
来实现。:
$ ./tools/train/otcws customized-learn
otcws(customized-learn) in LTP 3.3.2 - (C) 2012-2016 HIT-SCIR
Customized training suite for Chinese word segmentation
usage: ./otcws learn <options>
options:
--baseline-model arg The baseline model, which should be saved with
--dump-details options.
--model arg The prefix of the model file, model will be
stored as model.$iter.
--reference arg The path to the reference file.
--development arg The path to the development file.
--algorithm arg The learning algorithm
- ap: averaged perceptron
- pa: passive aggressive [default]
--max-iter arg The number of iteration [default=10].
--rare-feature-threshold arg The threshold for rare feature, used in model
truncation. [default=0]
-h [ --help ] Show help information
这种情况下,需要指定 --baseline-model
参数为前面获得的基础模型。其余选项与 ./tools/train/otcws learn
一致。
个性化测试¶
个性化分词模型的训练同样可以通过分词训练套件 otcws
来实现。:
$ ./tools/train/otcws customized-test
otcws(customized-test) in LTP 3.3.2 - (C) 2012-2016 HIT-SCIR
Customized testing suite for Chinese word segmentation
usage: ./otcws test <options>
options:
--baseline-model arg The path to the baseline model.
--model arg The path to the model file.
--lexicon arg The lexicon file, (optional, if configured, constrained
decoding will be performed).
--input arg The path to the reference file.
--evaluate arg if configured, perform evaluation, input words in
sentence should be separated by space.
-h [ --help ] Show help information
与customized-learn类似,需指定 --baseline-model
参数为前面获得的基础模型。其余选项与 ./tools/train/otcws test
一致。
词性标注模块¶
与分词模块相同,我们将词性标注任务建模为基于词的序列标注问题。对于输入句子的词序列,模型给句子中的每个词标注一个标识词边界的标记。在LTP中,我们采用的北大标注集。关于北大标注集信息,请参考:
对于模型参数,我们采用在线机器学习算法框架从标注数据中学习参数。对于词性标注模型,我们使用的模型特征有:
类别 |
特征 |
---|---|
word-unigram |
w[-2], w[-1], w[0], w[1], w[2] |
word-bigram |
w[-2]w[-1],w[-1]w[0],w[0]w[1],w[1]w[2] |
word-trigram |
w[-1]w[0]w[1] |
last-first-character |
ch[0,0]ch[0,n],ch[-1,n]ch[0,0],ch[0,-1]ch[1,0] |
length |
length |
prefix |
ch[0,0],ch[0,0:1],ch[0,0:2] |
suffix |
ch[0,n-2:n],ch[0,n-1:n],ch[0,n] |
基础模型在人民日报数据集上的性能如下:
语料信息:人民日报1998年2月-6月(后10%数据作为开发集)作为训练数据,1月作为测试数据。
准确率为:
P
开发集
0.983586
测试集
0.983456
测试程序:pos_cmdline
运行时内存:415MB
速度:45942 tok./sec
命名实体识别模块¶
与分词模块相同,我们将命名实体识别建模为基于词的序列标注问题。对于输入句子的词序列,模型给句子中的每个词标注一个标识命名实体边界和实体类别的标记。在LTP中,我们支持人名、地名、机构名三类命名实体的识别。关于LTP使用的标记参考附录。
对于模型参数,我们采用在线机器学习算法框架从标注数据中学习参数。对于命名实体识别模型,我们使用的模型特征有:
类别 |
特征 |
---|---|
word-unigram |
w[-2], w[-1], w[0], w[1], w[2] |
word-bigram |
w[-2]w[-1],w[-1]w[0],w[0]w[1],w[1]w[2] |
postag-unigram |
p[-2],p[-1],p[0],p[1],p[2] |
postag-bigram |
p[-1]p[0],p[0]p[1] |
基础模型在人民日报数据集上的性能如下:
语料信息:人民日报1998年1月做训练(后10%数据作为开发集),6月前10000句做测试作为训练数据。
准确率
P
R
F
开发集
0.924769
0.908858
0.916745
测试集
0.942912
0.940538
0.941724
测试程序:ner_cmdline
运行时内存:23MB
速度:49000 tok./sec
依存句法分析模块¶
依存句法分析模块的主要算法依据神经网络依存句法分析算法,Chen and Manning (2014)。同时加入丰富的全局特征和聚类特征。在模型训练时,我们也参考了Yoav等人关于dynamic oracle的工作。 在 Chinese Dependency Treebank(CDT) 数据集上,其中运行速度和内存开销从CDT测试集上结果中获得。
UAS |
LAS |
|
---|---|---|
开发集 |
84.79 |
82.28 |
测试集 |
84.00 |
81.14 |
测试程序:par_cmdline
运行时内存:366MB
速度:6487 tok./sec
语义角色标注模块¶
在LTP中,我们将SRL分为两个子任务,其一是谓词的识别(Predicate Identification, PI),其次是论元的识别以及分类(Argument Identification and Classification, AIC)。对于论元的识别及分类,我们将其视作一个联合任务,即将“非论元”也看成是论元分类问题中的一个类别。在SRL系统中,我们在最大熵模型中引入L1正则,使得特征维度降至约为原来的1/40,从而大幅度地减小了模型的内存使用率,并且提升了预测的速度。同时,为了保证标注结果满足一定的约束条件,系统增加了一个后处理过程。
在CoNLL 2009评测数据集上,利用LTP的自动词性及句法信息,SRL性能如下所示:
Precision |
Recall |
F-Score |
Speed |
Mem. |
---|---|---|---|---|
0.8444 |
0.7234 |
0.7792 |
41.1 sent./s |
94M(PI+AIC) |