CMU Neural Nets for NLP 2019 (4): Convolutional Neural Networks for Language
首先,让我们考虑情感分析这个文本分类问题,看看都有哪些方法可以用。
我们可以尝试下面几种方法:
BOW
但这种方法不能准确地处理 “There‘s nothing” “I don’t love it” 这种带否定的观点。
CBOW
这种方法不能很好地处理有序地,共现地情况。
Deep CBOW
这种方法将每个单词的词向量组合成一个,可以捕捉到 not 和 hate ,但仍然不能准确识别 “not hate” 这种组合情况。
bag of n-grams
这种方法可以识别 “don‘t love” “not the best” 这种组合句子的情感,准确率 85%, 而且这个方法简单快捷,但是它不能共享参数。
**再来简单看看 CNN **
1D CNN
最早在 1989 年用于语音识别。
首先,向量经过一个 same transformation,相当于一个 soft n-grams,这样它就可以识别 “I hate” “I dislike”,因为这两个词意思相近,它们的向量表达也会是相似的。
然后经过一个 combine function,例如一个 pooling 函数。
最后经过 softmax 得到概率。
2D CNN
2D 和 1D 本质上是类似的,计算都是一个方向的,只不过输入会被分成两个方向,单独计算后再组合在一起。
将 CNN 用于文本
最早将 CNN 用于文本的是 (Collobert and Weston 2011),
模型的基础的 1D CNN,但它引入了 2D 的函数。 CNN 在文本上的应用主要有两类:
Context window modeling: 例如词性标注 tagging,在考虑单个单词的标签时需要考虑上下文情况这种问题。
Sentence modeling: 可以用卷积来提取 ngrams, 用 pooling 来将整个句子组合在一起。