NER-浅层理解

NER-浅层理解
M-YoungBWeNNER-浅层理解
简介
命名实体识别 (Named Entity Recognition,NER)是自然语言处理 (Natural Language Processing, NLP)领域中一项基础的信息抽取任务,NER往往是关系抽取、知识图谱、问答系统等其他诸多NLP任务的基础。命名实体识别任务是指从给定的一个非结构化的文本中识别出其中的命名实体 ,并对实体进行分类。命名实体例如时间、人名、地名、机构名等。
命名实体识别任务常常转化为序列标注问题 ,利用BIO、BIOES和BMES等常用的标注规则对经过分词的文本进行token标注。通过构建模型对文本的每个token标签进行预测,进而进行实体识别。
序列标注的命名实体识别众多方法中将CNN、RNN和BERT等深度模型与条件随机场CRF结合已经成为最主流和普遍的方法。
基于序列标注的命名实体识别的发展历程
- [机器学习]:早期传统机器学习时代,除了利用人工规则的方法外,往往利用隐马尔科夫链HMM和条件随机场CRF进行实体标注;
- [深度学习]:随着深度学习的发展,将CNN和RNN做为基本的文本特征编码器,更好的学习token或word的隐层表示,再利用CRF进行实体标签分类,Bi-LSTM-CRF是最常用和普遍的实体识别模型;
- [预训练模型]:以BERT为代表的预训练模型表现出了强大的文本表示和理解能力,目前流行的方法是将BERT或BERT-Bi-LSTM作为底层的文本特征编码器,再利用CRF进行实体标签预测。现在,对于许多命名实体识别任务可以将BERT-Softmax、BERT-CRF、BERT-Bi-LSTM-CRF这几个模型作为baseline,而且能达到很好的效果,这几乎得益于BERT模型的强大文本表征建模能力。
主要流程
接下来通过介绍预训练模型的方法来熟悉NER的基本流程。
flowchart LR data["文章 text"]--切分-->A["`词语 _token(s)_`"]--去重-->B["`词表 _vocab_`"] C[BERT/CNN/RNN]--词向量-->D["全连接层 Bi-LSTM"]-->E["Softmax/CRF"]
假设给定一篇文本text,text中包含k类命名实体,NER的目标就是要从text中将这k类命名实体筛选出来。
- 将text切分为字符串序列,即token序列。token是text的元素。
切分有多种方法,最常见的是分词,此外还有随机切分、ngram等方法
- 将token序列去重得到词表,即vocab。type是vocab的元素,type即token序列去重后的元素。
tokenization用于token序列生产,主要用于将“I’m Yang“替换为”I am Yang”,一般用在英文中
- vocab经过嵌入层和文本编码层得到词向量。
CNN、RNN、BERT等模型均可用于对文本token序列(或者说vocab)进行编码表征
-
词向量经过一个全连接的分类层得到分类结果Logits以及各个实体标签的分数logits_i。
-
Logits经过标签判断得到最终模型。
名词介绍
token、type、vocab
把文本切分成一个字符串序列,其元素一般称为token,或者叫词语。
[‘我’, ‘是’, ‘中国人’]
这句话中的“中国人”这个字符串是一个token。我所知道的所有叫token的东西,都是字符串类型。而这个token的词向量,是一个数值向量,编程里叫一维数组,向量就不是token了,也不能叫token。
如果我们把字符串序列(语料)中所有的token做一个去重,就得到了一个词汇表,其中的每一个词语被称为type。
vocab =(type1,type2,…,typeN),即vocab是type的集合。
语言学中的解释
token(标记/词符): “文本内出现的单词总数叫做文本标记数。”(Richards and Schmidt.)
type(类型/词形):“不同单词的总数则称为文内标记类型数。”(Richards and Schmidt.)
family/ group(词族):主词(headword)及其派生和屈折形式。
tokenization
tokenization也叫word segmentation,是一种操作。
它按照特定需求,把文本切分成一个字符串序列。一般来说,我们要求序列的元素有一定的意义,比如“text mining is time-consuming”需要处理成"text mining/ is/ time-consuming",其中"text mining"表示"文本挖掘"。
英文信息处理中,tokenization需要把"I’m Yang"这样的句子转换为"I am Yang",即将一些词语、短语的写法规范化。中文由于文字本身没有形态变化,不需要太多的规范化操作,大家关注的主要的是切分操作。
词向量
词向量是将单词表示为数值向量的技术。
每个单词被赋予一个多维空间中的向量,通常通过词嵌入(Word Embedding)技术(如Word2Vec或GloVe)获得。词向量捕捉了单词的语义信息,使得相似意义的单词在向量空间中位置接近。
tokenization和切分是将文本转换为tokens的过程,而词向量是将这些tokens转换为数值向量的过程。通常,一旦文本被分解为tokens,每个token都会被映射到一个预先训练好的词向量。
info 预先训练好的词向量,也叫预训练模型。
通过将tokens转换为词向量,可以在数学上处理和分析文本数据。词向量捕捉了tokens的语义信息,使得可以计算单词之间的相似性、执行类比推理等。
在训练神经网络模型时,tokens通常首先被转换为词向量,然后作为模型的输入。词向量为模型提供了一种结构化、数值化的方式来理解文本数据。
one-hot编码、Embedding
经过one-hot编码可以将密集的矩阵转换为稀疏矩阵方便计算,但会占用大量资源。
Embedding也叫嵌入层、嵌入式,可以将过于稀疏的矩阵进行适度的密集(矩阵乘法),即对矩阵进行降维。此外,当矩阵维度低,难以区分特征时,可以使用Embedding对低维数据升维。Embedding是token向词向量映射过程中重要的步骤。
隐藏层
大部分来讲,隐藏层的意义,是把前一层的向量变成新的向量。就是坐标变换,也就是把空间扭曲一下变下维度,让齐更加线性可分。
未完待续
参考
M-YoungBWeN/BERT_NER_Chinese_TF2.X
stanleylsx/entity_extractor_by_ner
浅析命名实体识别(NER)的三种序列标注方法_基于序列标注的命名实体识别-CSDN博客
NLP领域中的token和tokenization到底指的是什么? - 知乎
请解释一下这些语料库语言学概念:type,token, lemma,word family? - 知乎
一文读懂Embedding的概念,以及它和深度学习的关系 - 知乎