1. tf-idf
https://blog.csdn.net/asialee_bird/article/details/81486700
2. textrank
https://blog.csdn.net/qq_41664845/article/details/82869596
https://blog.csdn.net/laobai1015/article/details/77747702?utm_source=blogxgwz2
3. LSA、PLSA
LSA(latent semantic analysis)潜在语义分析,LSA 将词和文档映射到潜在语义空间,从而去除了原始向量空间中的一些“噪音”,提高了信息检索的精确度。
https://www.cnblogs.com/bentuwuying/p/6219970.html
4. LDA
https://www.cnblogs.com/yifdu25/p/8099826.html
LDA假设文档主题的先验分布是Dirichlet分布;
LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。
LDA的参数估计(吉布斯采样)
从上面两个过程可以看出,LDA在PLSA的基础上,为主题分布和词分布分别加了两个Dirichlet先验(也就是主题分布的分布和词分布的分布)。
Python实现:gensim.models.ldamodel
https://blog.csdn.net/selinda001/article/details/80446766
5. word2vector
CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model),是word2vec的两种训练模式。
而负采样(Negative Sample)和层次softmax(Hierarchical Softmax)则是两种加速训练的方法。
其学习目标是最大化对数似然函数:
其中,w表示语料库C中任意一个词
公式咱们就不放了,网络计算的步骤:
输入层:上下文单词的onehot。(假设单词向量空间dim为V,上下文单词个数为C)
所有onehot分别乘以共享的输入权重矩阵W(V*N矩阵,N为自己设定的数,初始化权重矩阵W)
所得的向量 (注意onehot向量乘以矩阵的结果) 相加求平均作为隐层向量, size为1*N.
乘以输出权重矩阵W’ {N*V}
得到向量 {1*V} 激活函数处理得到V-dim概率分布 {PS: 因为是onehot嘛,其中的每一维斗代表着一个单词},概率最大的index所指示的单词为预测出的中间词(target word)
与true label的onehot做比较,误差越小越好。loss function(一般为交叉熵代价函数)
http://www.sohu.com/a/214596432_642762
https://www.cnblogs.com/Determined22/p/5804455.html
加速方法:https://www.cnblogs.com/Determined22/p/5807362.html
6. fasttext
https://www.cnblogs.com/huangyc/p/9768872.html
https://blog.csdn.net/qq_16633405/article/details/80578431
FastText 算法能获得和深度模型相同的精度,但是计算时间却要远远小于深度学习模型。fastText 可以作为一个文本分类的 baseline 模型。
fastText方法包含三部分,模型架构,层次SoftMax和N-gram子词特征。
训练代码:https://www.jianshu.com/p/87d4e4b4f9d2
print('Build model...')
model = Sequential()
#我们从一个有效的嵌入层(embedding layer)开始,它将我们的词汇索引(vocab indices )映射到词向量的维度上.
model.add(Embedding(len(fea_dict), 200, input_length=300))
# 我们增加 GlobalAveragePooling1D, 这将平均计算文档中所有词汇的的词嵌入
model.add(GlobalAveragePooling1D())
#我们投射到单个单位的输出层上
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer="adam",
metrics=['accuracy'])
model.summary()
7. glove
https://www.jianshu.com/p/a3eabbc5bb99
http://www.fanyeong.com/2018/02/19/glove-in-detail/
8. elmo
https://blog.csdn.net/weixin_42446330/article/details/86710838
9. GPT
10. bert
https://blog.csdn.net/luoxiaolin_love/article/details/84618247