一、词袋模型(Bag-Of-Words)
1、One-Hot
2、tf-idf
二、主题模型
1、LSA(SVD)
2、pLSA
3、LDA
三、基于词向量的固定表征
1、word2vec
2、fastText
3、glove
官方glove: https://github.com/stanfordnlp/GloVe,C实现
Python 实现: https://github.com/maciejkula/glove-python
安装 pip install glove_python
四、基于词向量的动态表征
特征提取器:
- elmo采用LSTM进行提取;
- GPT和bert则采用Transformer进行提取;
- 很多任务表明Transformer特征提取能力强于LSTM,elmo采用1层静态向量+2层LSTM,多层提取能力有限,而GPT和bert中的Transformer可采用多层,并行计算能力强
单/双向语言模型:
- GPT采用单向语言模型,ELMo和BERT采用双向语言模型
- GPT和BERT都采用Transformer,Transformer是Encoder-Decoder结构,GPT的单向语言模型采用Decoder结构,Decoder的部分见到的都是不完整的句子;BERT的双向语言模型则采用Encoder部分,能够看到完整句子
1、elmo
2、GPT
3、Bert
五、各种词向量的特点
- One-hot
- 矩阵分解 (LSA)
- 分布式表示 (distributed representation)
- 基于分布式假设 – 相同上下文语境的词有似含义
- 基于NNLM/RNNLM的词向量:词向量为副产物,存在效率不高等问题;
- word2vec、fastText:优化效率高,但是基于局部语料;
- glove:基于全局预料,结合了LSA和word2vec的优点;
- elmo、GPT、bert:动态特征,可以解决一词多义的问题。
|