赞
踩
定义
通过计算机自动识别出句子中的词,在词间加入边界标记符,分隔出各个词汇。
为什么需要中文分词?因为,汉语中,书面上以字为基本单位,语义上以词为基本单位。
难点
1)没有统一的分词标准,不同的领域对于词的划分方式有不同的标准。
2)歧义消解
例子1:结婚的和尚未结婚的
例子2:研究生命的起源
例子3:南京市长江大桥
3)未登录词(OOV)
技术方案
1)基于规则分词
2)基于统计分词
3)混合分词(规则+统计)
通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行逐一匹配,找到则切分,否则不予切分。
主要有以下方法:
假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前待切分字符串中的前i个字符作为匹配字段,查找词典。若词典中存在该词,则匹配成功,匹配字段作为一个词切分出来。若词典中不存在该词,则匹配失败,将匹配字段中的最后一个字符去掉,对剩下的字符重新进行匹配,反复循环,直到匹配成功,或者剩余字符数为1为止。
与正向最大匹配法类似,从被处理文档的末端开始匹配扫描,每次取最末端的i个字符进行匹配,若匹配失败,则去掉匹配字段的最前面一个字符,继续匹配。
由于汉语中的偏正结构较多,一般从后往前匹配,可以适当提高精确度。
将正向最大匹配法和逆向最大匹配法得到的分词结果进行比较,按照最大匹配原则,选择词数最少的结果返回。
根据研究,中文中,约90%的句子,正向最大匹配法和逆向最大匹配法结果相同,约9%的句子两种切分方法得到的结果不一样,但是其中必有一个是正确的,只有约1%的句子,两种方法均切分错误。
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。
形式上表现为序列标注问题,每个字在构造一个特定的词语时,都占据着一个确定的构词位置(即词位),构词位置只有四个取值:B(词首)、M(词中)、E(词尾)、S(单独成词)。
例子1:研究/生命/的/起源
例子2:南京市/长江大桥/。
统计分词方法可以分为基于传统机器学习和基于深度学习两大类。
常见算法:
对于长度为n的字符串,分词结果为一系列词。每个词按它在文本中起始位置可以记作区间 [i,j] ,其中1 <= i <= j <= n。
将标准分词结果的所有区间构成一个集合A,将分词算法预测的分词结果的所有区间构成一个集合B。
中文分词的精准率和召回率的计算公式如下:
以"结婚的和尚未结婚的"为例:
单词序列 | 集合 | 元素 | 个数 | |
标准 | 结婚 的 和 尚未 结婚 的 | A | [1,2],[3],[4],[5,6],[7,8][9] | 6 |
预测 | 结婚 的 和尚 未结婚 的 | B | [1,2],[3],[4,5],[6,7,8][9] | 5 |
重合 | 结婚 的 和尚为结婚 的 | A n B | [1,2][3][9] | 3 |
================================================================================================
================================================================================================
概述
论文提出,使用半监督的方法,通过对文本自动分词,训练embeddings,然后通过训练后的embeddings来提升分词系统的性能。
模型架构
如图1所示,本文的模型由一个representation layer和一个scoring layer组成。
representation layer利用Bi-LSTM来捕获句子中每个字符的上下文。对于一个句子{w1, w2, w3,··wN},其中wi是句子中的第i个字符,N是句子的长度,对每个字符和,分别使用和表示character unigram和character bigram。前向word representation的计算方式为,后向word representation类似,然后,和分别输入前向和后向LSTM当中,获取输出和,通过组合和获得本层的最终输出。
scoring layer通过组合和label embedding,获得该位置的最终表示,其中是label M的embedding。最后,通过乘以label M的得分单元,获得相应label的得分。
Word-Context Character Embeddings
类似skip-gram模型,对于给定长度为n的句子:{w1, w2, w3,··wn}及其对应的标签:{l1, l2, l3,··ln},当前字符wt的预训练上下文是大小为c的窗口中的周围字符及其对应的标签,如图2所示:
字和标签的embedding分别用和表示。
字的word-context embedding通过预测周围的和进行训练。
为了获取顺序信息,当处在不同的位置时,使用不同的embedding matrices。比如,当context window为5时,每个都有四个不同版本的,分别是和,每一个都有属于自己的embedding matrix。注意,每个字都有两种embedding,其中,当wi是焦点词时,是wi的embedding,当wi用作周围的上下文词时,是wi的embedding。
最后,通过Negative sampling进行训练。
Bigram embeddings的训练方法相同。对于out-of domain segmentation,我们为每个字训练两种embeddings,分别从两个域提取知识
实验结果
最后实验结果如表4所示:
================================================================================================
================================================================================================
概述
本论文指出近年来很多基于字符的序列标注框架的分词方法,存在两个缺点:
1)依赖于手工设计的Bigram feature,不利于自动捕获N-gram features。
2)它们没有使用完整的单词信息。
对于第一个缺点,作者提出了一个卷积神经模型,它能够捕获丰富的n-gram特征,而不需要任何特征工程。对于第二个问题,作者提出了一种有效的方法来将所提出的模型与word embeddings集成在一起。word embeddings是从大量的自动分段数据中学习的。因此,该方法属于半监督学习的范畴。
模型架构
1)Lookup Table
把输入从字列表转换成矩阵。除了字以外,其他特征也可以很容易地纳入模型中,下文中我们将描述如何将词特征纳入模型。我们将每个特性对应到一个查找表(有些特征可能共享相同的查找表),在最后表示中,会把所有的特征拼接起来。
2)Convolutional Layer
本文的网络非常简单——只使用卷积层(不使用池化层)。卷积层使用GLU作为非线性单元,在某些关于语言建模的任务中,GLU已经证明其优于ReLU。形式上,我们定义输入通道的数量为N,输出通道的数量为M,输入长度为L,kernel width为k。卷积层可以写成:
堆叠的卷积层可以捕获远距离信息。从每个字符的角度来看,信息在一个金字塔中流动,图3显示了一个层叠的三个卷积层的网络。在最顶层,使用线性变换将该层的输出转换为非标准化标签分数,其中C为标签种类数。
3)CRF Layer
对于序列标记任务,明确考虑相邻标记之间的相关性通常是有好处的。相邻标签之间的关联可以建模为一个转移矩阵。对于句子S = (c1, c2,…),经过卷积层后,我们有。对于一个标签序列y = (y1, y2,…,我们将其非标准化分数定义为,则定义label序列的概率为,该模型最后的损失函数为。
在训练过程中,通过反向传播使损失函数最小化。在测试过程中,使用Veterbi算法快速找到概率最大的标签序列。
与Word Embeddings集成
最近的研究表明,从大量的自动标注数据中学习到的word embeddings可以极大地改善word-based分词系统。作者提出了一种有效的方法来集成word embeddings到本文的character-based模型当中。集成带来了两个好处,一方面,可以使用full word information,另一方面,可以更好地利用未标记的大型数据。
为了使用word embeddings,作者设计了一组word features,如表1所示:
作者把word features对应到一个查找表。字ci的最终表示为:
其中,⊕表示连接操作。注意,word features的最大长度被设置为4,因此特征空间非常大。关键的一步是缩小特征空间,使存储成本控制在可行范围内,同时,可以有效地解决数据稀疏性问题。
解决方案是,对于未标记数据和Teacher CWS模型,我们使用Teacher模型对进行分词,得到自动分词的数据。从中生成一个词汇表,其中低频词被丢弃。如果∗不在中时,我们将替换为。为了更好地利用自动分词的数据,我们使用word2vec训练word embeddings。
整个过程总结如下:
1)训练一个不依赖于word feature的Teacher模型。
2)用Teacher模型对未标注数据D进行分词,得到自动分词的数据。
3)从构建词汇表,将中没有出现的所有单词替换为UNK。
4)使用word2vec在上训练word embeddings。
5)使用预训练好的word embeddings训练Student模型。
注意,在这个过程中没有使用外部标签数据。
实验结果
最后实验结果如表3所示:
================================================================================================
================================================================================================
概述
论文提出,与基于复杂的神经网络结构的模型相比,当Bi-LSTM模型与标准的深度学习技术和最佳实践相结合时,可以在许多流行数据集上取得更好的准确性。此外,作者的误差分析表明,OOV对神经网络模型仍然具有挑战性,而且许多剩余的错误不太可能通过结构改变而得到修正。作者证明,适当地训练和调整一个相对简单的结构,使用最小的特征集和贪婪搜索,可以达到先进的精确度,击败更复杂的神经网络结构。(character and bigram),如图1所示。
论文使用三种被广泛认可的技术来获得模型的最大性能:
1)pre-trained embeddings
2)dropout
3)hyperparameter tuning
论文通过误差分析,发现错误主要来源于以下方面:
1)大约三分之一的错误是由于注释不一致造成的,而这些错误只能通过手动注释来消除。
2)另外三分之二是因为词汇量不足,以及训练数据中没有语义线索。其中一些错误几乎不可能用不同的模型架构来解决。
模型架构
作者使用一个简单的Bi-LSTM模型。
每个输入位置上使用两种特征,unigrams and bi-grams。
两种特征concatenated后输入到两层的Bi-LSTM当中,其中,每层有256个隐藏单元。作者发现相对于concatenated,把backward LSTM放在forward LSTM之上,可以提高精度。
最后通过softmax层输出结果。
论文描述了从本模型架构中获得最佳性能的最佳实践,主要通过以下手段:
1)Recurrent Dropout:将dropout应用到LSTMs的recurrent connections。
2)Hyperparameters:通过对超参数的调整,作者发现它对于简单体系结构的性能至关重要。
3)Pretrained Embeddings:使用wang2vec对character embeddings和characterbigram embeddings进行了预训练。试验了两种方法,一种是将预先训练好的embeddings设置为常量,另一种是对特定数据集进行微调。
实验结果
最后实验结果如表2、表3所示:
表2、表3分别是有预训练embeddings和没有预训练embeddings的实验结果。在大部分的数据集上加入预训练的embeddings都能有一个点左右的提升,除了MSR和PKU两个数据集,这两个数据集上本文算法表现并不好。
另外还比较了固定的预训练embeddings和更新的预训练embeddings的效果,固定的预训练embeddings在7个数据集中有5个数据集的效果要好于更新的embeddings。
表6比较了各种技术对于模型性能的影响:
================================================================================================
================================================================================================
概述
论文提出了一种解决跨领域中文分词方法。论文指出,由于不用领域之间的Gap of domain distributions和Out of vocabulary (OOV) problem,导致分词模型在处理不同领域的文本时,性能急剧下降,为了解决这个问题,提出了使用Distant annotation联合Adversarial training的方法。此方法不需要任何预定义的领域知识(如词典),可以自动高效的学习发现领域专有词汇,在跨领域文本上进行自动标注。对于对抗式训练,开发了一个句子级的训练程序,可以实现降噪和最大限度地利用源域信息。
Distant annotation的目标,是在不需要任何人工定义词典的情况下,自动对目标领域文本实现自动标注。通过重新思考“Chinese words”的定义和本质,作者开发了一个词汇挖掘器,从未标注的目标领域文本中获取特定领域的词汇。此外,在源域数据上训练一个分词器来识别未标记目标数据中的常用词。最后,对来自目标领域的句子实现自动标注,可以用作目标领域的训练数据。
虽然Distant annotation可以提供效果不错的目标领域的标注数据,但仍然存在影响最终性能的标注错误问题。为了降低噪声数据的影响,更好地利用源域数据,作者提出了在源域数据集和通过Distant annotation构造的目标领域数据集上联合进行Adversarial training的方法。Adversarial training模块可以捕获特定领域更深入的特性,和不可知领域的特性。
Distant annotation(DA)
DA的目的是自动生成目标域内句子的分词结果,有两个主要模块,包括一个基本分词器和一个特定领域的单词挖掘器。基本分词器使用来自源域的标注数据训练,用于识别源域和目标域中常见的单词。特定领域的单词挖掘器旨在探索目标特定于领域的单词。
本文的基本分词器使用GCNN+CRF模型。当使用基本分词器对目标领域文本进行分词后,可以得到一系列分词后的文本,进行去停用词操作后,得到Γ = {T1, T2, ..., TN }。我们对Γ进行N-gram提取,得到γ = {t1, t2, ..., tm}。对于每个序列ti,需要计算它是一个有效单词的可能性。在这个过程中,主要考虑四个因素:
1)互信息 Mutual Information (MI):MI被广泛用于估计两个随机变量的相关性,在这里,使用不同子字符串之间的相互信息来度量文本段的内部紧密性,如图3(a)所示。
为了排除极端情况,有必要枚举所有候选子字符串。一个序列ti由n个字符组成的最终MI得分ti = {c1…cn}定义为:
p(·)表示整个语料库Γ给出的概率。
2)熵得分 Entropy Score (ES):使用ES来度量候选文本片段的不确定性,因为不确定性越高意味着邻近语境越丰富。设Nl(ti) = {l1, ..., lk}和Nr(ti) = {r1, ..., rk 0} 分别是ti的左临近和右临近集合,ti的左熵得分ESl和右熵得分ESr可以分别表示为:
和。
我们选择ESl(ti)和ESr(ti)中的最小值作为ti的最终熵得分。ES(ti)可以显式地表示文本段的外部灵活性,如图3(b)所示。
熵得分进一步作为判断该段是否为独立词的重要指标。
3)tf-idf:tf-idf可以反映一个词对一个集合或语料库中的文档的重要性。大多数特定于领域的单词是名词实体,它们通常具有较大的权重因子。在这里,我们定义了一个单词概率分数pval(ti)来表示ti被定义为一个有效单词的可能性。
式中,σ为sigmoid函数,N为max-min法的归一化运算。
4)词频:如果ti是一个有效的词,它应该在Γ中反复出现。
最后,通过为特定于领域的pval(ti)和单词词频设置适当的阈值,词汇挖掘器可以有效地挖掘特定领域的词汇,然后为目标领域构造特定领域的词汇集合C。在本文中,我们只考虑pval(ti)≥0.95和词频大于10的单词ti。
图2的左边部分说明了DA的数据构建过程。首先,我们利用特定于领域的词挖掘器,用于为目标领域构建集合C。用句子”溶酶
菌的科学研究”作为一个例子,我们使用基于C的最大化匹配算法,这表明“溶酶菌”是一个有效的词。因此,对字符“溶”、“酶”、“菌”是“B”、“M”、“E”。对于句子的剩余部分,我们采用baseline segmenter进行标注。对字符”的科学研究”的标注是{“S”,“B”。“E”、“B”、“E”}。
Adversarial Training(AT)
对抗训练模块的结构如图2右边所示。我们为目标域构造一个标注的数据集,对抗网络的输入是来自源域S和目标域T的两个数据集。为了提取不同的特征,有三个编码器,所有的编码器都是基于GCNN。针对特定领域,源域和目标域分别采用了Esrc和Etgt两个独立的编码器。对于领域不可知的特性,我们采用了一个共享编码器Eshr和一个鉴别器Gd,它们都将被进行对抗训练。
对于这两个特定领域的编码器,输入的句子分别是和。利用Esrc和Etgt可以得到ssrc和stgt的序列表示和。
对于共享编码器,我们希望Eshr能够生成一些表示,这些表示可以欺骗句子级别鉴别器,从而正确地预测每个句子的域,这样Eshr最终能够提取与域无关的特性。Eshr将对来自源域ssrc和目标域stgt的句子分别提取出特征和。网络的判别器Gd旨在区分每个句子的域。具体来说,将把每个句子的最终表示H∗输入到一个采用CNN网络文本的二进制分类器中。Gy将产生输入句子s来自源域或目标域的概率。因此,鉴频器的损失函数为:
共享编码器Eshr产生的特征应该能够欺骗鉴别器正确预测s的域。因此,共享编码器Lc的丢失函数是Ld的翻转版本:
最后,我们将H和H∗连接起来,作为输入句子的最终序列表示。对于源域ssrc,,,对于目标领域stgt,。最后的表示将被输入到CRF标记器中。
最后,使用反向传播算法对模型进行端到端方式联合训练。当目标域上没有注释数据集时,我们可以在对抗训练过程中去除Ltgt,使用源域上的分词器进行评估。
实验结果
最后实验结果如表3所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。