写在前面
- Sequence Labeling主要涉及到了
POS tagging
、Named Entity Recognition
、chunking
等 - 主流的解决方案有两种,一种是基于
hand-crafted
的,比如CRF, Hidden Markov Model;另一种是基于end-to-end
的,主要是使用RNN,配合CNN提取char级别的feature,配合LSTM获取word级别的上下文关联。配合CRF获取infer级别的前后关联,整体来说后者从性能、正确率以及实用程度上都高于前者
中文词处理
Word Segment
DataSets: pku, msr, cityu, as
Tokenizer: jieba, HanLP, StanfordCoreNLP
结婚的和尚未结婚的确实在干扰分词啊
[结婚/vi, 的/ude1, 和/cc, 尚未/d, 结婚/vi, 的/ude1, 确实/ad, 在/p, 干扰/vn, 分词/n, 啊/y]
买水果然后来世博园最后去世博会
[买/v, 水果/n, 然后/c, 来/vf, 世博园/n, 最后/f, 去/vf, 世博会/n]
中国的首都是北京
[中国/ns, 的/ude1, 首都/n, 是/vshi, 北京/ns]
欢迎新老师生前来就餐
[欢迎/v, 新/a, 老/a, 师生/n, 前来/vi, 就餐/vi]
工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作
[工信处/n, 女/b, 干事/nnt, 每月/t, 经过/p, 下属/v, 科室/n, 都/d, 要/v, 亲口/d, 交代/v, 24/m, 口/n, 交换机/n, 等/udeng, 技术性/n, 器件/n, 的/ude1, 安装/v, 工作/vn]
随着页游兴起到现在的页游繁盛,依赖于存档进行逻辑判断的设计减少了,但这块也不能完全忽略掉。
[随着/p, 页游/nz, 兴起/v, 到/v, 现在/t, 的/ude1, 页游/nz, 繁盛/a, ,/w, 依赖于/v, 存档/vi, 进行/vn, 逻辑/n, 判断/v, 的/ude1, 设计/vn, 减少/v, 了/ule, ,/w, 但/c, 这/rzv, 块/q, 也/d, 不能/v, 完全/ad, 忽略/v, 掉/v, 。/w]
Tokenizer | ds | Precision | Recall | F1 score |
---|---|---|---|---|
jieba | pku | 0.8338489375832363 | 0.7728782904800608 | 0.8022067842526882 |
jieba(with user dict) | pku | 0.8343200050211338 | 0.7727757815260308 | 0.8023694658651723 |
HanLP | pku | 0.8863987044475511 | 0.8734416798869414 | 0.8798724933853116 |
Stanford | pku | 0.883465898038581 | 0.8237619508157312 | 0.8525699626278037 |
jieba | msr | 0.7798768059172906 | 0.7544719981628073 | 0.766964083416498 |
jieba(with user dict) | msr | 0.7922662578776877 | 0.7593750028213545 | 0.7754720205623936 |
HanLP | msr | 0.8167591303780943 | 0.8210837683916675 | 0.8189157398952949 |
Stanford | msr | 0.7818544940010788 | 0.8010022770029455 | 0.7913125703503816 |
Named Entity Recognition
SLTK
DataSet: CoNLL 2003 NER
Model: CNN + Bi-LSTM(Char + Word) + CRF

model | Precision | Recall | F1 |
---|---|---|---|
Random Initialization | 0.7072862824839918 | 0.6843748979258535 | 0.6956419913024885 |
Glove | 0.8792050905687264 | 0.9106106561520572 | 0.8946323395375901 |
Glove.Pos.Chunk | 0.8775935069639225 | 0.9135456410774879 | 0.8952087544973495 |
Hidden Markov Model
- 知识点参见:Part-of-Speech Tagging 以及 Hidden Markov Models
- 项目参见:HMM-Tagger
- 论文参见:Stanford Pos Tagging
End-to-End Sequence Labeling
- 项目参见:SLTK 、NCRF++
- 论文参见: Ma X, and Hovy E. End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF 以及 Lample G, Ballesteros M, et al. Neural Architectures for Named Entity Recognition. NANCL, 2016.
CRF++
对Sequence Labeling
鼓捣了两三天,主要就是怼这个CRF++模型,谈一些自己个人的理解
整个模型分为三个大层:
- 第一个大层是char级别的特征提取层,主要用到的是CNN,关注点是单词的形态学(比如
ly
后缀大概率会是adverb
) - 第二个大层是word级别的特征提取层,主要用到的有 Word Embedding, LSTM(GRU),提取出句子中word与其context之间的关系
- 第三个大层是infer级别的输出训练层,在以往的RNN模型中,输出时使用
softmax
或者sigmoid
函数得到结果,每个结果输出时是独立的,因此我们加了一层CRF,使得输出时需要考虑context

Hidden Markov Model
上面HMM
知识点中阿衡学姐已经详细地记录了笔记,因此在这里只放几张图帮助理解
Hidden Markov Model的概览

Forward时某一时刻t
- 在 forward_algorithm中,t+1时刻hidden状态j的概率是 t时刻所有状态概率*转换矩阵,再求和
-
而在viterbi_algorithm中,t+1时刻hidden状态j的概率是 t时刻所有状态概率*转换矩阵,再取最大值,并记录下t时刻贡献值最大的状态 用于输出路径
forward_at_t.png
Forward Algorithm

网友评论