前言
如果我们想拿到一个句子的特征向量可以采用什么样的方式?
基于词袋模型(Bag of Words)
- Bag of Words : 主要思想是基于对句子中字出现的次数来构建句子向量,向量大小即为词表大小。可以采用的工具是gensim中的doc2bow
- TF-IDF:在BOW的基础上,考虑到每个字的重要程度,向量大小依然等于词表大小。可以采用的工具是gensim中的TfidfModel
基于无监督神经网络模型
- 词向量的平均(mean):直观理解就是将句子中每个词的词向量求平均,向量维度等于词向量维度。可以使用工具是gensim中的word2vec。
- Doc2Vec:主要借鉴了word2vec思想去训练句子向量,向量维度可以自己设置。可以使用工具是gensim中的doc2vec。
- Bert 生成的句子向量:BERT的每一层的输出其实都可以看作句子的向量,你可以有很多种方式去抽取文本向量,比如官方给出的取最后四层的句子向量拼接(输出维度:[maxlen,768*4])或者求平均(输出维度:[maxlen,768]。后续也许你需要在对句子向量求一下平均,这样文本向量的维度就为768。 可以采用的工具是官方开源的代码中的extract_features.py,当然也可以采用一些其他方式,我在实战部分会介绍另外一种。