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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 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进行解码。

相关文章
|
机器学习/深度学习 数据采集 人工智能
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
电商技术进入认知智能时代,将给亿万用户带来更加智能的购物体验。经过两年的探索与实践,阿里巴巴的电商认知图谱 AliCoCo 已成体系规模,并在搜索推荐等电商核心业务场景上取得佳绩,关于 AliCoCo 的文章《AliCoCo: Alibaba E-commerce Cognitive Concept Net》也已被国际顶会 SIGMOD 接收,这是阿里巴巴首次正式揭秘领域知识图谱。 本文将通过介绍 AliCoCo 的背景、定义、底层设计、构建过程中的一些算法问题,以及在电商搜索和推荐上的广泛应用,分享 AliCoCo 从诞生到成为阿里巴巴核心电商引擎的基石这一路走来的思考。
20622 2
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
|
7月前
|
人工智能 运维 负载均衡
AgentRun上线!5分钟完成企业级Agent构建
阿里云发布函数计算AgentRun,基于Serverless架构打造一站式Agentic AI基础设施,深度融合AI场景,实现毫秒级弹性、按需付费、安全沙箱与全链路可观测,助力企业降本60%,加速AI Agent高效落地生产环境。
1001 0
AgentRun上线!5分钟完成企业级Agent构建
|
9月前
|
机器学习/深度学习 自然语言处理 搜索推荐
# GloVe词嵌入:全局词频矩阵的高效表示
在自然语言处理(NLP)领域,词嵌入技术作为连接离散文本与连续向量空间的桥梁,已经成为各种文本处理任务的基础。继Word2Vec之后,斯坦福大学在2014年提出的GloVe(Global Vectors for Word Representation)模型为词嵌入技术开辟了新的思路。与Word2Vec专注于局部上下文信息不同,GloVe通过分析词的全局共现统计信息来学习词向量表示,这种方法在捕捉词语间全局语义关系方面具有独特优势。
613 1
|
存储 安全 区块链
去中心化存储:数据存储的新范式
去中心化存储:数据存储的新范式
895 91
|
机器学习/深度学习 自然语言处理 PyTorch
深入剖析Transformer架构中的多头注意力机制
多头注意力机制(Multi-Head Attention)是Transformer模型中的核心组件,通过并行运行多个独立的注意力机制,捕捉输入序列中不同子空间的语义关联。每个“头”独立处理Query、Key和Value矩阵,经过缩放点积注意力运算后,所有头的输出被拼接并通过线性层融合,最终生成更全面的表示。多头注意力不仅增强了模型对复杂依赖关系的理解,还在自然语言处理任务如机器翻译和阅读理解中表现出色。通过多头自注意力机制,模型在同一序列内部进行多角度的注意力计算,进一步提升了表达能力和泛化性能。
11154 48
|
11月前
|
Web App开发 并行计算 Ubuntu
如何在Ubuntu系统上快速入门并解决常见问题
解决方法:进入Ubuntu的高级选项,选择恢复模式,然后选择initramfs。在终端中,您会看到提示“The root filesystem on /dev/sda4 requires a manual fsck。”此时,输入命令“fsck -y /dev/sda4”进行文件系统检查,并按照提示进行修复。完成后,输入“exit”退出恢复模式,并重启系统即可解决紫屏问题。
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
567 4
|
存储 人工智能 自然语言处理
机器学习系列 | 04: 知识图谱发展历程及其分类
本文简要梳理知识图谱的前世今生及其分类
|
JSON 自然语言处理 数据处理
数据标注工具 Label-Studio
数据标注工具 Label-Studio
7774 0