文本分类(一)-几类模型

文本分类任务中,输入为一条由词语组成的文本,模型判断这条文本的类别。

1.基本文本模型

模型一:使用RNN(LSTM)的最后一个状态判断类别,是最基本的RNN模型。如图:

<>pic<>

LSTM的最后一个状态,或者说是该LSTM结点的最后一个time step 包含了整个句子的信息。将这个信息传入一个普通的全连接的神经网络。最终得到一个分类。比如一个句子传入模型后被判断为威胁类别。如果是二分类,使用sigmoid实现,若是多分类,使用softmax实现。

这个过程中涉及到embedding,就是用向量来表示一个词语,或者说是对词语的进一步编码。第一次编码是将词语转化为数字,两者一一对应。

不使用one-hot 编码,深度学习领域使用embedding的方式对词语进行编码。具体如何做,如下:

词语 id1 id2 id3 id4 id5
海洋 0.11 0.52 0.45 1.27 0.72
阳光 0.63 0.24 1.12 0.27 1.27
冲浪 0.72 0.22 0.23 0.37 0.46

我把每一个出现了的词用长度为5的向量表示。并且embedding中的数值是变量,在训练模型时,所有数值是要被学习(更新)的。从而使得每个词语对应的向量与词语意思更相关。

当把输入编码成一个向量时,过程就更类似对图像的处理了(两者还是很不一样)。输入与输出都是向量。

2.双向文本模型

上述基本模型有个问题:虽然LSTM可以选择性地保存信息,但是,随后一个词语还是会与其较近的词语由更大的关系,而弱化较早以前的词语。所以更早些的信息可能不会被保存下来。双向RNN就是用来解决这个问题的,如图:

<>pic<>

特点:

  • 信息正向传播,并且逆向传播。
  • 把每一个词语经过这个LSTM的输出,做组合(拼接,pooling等)
  • 最终将组合结果传入一个全连接层

3.HAN

特点:

  • 分层,第一层词语编码,第二层句编码。
  • 每一层增加一个类似LSTM内部门的操作,成为Attention 机制

4.CNN解决文本问题