基于bilstm-cnn-crf的中文分词(一)

author author     2023-05-02     746

关键词:

参考技术A         在序列标注任务(中文分词CWS,词性标注POS,命名实体识别NER等)中,目前主流的深度学习框架是BiLSTM+CRF。其中BiLSTM融合两组学习方向相反(一个按句子顺序,一个按句子逆序)的LSTM层,能够在理论上实现当前词即包含历史信息、又包含未来信息,更有利于对当前词进行标注。BiLSTM在时间上的展开图如下所示。

        若输入句子由120个词组成,每个词由100维的词向量表示,则模型对应的输入是(120,100),经过BiLSTM后隐层向量变为T1(120,128),其中128为模型中BiLSTM的输出维度。如果不使用CRF层,则可以在模型最后加上一个全连接层用于分类。设分词任务的目标标签为B(Begin)、M(Middle)、E(End)、S(Single),则模型最终输出维度为(120,4)的向量。对于每个词对应的4个浮点值,分别表示对应BMES的概率,最后取概率大的标签作为预测label。通过大量的已标注数据和模型不断迭代优化,这种方式能够学习出不错的分词模型。

        然鹅,虽然依赖于神经网络强大的非线性拟合能力,理论上我们已经能够学习出不错的模型。但是,上述模型只考虑了标签上的上下文信息。对于序列标注任务来说,当前位置的标签L_t与前一个位置L_t-1、后一个位置L_t+1都有潜在的关系。

        例如,“我/S 喜/B 欢/E 你/S”被标注为“我/S 喜/B 欢/B 你/S”,由分词的标注规则可知,B标签后只能接M和E,因此上述模型利用这种标签之间的上下文信息。因此,自然语言处理领域的学者们提出了在模型后接一层CRF层,用于在整个序列上学习最优的标签序列。添加CRF层的模型如下图所示。

上述图片出自 http://www.aclweb.org/anthology/N16-1030 。

模型通过下述公式计算最优标注序列,A矩阵是标签转移概率,P矩阵是BiLSTM的预测结果。

模型训练的时候,对于每个序列 y 优化对数损失函数,调整矩阵A的值。

当模型训练完成,模型预测的时候,按如下公式寻找最优路径:

Y_x表示所有可能的序列集合,y*表示集合中使得Score函数最大的序列。

(以上为论文的核心部分,其它细节请参阅原文)

        至此,我们已经大致了解BiLSTM-CRF的原理。对于分词任务,当前词的标签基本上只与前几个和和几个词有关联。BiLSTM在学习较长句子时,可能因为模型容量问题丢弃一些重要信息,因此我在模型中加了一个CNN层,用于提取当前词的局部特征。CNN用于文本分类的模型如下。

        设句子输入维度为(120,100),经过等长卷积后得到T2(120,50),其中50为卷积核个数。对于当前词对应的50维向量中,包含了其局部上下文信息。我们将T1与T2拼接,得到T3(120,178),T3通过全连接层得到T4(120,4),T4输入至CRF层,计算最终最优序列。最终模型BiLSTM-CNN-CRF如下。

本文模型并不复杂,下文将讲述一下我实现时的一些细节。主要包括:

1. 模型输入需要固定长度,如何解决

2. 如何做好模型的实时训练

3. 与结巴分词的性能比较

4. 如何做成微信分词工具、分词接口服务

python中文分词的原理你知道吗?

...要人为切分。根据其特点,可以把分词算法分为四大类:基于规则的分词方法基于统计的分词方法基于语义的分词方法基于理解的分词方法下面我们对这几种方法分别进行总结。基于规则的分词方法这种方法又叫作机械分词方法... 查看详情

基于隐马尔科夫模型的中文分词方法(代码片段)

本文主要讲述隐马尔科夫模及其在中文分词中的应用。基于中文分词语料库,建立中文分词的隐马尔科夫模型,最后用维特比方法进行求解。一、隐马尔科夫模型介绍隐马尔科夫模型中包括两个序列,其中一个是观测序列,另一... 查看详情

有哪些比较好的中文分词方案?

...文分词根据实现原理和特点,主要分为以下2个类别:1、基于词典分词算法也称字符串匹配分词算法。该算法是按照一定的策略将待匹配的字符串和一个已建立好的“充分大的”词典中的词进行匹配,若找到某个词条,则说明匹... 查看详情

基于java的ikanalyzer中文分词运用

一、前提IKAnalyzer分词器常应用于大数据开发的数据准备阶段,它能对任意长的文字进行关键字提取、文字重组、数据清洗等二次处理,并将处理好的关键数据通过某种分割符重新拼接起来,形成一个可用于进行机器学习的数据... 查看详情

中文分词实践(基于r语言)

  背景:分析用户在世界杯期间讨论最多的话题。  思路:把用户关于世界杯的帖子拉下来。然后做中文分词+词频统计,最后将统计结果简单做个标签云。效果例如以下:     兴许:中文分词是... 查看详情

基于词典的中文分词算法3:最大概率法

最大概率法分词是在最大匹配分词算法上的改进。在某些语句切分时,按最大长度切分词语可能并不是最优切分。而不按最优长度切分词语,则同一语句会出现多种切分结果。计算每种切分结果的概率,选取概率最高的切分作为... 查看详情

转:从头开始编写基于隐含马尔可夫模型hmm的中文分词器

http://blog.csdn.net/guixunlong/article/details/8925990从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一-资源篇首先感谢52nlp的系列博文(http://www.52nlp.cn/),提供了自然语言处理的系列学习文章,让我学习到了如何实现一个基于隐含... 查看详情

百度中文分词如何分词

...、最少切分(使每一句中切出的词数最小)百度中文分词基于字符串匹配举例给大家说明一下:“我想去澳大利亚旅游”正向最大匹配:我想去,澳大利亚旅游逆向最大匹配:我想,想去,澳大利亚,旅游。最少切分:我把上面... 查看详情

编程实践golang实现中文分词

...则重新组合成词序列的过程。现在分词方法大致有三种:基于字符串配置的分词方法、基于理解的分词方法和基于统计的分词方法。今天为大家分享一个国内使用人数最多的中文分词工具GoJieba。源代码地址:GitHub-yanyiwu/gojieba:"... 查看详情

中文分词常用方法

https://www.cnblogs.com/ysherlock/p/7822304.html基于词典的方法、基于统计的方法、基于规则的方法1、基于词典的方法(字符串匹配,机械分词方法)定义:按照一定策略将待分析的汉字串与一个大机器词典中的词条进行匹配,若在词典中... 查看详情

中文分词(概况)

...缀中文词语的切分歧义中文未定义词词性标注解决方法:基于词典的机械切分算法基于规则的切分算法基于统计的切分算法对于未登录词的处理。未登录词大致包括以下几类中国人名,翻译地名,机构名,商标字号,专业术语,... 查看详情

基于词典的中文分词算法1:最大匹配法

https://www.cnblogs.com/dahuang123/p/11990651.htmlhttps://www.cnblogs.com/by-dream/p/6429615.htmlhttps://zhuanlan.zhihu.com/p/103392455 查看详情

结巴分词

...,结巴分词利用进行中文分词。其基本实现原理有三点:基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)采用了动态规划查找最大概率路径,找出基于词频的最大切分组合对于未登... 查看详情

jiba中文分词原理

...序列分成一个一个单独的词。现有的分词算法有三大类:基于字符串匹配的分词:机械分词方法,它是按照一定的策略将待分析的字符串与一个充分大的机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。基... 查看详情

基于hmm的中文分词

...论文中听说的:李开复1988年的博士论文发表了第一个基于隐马尔科夫模型(HMM)的语音识别系统Sphinx,被《商业周刊》评为1988年美国最重要的科技发明。出处请见KaifuLeeHMM乍一听似乎很玄妙,但是其实很简单... 查看详情

文本分类方法都有哪些

...度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。下面简单总结一下中文分词技术:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法[1]。1,基于字符串匹配的... 查看详情

基于开源中文分词工具pkuseg-python,我用张小龙的3万字演讲做了测试(代码片段)

做过搜索的同学都知道,分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它... 查看详情

中文分词资源

...喻,最大匹配法(正向、逆向)等需要一个好的词表,而基于字标注的中文分词方法又需要人工加工好的分词语料库,这里大 查看详情