97.5%准确率的深度学习中文分词(字嵌入+Bi-LSTM+CRF)
副标题[/!--empirenews.page--]
摘要深度学习当前在NLP领域发展也相当快,翻译,问答,摘要等基本都被深度学习占领了。 本文给出基于深度学习的中文分词实现,借助大规模语料,不需要构造额外手工特征,在2014年人民日报语料上取得97.5%的准确率。模型基本是参考论文:http://www.aclweb.org/anthology/N16-1030 相关方法中文分词是个比较经典的问题,各大互联网公司都会有自己的分词实现。 考虑到性能,可维护性,词库更新,多粒度,以及其他的业务需求,一般工业界中文分词方案都是基于规则。 1) 基于规则的常见的就是最大正/反向匹配,以及双向匹配。 深度学习方法深度学习主要是特征学习,端到端训练, 适合有大量语料的场景。另外各种工具越来越完善,利用GPU可大幅提高训练速度。 前文提过,深度学习主要是特征学习,在NLP里各种词嵌入是一种有效的特征学习。 本文实现的第一步也是对语料进行处理,使用word2vec对语料的字进行嵌入,每个字特征为50维。 得到字嵌入后,用字嵌入特征喂给双向LSTM, 对输出的隐层加一个线性层,然后加一个CRF就得到本文实现的模型。 另外,字符嵌入的表示可以是纯预训练的,但也可以在训练模型的时候再fine-tune,一般而言后者效果更好。 对于fine-tune的情形,可以在字符嵌入后,输入双向LSTM之前加入dropout进一步提升模型效果。 最后,对于最优化方法,文本语言模型类的貌似Adam效果更好, 对于分类之类的,貌似AdaDelta效果更好。 语料本文使用2014人民日报语料,一共50w+ 句子,1千多万的字符次数 (句子长度超过50的不考虑) 标注示例:
预处理我们首先使用word2vec对字进行嵌入,具体就是把每一句按字符切割,空格隔开,喂给word2vec,指定维度50 然后我们把每一句处理成 :
对于标注,我们按字分词的典型套路,
这样处理后使用前面描述模型训练。 训练代码(编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |