一般NLP任务中,都需要将词汇向量化,以往一般采用的是1-of-N encoding,但是这种方式,对于机器学习来说,词汇之间没有相互关联性,相同的词在不同的语境也会含有不同的含义,词汇没有分类(比如动词、名词没有分开)等等。
后面延伸了一种方式叫word class,即把词汇进行分类,但是分类也有弊端,例如代表动物的一类中还有细化的分类,运动物体的类别可以和运动相关的动词相联系,但是静止的类别就不能,同样通词不同义的词也不好分类等。
因此诞生了一种新的技术,word embedding,在word embedding中,每一个词都会用一个向量来标书,向量中的某一个维度可能代表了某一种含义,同一类的词汇,他们的向量会比较接近。word embedding的训练,主要依据文中的上下文来训练,例如双向RNN或者双向LSTM或者self-attention等。word embedding训练出来的向量,同一个词,根据上下文也会具有不同的token。
ELMO(embedding from language model)
这是一个基于RNN的语义模型,由很多句子训练而成,是一个结合上下文的语义模型
论文:https://arxiv.org/abs/1802.05365
BERT(Bidirectional Encoder Representations Transformer)
BERT = encoder of transformer,BERT其实就是transformer的encoder部分,主要由self-attension层和Add&Norm层构成。
在处理中文时,可以用ENNIE代替(enhanced representation through knowledge integration)
论文:https://arxiv.org//abs/1905.05950
https://openreview.net/pdf?id=SJzSgnRcKX
GPT(Generative Pre-Training)
参数非常大的language model,GPT=Transformer Decoder
GPT-2应用比较广,可以用来做语义辨识、文章摘要和翻译等工作,而且不需要太大的样本就能训练。比较有名的openAI的自动写文章的机器人,机器人对话等
论文:https://arxiv.org/abs/1904.02679