CS224N第三、四讲主要在讲深度神经网路的基础知识并以命名实体识别Named Entity Recognition(以下简称NER)来讲DNN在NLP领域内的应用。

关于DNN方面的基础知识由于之前在总结花书的时候已经总结过,这里不再重复,可以参考

川陀学者:深度学习花书读书笔记目录?

zhuanlan.zhihu.com
图标

中的六、七、八章。

这里著重总结DNN在NER问题上的应用。

NER问题定义

NER主要是要找到文本中的名字并对其进行分类,如下例中

找到地点类的名词France, Britain以及人名Fischler。

NER的应用场景较多,比如可以追踪文本中特定的entity,问答系统中很多回答是named entity,通过named entity之间的关联构建知识图谱等等。

NER的难点是有的时候很难区分Named Entity的边界,有的时候很难判断一个词是不是Named Entity,而且Named Entity依赖于上下文,同一个名词可能在某些语境中是机构名,在其他语境中又是人名。

Window Classification

鉴于同一个词在不同上下文可能是不同的Named Entity,一个思路是通过对该词在某一窗口内附近的词来对其进行分类(这里的类别是人名,地点,机构名等等)。

例如对于museums in Paris are amazing, 我们希望探测到地点名Paris。假设窗口大小为2,并且通过词向量方法如word2vec得到窗口内5个单词的词向量,则我们可以将这5个向量连在一起得到更大的向量,再对该向量进行classification。

对于具有多个class的分类问题,我们通常用softmax classifier来解决,假设用x来表示输入的词向量,y表示对应的class,总共有k个class,则x对应类别为y的概率为:

p(y|x) = frac{exp(W_ycdot x)}{sum_{c=1}^k exp(W_ccdot x)}

损失函数为交叉熵:

J(	heta) = frac{1}{N}sum_{i=1}^N -logleft(frac{exp(W_ycdot x)}{sum_{c=1}^k exp(W_ccdot x)} 
ight)

为了处理输入的元素间的非线性关系,我们可以利用Neural Network,并且输出层是计算每一个class的概率的softmax layer。

之后我们就可以利用随机梯度下降演算法SGD来更新网路并利用反向传播演算法来有效的计算梯度。

当然,这里仅仅是用前馈神经网路来处理NER问题以此来介绍神经网路的基本概念,之后还会讲到循环神经网路等更复杂的结构,也可应用在NER问题上。

参考资料

CS224N第三讲讲义web.stanford.edu/class/ 第四讲讲义web.stanford.edu/class/及补充材料web.stanford.edu/class/

CS224N Winter 2019第三讲视频youtu.be/8CWyBNX6eDo, 第四讲视频youtu.be/yLYHDSv-288.


推荐阅读:
相关文章