1、词集模型
词集模型:将语料库的所有不相同的词,列出一个有顺序的列表,然后根据该顺序形成一个列表长度的向量,然后根据词列表的顺序,搜索句子里是否包含该词,包含的话向量的该位置置为1,否则置为0。
缺点:向量的顺序完全根据前面形成的词的列表的顺序而来,与句子的词的顺序无关,忽略了文本的词序,以及没有词语的权重信息
2、词袋模型
在词集模型的基础上,把置1改为词出现的频率信息或者tf-idf权重
缺点:还是没有次序信息
3、词向量
详细见: https://www.cnblogs.com/peghoty/p/3857839.html
(1)、 One hot representation
词向量维度大小为整个词汇表的大小,对于每个具体的词汇表中的词,将对应的位置置为1。比如我们有5个词组成的词汇表,词”Queen”在词汇表中的序号为2, 那么它的词向量就是(0,1,0,0,0)
缺点:无法表示出在语义层面上词语词之间的相关信息
维数灾难
(2)、 Dristributed representation
得到Dristributed representation的方法包括 word2vec(本质就是一个产生词向量的工具)方法,word2vec中又包含两种不同的训练模型
(a) CBOW
(b)Skip-gram
对于训练方法的优化方法又分两种 (1)、negative sampling (2)、Hierarchical Softmax
最初的训练方法可以在这个知乎链接看到: https://www.zhihu.com/question/44832436
输入输出都是 one hot 编码最终得到的词向量是中间的权重参数
但是这种方法计算复杂度过大
因此有了(1)、negative sampling (2)、Hierarchical Softmax这两种优化训练方法
Hierarchical Softmax
输入是随机初始化的定义好长度的词向量
输出是一颗哈夫曼树
negative sampling
不再计算哈夫曼树了,而是采取采样出一些正负样本对来进行训练,正常的预测的单词是正样本,然后选取一定数量的其他单词作为负样本
设计到一个负采样的问题
4、附录
现在比较综合的任务,比如文本分类,是没有显式构建词向量的过程的,都是end to end
比如输入一个能够表述一段文本的向量(比如向量的元素未每个词在数据集的词汇表中的次序作为一个数),然后神经网络里边会有一个embedding层,自动构建词向量(权重),然后输出定义为我们任务相关就可以了,比如情感分析的 1:正向情感 0 负向情感。