📓
Study
  • README
  • Application
    • Contest
      • 竞赛trick
  • Basic Know
    • 半监督学习
    • 贝叶斯
      • 朴素贝叶斯分类器
    • 对抗训练
    • 概率图模型
      • CRF
      • HMM
      • 概率图模型
    • 关联分析
    • 归纳偏置
      • [什么是 Inductive bias(归纳偏置)?](BasicKnow/归纳偏置/什么是 Inductive bias(归纳偏置)?.md)
    • 聚类
    • 决策树
    • 绿色深度学习
    • 树模型&集成学习
      • 提升树
      • Ada Boost
      • [集成学习]
    • 特征工程
      • 数据分桶
      • 特征工程概述
      • 特征选择
      • LDA
      • PCA
    • 线性模型
      • 感知机
      • 最大熵模型
      • SVM
        • SVM支持向量机
      • 逻辑回归
      • 线性回归
    • 优化算法
      • 拉格朗日对偶性
      • 牛顿法
        • 牛顿法&拟牛顿法
      • 梯度下降法
        • 梯度下降算法
      • 优化算法
    • 预处理
      • [1-1]正则表达式
      • [1-2]文本预处理
      • [1-3]词性
      • [1-4]语法分析
      • [1-6]文本分类
      • [1-7]网络爬取
      • 【备用】正则表达式
      • 7.re模块
      • 词典匹配
      • 分词
      • 子表达式
      • Todo
    • 主题模型
      • LDA
    • Deep Learning
      • 反向传播
      • 梯度消失&梯度爆炸
      • Batch Size
      • 1.DLbasis
      • 小概念
      • MLstrategy
      • CNN
      • RNN及其应用
      • 关于深度学习实践
      • 神经网络概述
      • Batch Normalization
      • Program CNN
      • Program D Lbasis
      • Program DN Nimprove
      • Program Neural Style Transfer
      • Summer DL
    • EM算法
    • GAN
      • Gans In Action Master
    • GNN
      • 搜广推之GNN
      • Representation Learning
        • Anomalydetection
        • Conclusion
        • Others
        • Papernotes
        • Recommadation
    • k近邻法
      • K近邻
    • Language Model
      • 语言模型解码采样策略
      • [1-1][语言模型]从N-gram模型讲起
      • [1-2][语言模型]NNLM(神经网络语言模型)
      • [1-3][语言模型]基于RNN的语言模型
      • [1-4][语言模型]用N-gram来做完形填空
      • [1-5][语言模型]用KenLM来做完形填空
    • Loss Function
      • 常用损失函数
      • Focal Loss
      • softmax+交叉熵
    • Machine Learning
      • [基础]概念
      • 待整合
      • 交叉验证
      • 无监督学习
      • 优缺点
      • ML Yearning
      • SVD
    • Statistics Math
      • 程序员的数学基础课
      • 数学基础
      • 统计&高数
      • 统计题目
      • 线性代数
      • 组合数学
      • Discrete Choice Model
      • Nested Choice Model
  • Course Note
    • 基于TensorFlow的机器学习速成课程
      • [Key ML Terminology](CourseNote/基于TensorFlow的机器学习速成课程/Key ML Terminology.md)
    • 集训营
      • 任务说明
      • 算法实践1.1模型构建
      • 算法实践1.2模型构建之集成模型
      • 算法实践2.1数据预处理
    • 李宏毅机器学习
      • 10DNN训练Tips
        • Chapter 18
      • 16无监督学习
        • Chapter 25
    • 贪心NLP
      • 贪心NLP笔记
    • Cs 224 N 2019
      • [A Simple But Tough To Beat Baseline For Sentence Embeddings](CourseNote/cs224n2019/A Simple but Tough-to-beat Baseline for Sentence Embeddings.md)
      • [Lecture 01 Introduction And Word Vectors](CourseNote/cs224n2019/Lecture 01 Introduction and Word Vectors.md)
      • [Lecture 02 Word Vectors 2 And Word Senses](CourseNote/cs224n2019/Lecture 02 Word Vectors 2 and Word Senses.md)
      • [Lecture 03 Word Window Classification Neural Networks And Matrix Calculus](CourseNote/cs224n2019/Lecture 03 Word Window Classification, Neural Networks, and Matrix Calculus.md)
      • [Lecture 04 Backpropagation And Computation Graphs](CourseNote/cs224n2019/Lecture 04 Backpropagation and Computation Graphs.md)
      • [Lecture 05 Linguistic Structure Dependency Parsing](CourseNote/cs224n2019/Lecture 05 Linguistic Structure Dependency Parsing.md)
      • [Lecture 06 The Probability Of A Sentence Recurrent Neural Networks And Language Models](CourseNote/cs224n2019/Lecture 06 The probability of a sentence Recurrent Neural Networks and Language Models.md)
      • Stanford NLP
    • Deep Learning Book Goodfellow
      • Books
        • Deep Learning Book Chapter Summaries Master
      • 提纲
      • C 5
      • C 6
      • [Part I Applied Math And Machine Learning Basics](CourseNote/Deep-Learning-Book-Goodfellow/Part I - Applied Math and Machine Learning basics.md)
    • Lihang
    • NLP实战高手课
      • 极客时间_NLP实战高手课
    • 工具&资料
    • 机器学习、深度学习面试知识点汇总
    • 七月kaggle课程
    • 算法工程师
    • 贪心科技机器学习必修知识点特训营
    • 唐宇迪机器学习
    • 语言及工具
    • AI技术内参
    • Suggestions
  • Data Related
    • 数据质量
      • 置信学习
    • 自然语言处理中的数据增广_车万翔
      • 自然语言处理中的数据增广
    • Mixup
    • 数据不均衡问题
    • 数据增强的方法
  • Knowledge Graph
    • Information Extraction
      • 联合抽取
        • PRGC
      • Code
        • BERT微调
      • NER
        • 阅读理解做NER
          • MRC
        • FLAT
        • Global Pointer
        • 命名实体识别NER
    • Keyword Extraction
      • 关键词抽取
    • 小米在知识表示学习的探索与实践
    • KG
  • Multi Task
    • EXT 5
      • Ex T 5
  • NLG
    • Dailogue
      • 比赛
        • 对话评估比赛
          • [simpread-DSTC10 开放领域对话评估比赛冠军方法总结](NLG/Dailogue/比赛/对话评估比赛/simpread-DSTC10 开放领域对话评估比赛冠军方法总结.md)
      • 任务型对话
        • DST
          • DST概述
        • NLG
          • NLG概述
        • NLU
          • NLU概述
        • 任务型对话概述
        • simpread-任务型对话系统预训练最新研究进展
      • 问答型对话
        • 检索式问答
          • 基于预训练模型的检索式对话系统
          • 检索式文本问答
        • 业界分享
          • 低资源场景下的知识图谱表示学习和问答_阿里_李杨
          • QQ浏览器搜索智能问答
        • 问答型对话系统概述
      • 闲聊型对话
        • 闲聊型对话系统概述
      • 业界分享
        • 人工智能与心理咨询
        • 腾讯多轮对话机器人
        • 微软小冰
        • 小布助手闲聊生成式算法
        • 美团智能客服实践_江会星
        • 去哪儿智能客服探索和实践
        • 实时语音对话场景下的算法实践_阿里_陈克寒
        • 智能语音交互中的无效query识别_小米_崔世起
        • UNIT智能对话
      • 主动对话
      • EVA
        • EVA分享
        • EVA模型
      • PLATO
      • RASA
    • Machine Translation
      • 业界分享
        • 爱奇艺台词翻译分享
      • Paper
        • Deep Encoder Shallow Decoder
    • RAGRelated
    • Text 2 SQL
      • M SQL
        • [M SQL 2](NLG/Text2SQL/M-SQL/M-SQL (2).md)
      • [Text2SQL Baseline解析](NLG/Text2SQL/Text2SQL Baseline解析.md)
      • Text 2 SQL
    • Text Summarization
      • [文本摘要][paper]CTRLSUM
      • 文本摘要
  • Pre Training
    • 业界分享
      • 超大语言模型与语言理解_黄民烈
        • 超大语言模型与语言理解
      • 大模型的加速算法_腾讯微信
        • 大模型的加速算法
      • 孟子轻量化预训练模型
      • 悟道文汇文图生成模型
      • 悟道文澜图文多模态大模型
      • 语义驱动可视化内容创造_微软
        • 语义驱动可视化内容创造
    • Base
      • Attention
      • Mask
        • NLP中的Mask
      • Position Encoding
        • 位置编码
    • BERT
      • ALBERT
      • Bert
        • Venv
          • Lib
            • Site Packages
              • idna-3.2.dist-info
                • LICENSE
              • Markdown-3.3.4.dist-info
                • LICENSE
              • Tensorflow
                • Include
                  • External
                    • Libjpeg Turbo
                      • LICENSE
                  • Unsupported
                    • Eigen
                      • CXX 11
                        • Src
                          • Tensor
              • Werkzeug
                • Debug
                  • Shared
                    • ICON LICENSE
        • CONTRIBUTING
        • Multilingual
      • Ro BER Ta
      • BERT
      • BERT面试问答
      • BERT源码解析
      • NSP BERT
    • BERT Flow
    • BERT Zip
      • Distilling The Knowledge In A Neural Network
      • TINYBERT
      • 模型压缩
    • CPM
    • CPT
      • 兼顾理解和生成的中文预训练模型CPT
    • ELECTRA
    • EL Mo
    • ERNIE系列语言模型
    • GPT
    • MBART
    • NEZHA
    • NLG Sum
      • [simpread-预训练时代下的文本生成|模型 & 技巧](Pre-training/NLGSum/simpread-预训练时代下的文本生成|模型 & 技巧.md)
    • Prompt
      • 预训练模型的提示学习方法_刘知远
        • 预训练模型的提示学习方法
    • T 5
      • Unified SKG
      • T 5
    • Transformer
    • Uni LM
    • XL Net
    • 预训练语言模型
    • BERT变种
  • Recsys
    • 多任务Multi-task&推荐
    • 推荐介绍
    • 推荐系统之召回与精排
      • 代码
        • Python
          • Recall
            • Deep Match Master
              • Docs
                • Source
                  • Examples
                  • FAQ
                  • Features
                  • History
                  • Model Methods
                  • Quick Start
    • 业界分享
      • 腾讯基于知识图谱长视频推荐
    • 召回
    • Sparrow Rec Sys
    • 深度学习推荐系统实战
    • 推荐模型
    • Deep FM
  • Search
    • 搜索
    • 业界分享
      • 爱奇艺搜索排序算法实践
      • 语义搜索技术和应用
    • 查询关键字理解
    • 搜索排序
    • BM 25
    • KDD21-淘宝搜索中语义向量检索技术
    • query理解
    • TFIDF
  • Self Supervised Learning
    • Contrastive Learning
      • 业界分享
        • 对比学习在微博内容表示的应用_张俊林
      • Paper
      • R Drop
      • Sim CSE
    • 自监督学习
  • Text Classification
    • [多标签分类(Multi-label Classification)](TextClassification/多标签分类(Multi-label Classification)/多标签分类(Multi-label Classification).md)
    • Fast Text
    • Text CNN
    • 文本分类
  • Text Matching
    • 文本匹配和多轮检索
    • CNN SIM
    • Word Embedding
      • Skip Gram
      • Glove
      • Word 2 Vec
    • 文本匹配概述
  • Tool
    • 埋点
    • 向量检索(Faiss等)
    • Bigdata
      • 大数据基础task1_创建虚拟机+熟悉linux
      • 任务链接
      • Mr
      • Task1参考答案
      • Task2参考答案
      • Task3参考答案
      • Task4参考答案
      • Task5参考答案
    • Docker
    • Elasticsearch
    • Keras
    • Numpy
    • Python
      • 可视化
        • Interactivegraphics
        • Matplotlib
        • Tkinter
        • Turtle
      • 数据类型
        • Datatype
      • python爬虫
        • Python Scraping Master
          • phantomjs-2.1.1-windows
        • Regularexp
        • Scrapying
        • Selenium
      • 代码优化
      • 一行代码
      • 用python进行语言检测
      • Debug
      • Exception
      • [Features Tricks](Tool/python/Features & Tricks.md)
      • Fileprocess
      • Format
      • Functional Programming
      • I Python
      • Magic
      • Math
      • Os
      • Others
      • Pandas
      • Python Datastructure
      • Python操作数据库
      • Streamlit
      • Time
    • Pytorch
      • Dive Into DL Py Torch
        • 02 Softmax And Classification
        • 03 Mlp
        • 04 Underfit Overfit
        • 05 Gradient Vanishing Exploding
        • 06 Text Preprocess
        • 07 Language Model
        • 08 Rnn Basics
        • 09 Machine Translation
        • 10 Attention Seq 2 Seq
        • 11 Transformer
        • 12 Cnn
        • 14 Batchnorm Resnet
        • 15 Convexoptim
        • 16 Gradientdescent
        • 17 Optim Advance
    • Spark
      • Pyspark
        • pyspark之填充缺失的时间数据
      • Spark
    • SQL
      • 数据库
      • Hive Sql
      • MySQL实战45讲
    • Tensor Flow
      • TensorFlow入门
  • Common
  • NLP知识体系
Powered by GitBook
On this page
  • 简介
  • 基本套路
  • 新的探索
  • 1 标注数据不足
  • 2 命名实体嵌套
  • 参考文献
  • 中文 NER 技术的探索
  • 1、为什么对于中文NER任务,要进行「词汇增强」?
  • 2 「词汇增强」 的方法有哪些
  • 总结
  • 常用数据集
  • 字向量
  • 词向量
  • 语料库
  • 参考资料

Was this helpful?

  1. Knowledge Graph
  2. Information Extraction
  3. NER

命名实体识别NER

PreviousGlobal PointerNextKeyword Extraction

Last updated 3 years ago

Was this helpful?

简介

【目的】命名实体识别任务旨在从自然语言文本中识别具有特定意义的实体,如人名、地名、组织名等。

命名实体识别任务往往被看作语言序列标注(Linguistic sequence labeling)任务。传统的序列标注任务多使用线性模型,如隐马尔可夫模型(Hidden Markov Models, HMM)和条件随机场(Conditional Random Fields, CRF),并且依赖专家知识(Task-specific knowledge)和人工提取特征(Hand-crafted features)。近年来随着机器算力的增长和深度学习算法的发展,命名实体识别任务利用分布式表示学习方法和非线性的神经网络构建了端到端的模型,从而在无专家知识和人工提取特征的基础上实现了更好的效果。进一步的,针对命名实体识别现阶段面临的各类问题,近期的研究工作相应地对模型做了精细化的调整,也提出了一些新颖的想法。

基本套路

现阶段主流的命名实体识别的基本套路可以总结为“三板斧”:单词的字符级表示、(双向)LSTM编码和CRF解码。代表性工作是2016年发表在ACL的工作[1]。

首先,在对句子中的单词进行向量表示的时候,除了常用的词嵌入向量(word embedding),文章还利用CNN来学习每个单词字符级别的特征,如图1所示。

将单词“playing”的各字符嵌入向量作为CNN的输入,经过卷积和池化后,得到单词“playing”的字符级表示。通过这种方式,文章认为可以学习到单词的词法特征,如单词的前缀、后缀等特征。

接着,文章使用双向LSTM作为编码层,学习每个单词在句子中上下文的特征,如图2所示。

将每个单词的词嵌入向量和字符级表示向量拼接之后作为编码层的输入,通过双向LSTM为每个单词得到两个(前向和后向)隐藏层向量表示,将这两个隐藏层向量拼接后作为解码层——CRF的输入。

最后,文章选用CRF作为解码层的原因是,CRF会考虑相邻label间的关系,而不是独立地将每个单词解码成label,例如,在词性标注任务中,“形容词”后更可能跟一个“名词”而不是“动词”,或者是在利用BIOES(Begin, Inside, Other, End & Single)标注模式的实体识别任务中,“I-ORG”不可能紧跟在“I-PER”后。从而能够为一个给定的文本序列解码出一个最好的label链。

新的探索

随着深度学习的发展,命名实体识别任务也有了一些新的探索,包括解决标注数据规模和模型参数量不匹配的问题、文本中命名实体嵌套的问题、中文分词对实体识别的影响问题和模型的并行化问题等等,本章节主要就前两个问题及相关工作做进一步叙述。

1 标注数据不足

随着模型的愈发精细复杂,需要训练的参数日益庞大,但其训练所需的人工标注数据却因为标注成本的问题难以得到相应地增长。为解决这个问题,一个常用的方法是使用远程监督 的方法来得到大量的远程监督标注数据,但由于用于远程监督的知识库规模有限,大量的实体存在于文本中而未出现在知识库中,导致在远程监督时,将这些未出现在知识库中的实体标注为非实体,从而产生大量的假负例,这即是远程监督标注数据带来的有限覆盖问题(Limited Coverage)。除此之外,另外一种思路是通过优化模型 ,限制参数量,从而使得模型能够在较小的标注数据集上也能够完成训练。

1.1 有限覆盖问题

为了缓解有限覆盖问题对模型训练的影响,Shang J等人在2018年的工作中提出了两种方式。首先是利用最先进的短语挖掘方法在文本中挖掘出“高质量短语”,然后在利用知识库远程监督标注时,将文本中未出现在知识库中的“高质量短语”标注为“Unknown”。 这样标注数据除了实体类别和非实体以外,还多了“Unknown”类别。随着标签的扩展,上一章中提到的基本套路中的CRF解码层就需要做相应改变,如图3所示。

基于BIOES序列标注模式进行实体标注,句子中每个单词的标签是“位置-实体类别”的形式,于是,每个单词有5*实体类别数量个可能的标签(图3中的每一列)。在传统的数据标注上,CRF解码层是从图中所有的路径中找出最大可能性的“一条”路径进行解码标注,即每列找出一个最可能的标签。而增加了“Unknow”类别后,文章认为“Unknown”类别即意味着其单词可能是任意的标签(图3中“prostaglandin”和“synthesis”对应的两列),则CRF解码层需要从图中所有路径中找出最大可能性的“一簇”路径进行解码标注。

进一步的为了缓解有限覆盖问题带了的负面影响,文章提出了第二种方法——“Tie or Break”序列标注模式。 不同于传统的标准的BIO2标注模式,“Tie or Break”不再直接对文本中的单词进行标注,而是对文本中相邻单词的关系进行标注。其规则如下,

  1. 相邻的两个单词出现在同一个(知识库)实体中,这两个单词间的关系标注为“Tie”;

  2. 相邻的两个单词中但凡有一个出现在Unknown类型的“高质量短语”中,这两个单词间的关系标注为“Unknown”;

  3. 其它情况,标注为“Break”。

这种标注模式有两点好处,其一,当文本中的短语在远程监督时被知识库中的实体部分匹配或者错误匹配时,这些短语内单词间的Tie关系是正确的不受影响的;其二,在远程监督标注时,文本中的单词极容易被知识库中unigram entity即由单独单词组成的实体错误地标注成假正例。而使用“Tie or Break”序列标注模式,无论一个单词时真正的unigram entity或者是假正例,它与两边的单词间的关系都是“Break”,由此减少了假正例对模型的影响。为了匹配这种新的标注模式,文章提出了一种新的命名实体识别模型——AutoNER,如图4所示。

自下而上,我们依然能看到单词的字符级别表示和双向LSTM编码,虽然与上一章提到的具体方法有所差异,但其思想基本是一致的,我们重点关注在LSTM编码层之后的解码层。在这个模型中,文章没有继续使用CRF而是分为两步去做解码:第一步,使用双向LSTM表示出单词间关系的隐藏层向量表示后,然后使用一个二分类器区分“Break”和“Tie”,不对“Unknown”做判断;第二步,将第一步预测出的两个相邻“Break”之间的短语视为一个待预测的候选实体,用单词的隐藏层向量综合表示该短语,然后输入到一个多分类器中。

1.2 领域敏感特征

为了使得模型能在较小的标注数据集上完成训练,2018年Liu L等人发表在AAAI上的工作[3]提出了一种可行的思路。文章提出了一种LM-LSTM-CRF模型,通过模型的名称,我们就可以看出在该模型的编码层和解码层应当和第一章提到的主流方法相同,文章的主要贡献在单词的字符级表示,准确来讲,文章的主要贡献在对字符级别的特征的挑选。文章认为,单词字符级的特征虽然在已有的工作中被证明有效,但其是在大规模预料上经过预训练得到,包含了大量领域无关的特征,这些领域无关的特征需要更多的数据、更大的模型来训练更长的时间。而本文利用多任务学习提取共享特征的思路,以及语言模型(Neural Language Model)可以学习领域敏感特征的特性,使用语言模型从文本的大量特征中只提取领域相关的特征用于序列标注模型的训练,屏蔽掉了大量的任务无关特征,从而使得序列标注模型可以用少量的参数达到较好的效果,具体模型如图5所示。

图中使用了双向LSTM提取字符级别的特征,而隐藏层向量却是用于两个任务:序列标注(主要任务)和语言模型(辅助任务)。其中,序列标注任务不再赘述,语言模型就是利用已知序列预测下一个单词是什么,在该模型中,利用单词的前一个隐藏层输出来表示该单词,如前向LSTM中用“Pierre”前一个字符的隐藏层向量来表示“Pierre”,然后进行Softmax分类操作。并且由于这两个任务是不相关的(相关的任务如实体识别和关系抽取),所以文章中在字符级别的LSTM后特意使用了highway层,将隐层向量映射到两个不同的向量空间,各自完成不同的任务。

2 命名实体嵌套

实体嵌套是指在一句文本中出现的实体,存在某个较短实体完全包含在另外一个较长实体内部的情况,如“南京市长”中地名“南京”就嵌套在职务名“南京市长”中。而传统的命名实体识别任务关注的都是平坦实体(Flat entities),即文本中的实体之间不交叉、不嵌套。为了解决嵌套命名实体识别的问题,近年来的研究做了不同的尝试,本文就我了解的几篇工作作简要的介绍,希望能对大家有所启发。

首先,第一篇是Ju M等人于2018年发表在NAACL上的工作[4],该工作提出一种层模型,其思路其实非常简单,就是对文本一遍一遍的识别,直到识别不出实体为止。具体就是将前面提到的LSTM+CRF看作一个平坦命名实体识别层(flat NER layer),通过动态的堆叠flat NER layer,自内而外的一层一层的识别嵌套实体(先识别inner entities,再识别outer entities),直到flat NER layer识别不出实体,停止堆叠,模型如图6所示。

自下而上,在第一个flat NER layer内,文章把每个token经过双向LSTM后对应的隐藏层表示输入到CRF中,用于识别最内层实体(most inner entities),然后将构成每个最内层实体的单词的隐藏层向量相加并平均来表示最内层实体,然后将其看作一个新的“单词”,替换组成最内层实体的所有单词,然后和其他被识别为Other的单词组成新的序列输入到下一个flat NER layer中,重复以上内容,直到某个flat NER layer将其输入的token都标记为Other后结束堆叠。作者认为通过这样的方式不但可以将嵌套的实体识别出来,还能考虑到inner entities和其outer entities之间的关系。

接着,第二篇是Sohrab M G等人于2018年发表在EMNLP上的工作[5],该工作的主要内容集中在解码层,单词的字符级表示和双向LSTM编码层与前面的工作大同小异。如图7所示,在解码层,文章不再使用CRF,而是使用一个可变长的滑动窗口在编码层输出的隐藏层向量序列上滑动,枚举出所有可能的片段作为候选实体,然后利用隐藏层向量表示这些候选实体,最后分别通过Softmax进行分类。虽然试验结果不错,但我认为这种穷举的方法比较适合于序列长度较短的情况,因为一方面它忽略了标签间的相关性,另一方面当序列长度较长的情况下,穷举法会得到大量的负样本,使得正负样本不均衡,影响模型效果。

最后,同样是一篇来自2018年EMNLP的工作[6],不同于前面两篇工作对平坦命名实体识别主流方法的修修改改,本文的核心思想是将文本进行一定的转化之后,实现对嵌套实体的平坦访问(顺序访问)。

首先,如图8所示,作者将嵌套实体表示成一棵句法成分树,文本中的多个嵌套实体便被表示成一个森林。其中,树的叶子节点是文本中的token,而非叶子节点便是实体类别,这样实体的嵌套关系便被表示成了树中非叶子节点的父子关系。

同时自底向上构建句法成分树的过程中,便实现了嵌套实体平坦访问,即构建树的过程中,用非叶子节点的构建动作对应了相应的实体类别,而这些动作是顺序的,不存在嵌套关系。而森林的构建过程是由多个树的顺序构建过程组成,其被放入一个栈中。如图9所示,

构建动作的执行是由系统的当前状态决定的,系统的当前状态包含栈的状态,文本序列的剩余部分,构建动作的历史。这样,以系统状态作为输入,当前状态应执行的动作为输出,即可完成模型的训练。

具体而言,文章首先定义了三类动作:SHIFT,REDUCE-X和UNARY-X,其中X是指实体类别,属于一个预定义的类别集合。SHIFT操作是指将文本序列中的当前单词入栈;REDUCE-X是给栈顶的两个元素出栈,并给他们设置一个共同父节点X,然后将这个树元素入栈;UNARY-X则是将栈顶元素出栈,为其设置一个父节点X,然后将这个新的树元素入栈。定义好动作之后即得到了模型的输出(label),而其输入——系统的状态,则分三部分表示:

  1. 栈的向量化表示使用了stack LSTM模型,在传统的LSTM上加入了栈顶指针,用栈顶指针所指向的unit的隐藏层输出来表示栈的状态;

  2. 文本序列的剩余部分则通过一个后向的LSTM建模,使用顺序第一个单词的隐藏层输出表示文本序列的剩余部分的状态;

  3. 历史构建动作则通过一个前向的LSTM进行学习,最近一次动作的隐藏层输出表示历史动作的状态。

将这三种状态的向量表示拼接起来表示系统状态,作为Softmax的输入。

参考文献

[1] Ma X, Hovy E H. End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF[J]. meeting of the association for computational linguistics, 2016: 1064-1074.

[2] Shang J, Liu L, Ren X, et al. Learning Named Entity Tagger using Domain-Specific Dictionary[J]. arXiv preprint arXiv:1809.03599, 2018.

[3] Liu L, Shang J, Ren X, et al. Empower sequence labeling with task-aware neural language model[C]//Thirty-Second AAAI Conference on Artificial Intelligence. 2018.

[4] Ju M, Miwa M, Ananiadou S. A neural layered model for nested named entity recognition[C]//Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers). 2018, 1: 1446-1459.

[5] Sohrab M G, Miwa M. Deep Exhaustive Model for Nested Named Entity Recognition[C]//Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. 2018: 2843-2849.

[6] Wang B, Lu W, Wang Y, et al. A neural transition-based model for nested mention recognition[J]. arXiv preprint arXiv:1810.01808, 2018.

[7] Zhang Y, Yang J. Chinese NER Using Lattice LSTM[J]. meeting of the association for computational linguistics, 2018: 1554-1564.

[8] Strubell E, Verga P, Belanger D, et al. Fast and Accurate Entity Recognition with Iterated Dilated Convolutions[J]. empirical methods in natural language processing, 2017: 2670-2680.

中文 NER 技术的探索

与英文NER相比,中文NER通常采取基于字符的方式。究其缘由,由于中文分词存在误差,基于字符的NER系统通常好于基于词汇(经过分词)的方法。而引入词汇信息(词汇增强)的方法,通常能够有效提升中文NER性能。

本节对「词汇增强」的系列方法进行介绍,包括Lattice LSTM/LR-CNN/CGN/LGN/WC-LSTM/Multi-digraph/Simple-Lexicon/FLAT 等8个方法进行串讲,目录如下:

  • 1、为什么对于中文NER任务,要进行「词汇增强」?

  • 2、「词汇增强」的主要方法有哪些?

  • 2.1 Dynamic Architecture

  • 2.2 Adaptive Embedding

  • 3、总结与对比:关键结果分析

1、为什么对于中文NER任务,要进行「词汇增强」?

虽然基于字符的NER系统通常好于基于词汇(经过分词)的方法,但基于字符的NER没有利用词汇信息,而词汇边界对于实体边界通常起着至关重要的作用。

如何在基于字符的NER系统中引入词汇信息,是近年来NER的一个研究重点。本文将这种引入词汇的方法称之为「词汇增强」,以表达引入词汇信息可以增强NER性能。

从另一个角度看,由于NER标注数据资源的稀缺,BERT等预训练语言模型在一些NER任务上表现不佳。特别是在一些中文NER任务上,词汇增强的方法会好于或逼近BERT的性能 。因此,关注「词汇增强」方法在中文NER任务很有必要。

2 「词汇增强」 的方法有哪些

近年来,基于词汇增强的中文NER主要分为2条主线[9]:

  • Dynamic Architecture:设计一个动态框架,能够兼容词汇输入;

  • Adaptive Embedding :基于词汇信息,构建自适应Embedding;

本文按照上述2条主线,将近年来各大顶会的相关论文归纳如下:

Dynamic Architecture 范式

Dynamic Architecture范式通常需要设计相应结构以融入词汇信息。

本文是基于词汇增强方法的中文NER的开篇之作,提出了一种Lattice LSTM以融合词汇信息。

具体地,当我们通过词汇信息(词典)匹配一个句子时,可以获得一个类似Lattice的结构。

Lattice是一个有向无环图,词汇的开始和结束字符决定了其位置。Lattice LSTM结构则融合了词汇信息到原生的LSTM中:

如上图所示,Lattice LSTM引入了一个word cell结构,对于当前的字符,融合以该字符结束的所有word信息,如对于「桥」融合了「长江大桥」和「大桥」的信息。对于每一个字符,Lattice LSTM采取注意力机制去融合个数可变的word cell单元,其主要的数学形式化表达为:

本文不再堆砌繁杂的数学公式,具体看参考原论文。需要指出的是,当前字符有词汇融入时,则采取上述公式进行计算;如当前字符没有词汇时,则采取原生的LSTM进行计算。当有词汇信息时,Lattice LSTM并没有利用前一时刻的记忆向量 $c^c_{j-1}$,即不保留对词汇信息的持续记忆。

存在问题

Lattice LSTM 的提出,将词汇信息引入,有效提升了NER性能;但其也存在一些缺点:

  • 计算性能低下,不能batch并行化。究其原因主要是每个字符之间的增加word cell(看作节点)数目不一致;

  • 信息损失:

  • 1)每个字符只能获取以它为结尾的词汇信息,对于其之前的词汇信息也没有持续记忆。如对于「大」,并无法获得‘inside’的「长江大桥」信息。

  • 2)由于RNN特性,采取BiLSTM时其前向和后向的词汇信息不能共享。

  • 可迁移性差:只适配于LSTM,不具备向其他网络迁移的特性。

Lattice LSTM 存在问题:

  • 采取RNN结构,导致其不能充分利用GPU进行并行化 ;

  • Lattice LSTM 无法有效处理词汇信息冲突问题

如上图所示:字符 [长] 可以匹配到词汇 [市长] 和 [长隆],不同的匹配会导致 [长] 得到不同的标签,而对于 RNN 结构:仅仅依靠前一步的信息输入、而不是利用全局信息,无法有效处理这一冲突问题。显而易见,对于中文NER,这种冲突问题很常见,在不参考整个句子上下文和高层信息的前提下很难有效解决。

思路

本篇论文LR-CNN为解决这一问题,提出了Lexicon-Based CNNs和Refining Networks with Lexicon Rethinking。

  • Lexicon-Based CNNs:采取CNN对字符特征进行编码,感受野大小为2提取bi-gram特征,堆叠多层获得multi-gram信息;同时采取注意力机制融入词汇信息(word embed);

  • Refining Networks with Lexicon Rethinking:由于上述提到的词汇信息冲突问题,LR-CNN采取rethinking机制增加feedback layer来调整词汇信息的权值 :具体地,将高层特征作为输入通过注意力模块调节每一层词汇特征分布。如上图,高层特征得到的 [广州市] 和 [长隆]会降低 [市长] 在输出特征中的权重分布。最终对每一个字符位置提取对应的调整词汇信息分布后的multi-gram特征,喂入CRF中解码。

优缺点

  • 优点

  • LR-CNN最终相比于Lattice LSTM加速3.21倍

  • 缺点

  • LR-CNN仍然计算复杂;

  • 不具备可迁移性

由于Lattice LSTM存在信息损失,特别是无法获得‘inside’的词汇信息。

针对这一问题,本篇论文构建了基于协作的图网络,由编码层、图网络层、融合层、解码层组成。在图网络层,构建了三种不同的建图方式:

  • Word-Character Containing graph (C-graph):字与字之间无连接,词与其inside的字之间有连接。

  • Word-Character Transition graph(T-graph):相邻字符相连接,词与其前后字符连接。

  • Word-Character Lattice graph(L-graph):相邻字符相连接,词与其开始结束字符相连。

图网络层通过Graph Attention Network(GAN)进行特征提取,提取3种图网络中的前n个字符节点的特征:

特征融合则将基于字符的上下文表征H与图网络表征加权融合:

涉及GAN的相关计算公式可参考原论文。

本篇论文与LR-CNN出发点类似,Lattice LSTM这种RNN结构仅仅依靠前一步的信息输入,而不是利用全局信息 ,如上图所示:字符 [流]可以匹配到词汇 [河流] 和 [流经]两个词汇信息,但Lattice LSTM却只能利用 [河流] ;字符 [度]只能看到前序信息,不能充分利用 [印度河] 信息,从而造成标注冲突问题。

本篇论文通过采取 lexicon-based graph neural network (LGN)来解决上述问题。如上图所示,将每一个字符作为节点,匹配到的词汇信息构成边。通过图结构实现局部信息的聚合,并增加全局节点进行全局信息融入。聚合方式采取Multi-Head Attention,具体计算公式可参考原论文。

  1. 动机一:Lattice-LSTM 和 LR-CNN 问题

    1. 这些模型采取的RNN和CNN结构无法捕捉长距离依赖;

    2. 动态的Lattice结构也不能充分进行GPU并行;

  2. 动机二:CGN 和 LGN 问题

    1. 采取的图网络虽然可以捕捉对于NER任务至关重要的顺序结构,但这两者之间的gap是不可忽略的;

    2. 这类图网络通常需要RNN作为底层编码器来捕捉顺序性,通常需要复杂的模型结构

众所周知,Transformer采取全连接的自注意力机制可以很好捕捉长距离依赖,由于自注意力机制对位置是无偏的,因此Transformer引入位置向量来保持位置信息。受到位置向量表征的启发,这篇论文提出的FLAT设计了一种巧妙position encoding来融合Lattice 结构,具体地,如上图所示,对于每一个字符和词汇都构建两个head position encoding 和 tail position encoding,可以证明,这种方式可以重构原有的Lattice结构。也正是由于此,FLAT可以直接建模字符与所有匹配的词汇信息间的交互,例如,字符[药]可以匹配词汇[人和药店]和[药店]。

因此,我们可以将Lattice结构展平,将其从一个有向无环图展平为一个平面的Flat-Lattice Transformer结构,由多个span构成:每个字符的head和tail是相同的,每个词汇的head和tail是skipped的。

论文提出四种相对距离表示 $x_i$ 和 $x_j$ 之间的关系,同时也考虑字符和词汇之间的关系:

$d^{(hh)}_{ij}$ 表示 $x_i$ 的head到 $x_j$ 的head距离,其余类似。相对位置encoding为:

$p_d$的计算方式与vanilla Transformer相同。

综上,FLAT采取这种全连接自注意力结构,可以直接字符与其所匹配词汇间的交互,同时捕捉长距离依赖。如果将字符与词汇间的attention进行masked,性能下降明显,可见引入词汇信息对于中文NER 的重要性。此外,相关实验表明,FLAT有效的原因是:新的相对位置encoding有利于定位实体span,而引入词汇的word embedding有利于实体type的分类。

Adaptive Embedding 范式

Adaptive Embedding范式仅在embedding层对于词汇信息进行自适应,后面通常接入LSTM+CRF和其他通用网络,这种范式与模型无关,具备可迁移性。

[6] WC-LSTM: An Encoding Strategy Based Word-Character LSTM for Chinese NER Lattice LSTM(NAACL2019)

Lattice LSTM中每个字符只能获取以它为结尾的词汇数量是动态的、不固定 的,这也是导致Lattice LSTM不能batch并行化 的原因。

WC-LSTM为改进这一问题,采取Words Encoding Strategy,将每个字符为结尾的词汇信息进行固定编码表示 ,即每一个字符引入的词汇表征是静态的、固定的,如果没有对应的词汇则用代替,从而可以进行batch并行化。

这四种 encoding 策略分别为:最短词汇信息、最长词汇信息、average、self-attenion。以「average」为例:即将当前字符引入所有相关的词汇信息对应的词向量进行平均。

WC-LSTM仍然存在信息损失问题 ,无法获得‘inside’的词汇信息,不能充分利用词汇信息。虽然是Adaptive Embedding范式,但WC-LSTM仍然采取LSTM进行编码,建模能力有限、存在效率问题。

[7] Multi-digraph: A Neural Multi-digraph Model for Chinese NER with Gazetteers(ACL2019)

之前介绍的论文通过利用一个词表来引入词汇信息(由论文Lattice LSTM 提供,没有实体标签,通常需要提取对应的word embedding)。

本篇论文引入词汇信息的方式是利用实体词典(Gazetteers,含实体类型标签)。

虽然引入实体词典等有关知识信息对NER性能可能会有所帮助,但实体词典可能会包含不相关甚至错误的信息,这会损害系统的性能。如上图所示,利用4个实体词典:「PER1」、「PER2」、「LOC1」、「LOC2」进行匹配,错误实体就有2个。

为了更好的利用词典信息,本文提出了一种多图结构更好地显示建模字符和词典的交互。如上图所示,结合自适应的Gated Graph Sequence Neural Networks (GGNN)和LSTM+CRF,基于上下文信息对来自不同词典的信息进行加权融合,解决词典匹配冲突的问题。

具体地,本文通过图结构建模Gazetteers信息,关键在于怎么融入不同词典的信息。上述图结构中「边」的label信息即包含字符间的连接信息,也包含来自不同m个Gazetteers的实体匹配信息,共有L个label:

而传统的GGNN不能处理带有不同label信息的「边」,为了能够处理上述的多图结构,本文将邻接矩阵A扩展为包括不同标签的边,对边的每一个label分配相应的可训练参数:

上述图结构的隐状态采用GRU更新,具体更新方式可参考原论文。最后,将基于GGNN提取字符所对应的特征表示喂入LSTM+CRF中。

[8] Simple-Lexicon:Simplify the Usage of Lexicon in Chinese NER(ACL2020)

由上述分析可以发现Lattice LSTM只适配于LSTM,不具备向其他网络迁移的特性,同样Lattice LSTM存在的信息损失也不容小觑。

本篇论文为避免设计复杂的模型结构、同时为便于迁移到其他序列标注框架,提出了一种在embedding层简单利用词汇的方法。本文先后对比了三种不同的融合词汇的方式:

第一种:Softword

如上图所示,Softword通过中文分词模型后,对每一个字符进行BMESO的embedding嵌入。显而易见,这种Softword方式存在由分词造成的误差传播问题,同时也无法引入词汇对应word embedding。

第二种:ExtendSoftword

ExtendSoftword则将所有可能匹配到的词汇结果对字符进行编码表示。如上图中,对于字符「山」来说,其可匹配到的词汇有中山、中山西、山西路,「山」隶属 {B,M,E}。论文对于字符对应的词汇信息按照BMESO编码构建5维二元向量,如「山」表示为[1,1,1,0,0].

ExtendSoftword也会存在一些问题:1)仍然无法引入词汇对应的word embedding;2)也会造成信息损失,无法恢复词汇匹配结果,例如,假设有两个词汇列表[中山,山西,中山西路]和[中山,中山西,山西路],按照ExtendSoftword方式,两个词汇列表对应字符匹配结果是一致的;换句话说,当前ExtendSoftword匹配结果无法复原原始的词汇信息是怎样的,从而导致信息损失。

第三种:Soft-lexicon

为了解决Softword和ExtendSoftword存在的问题,Soft-lexicon对当前字符,依次获取BMES对应所有词汇集合,然后再进行编码表示。

为了解决Softword和ExtendSoftword存在的问题,Soft-lexicon对当前字符,依次获取BMES对应所有词汇集合,然后再进行编码表示。

由上图可以看出,对于字符[语],其标签B对应的词汇集合涵盖[语言,语言学];标签M对应[中国语言];标签E对应[国语、中国语];标签S对应[语]。当前字符引入词汇信息后的特征表示为:

很容易理解,上述公式则将BMES对应的词汇编码 $v^s$ 与字符编码 $x^c$ 进行拼接。$v^s$表示当前标签(BMES)下对应的词汇集合编码,其计算方式为:

$S$ 为词汇集合, $z(w)$ 代表词频。考虑计算复杂度,本文没有采取动态加权方法,而采取如同上式的静态加权方法,即:对词汇集合中的词汇对应的word embedding通过其词频大小进行加权。词频根据训练集和测试集可离线统计。

综上可见,Soft-lexicon这种方法没有造成信息损失,同时又可以引入word embedding,此外,本方法的一个特点就是模型无关,可以适配于其他序列标注框架。

总结

通过第二部分对于「词汇增强」方法主要论文的介绍,我们可以发现无论是Dynamic Architecture还是Adaptive Embedding,都是想如何更好的融入词汇信息 。这些方法的出发点无外于两点:

  • 1)如何更充分的利用词汇信息、最大程度避免词汇信息损失;

  • 2)如何设计更为兼容词汇的Architecture,加快推断速度。

下面对于上述「词汇增强」方法进行汇总:

ACL2020中的两篇论文FLAT和Simple-Lexicon分别对应于Dynamic Architecture和Adaptive Embedding,这两种方法相比于其他方法:

  • 1)能够充分利用词汇信息,避免信息损失;

  • 2)FLAT不去设计或改变原生编码结构,设计巧妙的位置向量就融合了词汇信息;Simple-Lexicon对于词汇信息的引入更加简单有效,采取静态加权的方法可以提前离线计算。

最后,我们来看一下,上述各种「词汇增强」方法在中文NER任务上的性能:

上图可以发现:总的来看,ACL2020中的FLAT和Simple-Lexicon效果最佳。具体地说:

  1. 引入词汇信息的方法,都相较于baseline模型biLSTM+CRF有较大提升,可见引入词汇信息可以有效提升中文NER性能。

  2. 采用相同词表对比时,FLAT和Simple-Lexicon好于其他方法。

  3. 结合BERT效果会更佳。

除了上述中文NER任务,笔者还在医疗NER任务(CCKS2019)上进行了简单实验:

同样也可以发现,词汇增强可有效提升中文NER性能。

而在推断速度方面,FLAT论文也与其他方法进行了对比,在指标领先的同时推断速度明显优于其他方法。

常用数据集

字向量

词向量

语料库

参考资料

本篇论文通过采取 lexicon-based graph neural network (LGN)来解决上述问题。如上图所示,将每一个字符作为节点,匹配到的词汇信息构成边。通过图结构实现局部信息的聚合,并增加全局节点进行全局信息融入。聚合方式采取Multi-Head Attention,具体计算公式可参考原论文。

[1]

[2]

[3]

[4]

[5]

在知乎专栏文章《》,我们介绍了对于Tranformer结构,绝对位置编码并不适用于NER任务。因此,FLAT这篇论文采取XLNet论文中提出相对位置编码计算attention score:

Character embeddings (gigaword_chn.all.a2b.uni.ite50.vec): or

Word(Lattice) embeddings (ctb.50d.vec): or

Lattice LSTM:Chinese NER Using Lattice LSTM(ACL2018)
LR-CNN:CNN-Based Chinese NER with Lexicon Rethinking(IJCAI2019)
CGN: Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network( EMNLP2019)
LGN: A Lexicon-Based Graph Neural Network for Chinese NER(EMNLP2019)
FLAT: Chinese NER Using Flat-Lattice Transformer(ACL2020)
如何解决Transformer在NER任务中效果不佳的问题?
Google Drive
Baidu Pan
Google Drive
Baidu Pan
OntoNotes
MSRA
Weibo
Resume
美团搜索中NER技术的探索与实践
https://github.com/km1994/nlp_paper_study/tree/master/information_extraction/NER_study/
https://github.com/km1994/nlp_paper_study#关于-信息抽取-那些的你不知道的事
https://github.com/loujie0822/DeepIE