论文解读系列| 05:【NER】SoftLexicon模型详解

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: SoftLexicon是一种简单而有效的将词汇信息纳入字符表示的方法。这种方法避免设计复杂的序列建模结构,并且对于任何NER模型,它只需要细微地调整字符表示层来引入词典信息。在4个中文NER基准数据集上的实验结果表明,该方法的推理速度比现有SOTA方法快6.15倍,性能更好。

背景

SoftLexicon 出自ACL 2020的Simplify the Usage of Lexicon in Chinese NER

官方代码:
https://github.com/v-mipeng/LexiconAugmentedNER

论文:
https://arxiv.org/abs/1908.05969

更多、更及时内容欢迎留意Wechat公众号小窗幽记机器学习

模型结构

近年来学者试图利用词典(词汇信息)来提高中文命名实体识别(NER)的性能如Lattice LSTM等,但其模型架构十分复杂限制了其计算速度,从而限制了它在许多需要实时NER响应的工业领域中的应用。

SoftLexicon是一种简单而有效的将词汇信息纳入字符表示的方法。这种方法避免设计复杂的序列建模结构,并且对于任何NER模型,它只需要细微地调整字符表示层来引入词典信息。在4个中文NER基准数据集上的实验结果表明,该方法的推理速度比现有SOTA方法快6.15倍,性能更好。实验结果还表明,该方法可以很容易地与BERT等预训练模型相结合。实验表明当采用单层的Bi-LSTM实现序列建模层时,本文的方法在推理速度和序列标注性能上都比现有方法有了很大的提高。

SoftLexicon 算法流程大致如下:

image.png

大致有以下3个步骤:

  • 输入序列的每个字符映射到一个密集向量中
  • 构建软词典特征并将其添加到每个字符的表示
  • 将这些增强的字符表示输入到序列建模层和CRF层,以获得最终的预测结果。

字符表示层

输入文本字符序列记为$s=$ $\left\{c_{1}, c_{2}, \cdots, c_{n}\right\} \in \mathcal{V}_{c}$, 其中 $\mathcal{V}_{c}$是字符表,每个字符$c_{i}$用一个稠密向量表示(即embedding):
$$ x_{i}^{c}=e^{c}\left(c_{i}\right) $$
其中 $e^{c}$ 是字符表示向量的查找表。

同时使用char+bichar的联合表示增强字符embedding:
$$ x_{i}^{c}=\left[e^{c}\left(c_{i}\right) ; e^{b}\left(c_{i}, c_{i+1}\right)\right] $$
其中$e^{b}$是bigram的embedding的查找表。

引入词汇信息

单纯使用字符信息的NER模型存在不能利用单词信息这个不足。为此,SoftLexicon提出两种方法:ExSoftword Feature 和 SoftLexicon 以在字符表示中引入词信息。对于字符序列$s=$ $\left\{c_{1}, c_{2}, \cdots, c_{n}\right\}$其中存在的单词记为$w_{i,j}=c_{i}, c_{i+1}, \cdots, c_{j}$

ExSoftword Feature:

ExSoftword是对Softword的拓展,与Softword不同,它不再只保留每个字符进行分词后的一个分词结果,而是使用词典获得所有可能的分词结果

$$ x_{j}^{c} \leftarrow\left[x_{j}^{c} ; e^{s e g}\left(\operatorname{segs}\left(c_{j}\right)\right],\right. $$
其中 $\operatorname{segs}\left(c_{j}\right)$ 表示字符$c_{j}$所有可能的分词结果,$e^{s e g}\left(\operatorname{seg}\left(c_{j}\right)\right)$是一个5维的multi-hot向量,各个维度分别对应: $\{\mathrm{B}, \mathrm{M}, \mathrm{E}, \mathrm{S}, \mathrm{O}\}$。

image.png

比如Figure 2中的“西”$c_7{(“西”)}$出现在两个词中:$w_{5,8}{("中山西路")}$和$w_{6,7} ("山西")$。因此,其对应的分割结果是${M,E}$,分别表示中间位置和结尾位置,可以看出第2和第3个维度对应的位置置为1,其他维度值为0。"西"这个字符的字符表示可以用以下方式进一步丰富:
$$ x_{7}^{c} \leftarrow[x_{7}^{c} ; e^{s e g}(\{M,E\})] $$

该方法有两个问题:

  • 相比于 Lattice LSTM,该方法没有引入预先训练好的词汇embedding
  • 仍然丢失匹配结果的信息。

Figure2中的示例$c_5,c_6,c_7,c_8$字符序列的的ExSoftword feature结果是
{ {B}, {B,M,E}, {M,E}, {E}}。但是对于这样一种给定的构建序列,存在多种可能的匹配结果。比如 $\left\{w_{5,6}\right.$ ("中山"), $w_{5,7}$ ("中山西”), $w_{6,8}$ ("山西路”) $\}$ 和 $\left\{w_{5,6}\right.$ (“中山"), $w_{6,7}\left(\right.$ “山西”), $w_{5,8}$ (“中山西 路")}。为此,无法知晓哪个才是正确的结果。

SoftLexicon:
作为对ExSoftword的改进,该方法由3个步骤组成:

(1) 对匹配到的单词进行分类:
为了保留分词信息,匹配到的词中的每个字符都被分类到 {B,M,E,S}中。对于每个字符$c_i$,这四个集合被认为为:

$$ \begin{aligned} &\mathrm{B}\left(\mathrm{c}_{\mathrm{i}}\right)=\left\{\mathrm{w}_{\mathrm{i}, \mathrm{k}}, \forall \mathrm{w}_{\mathrm{i}, \mathrm{k}} \in \mathrm{L}, \mathrm{i}<\mathrm{k} \leq \mathrm{n}\right\} \\ \\ &\mathrm{M}\left(\mathrm{c}_{\mathrm{i}}\right)=\left\{\mathrm{w}_{\mathrm{j}, \mathrm{k}}, \forall \mathrm{w}_{\mathrm{j}, \mathrm{k}} \in \mathrm{L}, 1 \leq \mathrm{j}<\mathrm{i}<\mathrm{k} \leq \mathrm{n}\right\} \\ \\ &\mathrm{E}\left(\mathrm{c}_{\mathrm{i}}\right)=\left\{\mathrm{w}_{\mathrm{j}, \mathrm{i}}, \forall \mathrm{w}_{\mathrm{j}, \mathrm{i}} \in \mathrm{L}, 1 \leq \mathrm{j}<\mathrm{i}\right\} \\ \\ &\mathrm{S}\left(\mathrm{c}_{\mathrm{i}}\right)=\left\{\mathrm{c}_{\mathrm{i}}, \exists \mathrm{c}_{\mathrm{i}} \in \mathrm{L}\right\} . \end{aligned} $$

具体示例如Figure3所示:

image.png

其中,$L$表示使用的词典,同时如果单词集合为空,将特殊字符None加入到对应集合中。好处是不仅使用了word embbeding,而且不存在信息丢失。

(2) 压缩word sets:
在获得每个字符的{B,M,E,S}词集之后,每个词集被压缩成一个固定维度的向量。文中探索了2种实现压缩的方法。
第一种是直接进行平均

image.png

其中$S$提供关于词汇的集合(即word sets), $e^{w}$对应贡献单词的embedding。然而这种方法表现并不佳,同时为了保持计算效率,本文没有选择像注意力这样的动态加权算法,而是使用每个单词的频率作为权重。由于一个单词的出现频率是一个可以离线获取的静态值,这样可以大大加快每个单词权重的计算。具体地,让$z(w)$表示词典中词$w$在统计数据中出现的频率,词集$S$的加权表示如下:

image.png

如果$w$被另一个与词典匹配的子序列覆盖,则$w$的频率不会增加。这防止了较短单词的频率总是小于覆盖它的较长单词的频率的问题。

(3) 字符的联合表示:
最后一步是将四个集合的embedding组合成一个固定维的特征,并将其添加到每个字符表示中。

$$ \begin{aligned} e^{s}(\mathrm{~B}, \mathrm{M}, \mathrm{E}, \mathrm{S}) &=\left[\boldsymbol{v}^{s}(\mathrm{~B}) ; \boldsymbol{v}^{s}(\mathrm{M}) ; \boldsymbol{v}^{\mathrm{s}}(\mathrm{E}) ; \boldsymbol{v}^{\mathrm{s}}(\mathrm{S})\right] \\ \boldsymbol{x}^{c} & \leftarrow\left[\boldsymbol{x}^{c} ; \boldsymbol{e}^{s}(\mathrm{~B}, \mathrm{M}, \mathrm{E}, \mathrm{S})\right] \end{aligned} $$

其中$v^s$为上述提供表示的加权函数。

序列建模层和标签预测层

引入词典信息后的字符表示随后输入序列建模层,该层对字符之间的依赖性进行建模。通用的序列建模架构有:BiLSTM,CNN,Transformer等。本文用单层BiLSTM实现序列建模层。至于标签预测层,文章采用CRF进行解码。

相关文章
|
2月前
|
自然语言处理 索引
使用BERT进行情感分析
【10月更文挑战第2天】
|
4月前
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
77 1
|
5月前
|
机器学习/深度学习 人工智能
ICML 2024:Transformer究竟如何推理?基于样例还是基于规则
【7月更文挑战第12天】ICML 2024研究表明Transformer模型在解决数学问题时倾向于基于样例而非规则的推理。通过规则遵循微调(RFFT),模型被教会遵循规则,实现从1-5位到12位加法的高精度泛化,提升40%以上。论文探讨了提升AI在数学推理上的潜力。[arxiv.org/abs/2402.17709](https://arxiv.org/abs/2402.17709)**
49 2
|
机器学习/深度学习 自然语言处理 安全
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型(1)
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型
155 0
|
机器学习/深度学习 数据采集 自然语言处理
【Deep Learning A情感文本分类实战】2023 Pytorch+Bert、Roberta+TextCNN、BiLstm、Lstm等实现IMDB情感文本分类完整项目(项目已开源)
亮点:代码开源+结构清晰+准确率高+保姆级解析 🍊本项目使用Pytorch框架,使用上游语言模型+下游网络模型的结构实现IMDB情感分析 🍊语言模型可选择Bert、Roberta 🍊神经网络模型可选择BiLstm、LSTM、TextCNN、Rnn、Gru、Fnn共6种 🍊语言模型和网络模型扩展性较好,方便读者自己对模型进行修改
630 0
|
机器学习/深度学习
【文本分类】基于预训练语言模型的BERT-CNN多层级专利分类研究
【文本分类】基于预训练语言模型的BERT-CNN多层级专利分类研究
492 0
【文本分类】基于预训练语言模型的BERT-CNN多层级专利分类研究
|
7月前
|
机器学习/深度学习 自然语言处理 数据挖掘
预训练语言模型中Transfomer模型、自监督学习、BERT模型概述(图文解释)
预训练语言模型中Transfomer模型、自监督学习、BERT模型概述(图文解释)
207 0
|
机器学习/深度学习 自然语言处理 数据挖掘
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型(2)
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型
257 1
|
机器学习/深度学习 移动开发 知识图谱
论文解读系列| 03:【NER】FGN模型详解
汉字作为象形文字有其潜在的特殊字形信息,而这一点经常被忽视。FGN是一种将字形信息融入网络结构的中文NER方法。除了用一个新型CNN对字形信息进行编码外,该方法可以通过融合机制提取字符分布式表示和字形表示之间的交互信息。
|
机器学习/深度学习 自然语言处理 资源调度
论文解读系列| 06:【NER】LatticeLSTM模型详解
Lattice LSTM模型是基于词汇增强方法的中文NER的开篇之作。在该模型中,使用了字符信息和所有词序列信息,具体地,当我们通过词汇信息(词典)匹配一个句子时,可以获得一个类似Lattice的结构。这种方式可以避免因分词错误导致实体识别错误,在中文NER任务上有显著效果。