NLP应用(二)--Embedding

step1. one-hot encoding

首先,根据上篇内容我们知道,单词可以利用one-hot encoding进行编码,假设编码如下:

Key(word)

Value(index)

One-hot encoding

love

1

e1=[1,0,0,0,…,0]

you

2

e2=[0,1,0,0,…,0]

,

3

e3=[0,0,1,0,…,0]

him

4

e4=[0,0,0,1,…,0]

another

5

……

He

6

……

I

7

……

……

……

……

one-hot向量e1,e2,…,e_v的维数是v(假设vocabulary共包含v个唯一词)。

step2. word embedding(word to vector)

但实际中不可能用v维的向量来表示单词,因为vocabulary的单词数量一般至少都是上千上万的,所以就需要将one-hot向量映射到低维向量,公式如下:

其中P是参数矩阵,是需要利用训练数据学习出来的;e_i是vocabulary中的第i个one-hot向量。

d的大小会影响模型学习的表现,一般会采用交叉验证(cross validation)方法选择比较好的d(即参数矩阵P)。 

以下面影评的8个词为例,参数矩阵的第一行是“movie”的词向量,第二行是“good”的词向量,……

假如这些词向量是二维的,最后训练出来的词会带有感情色彩,平面坐标系就能把这些词进行标注,第一象限就是正面词,第三象限就是负面词。

Python实现示例:

step3. Logistic Regression for Binary Classification

我们用逻辑回归做二元分类来举例说明如何做文本分类,python实现代码如下图:

首先安装和导入keras对应算法包,然后调用Embedding,指定句子长度word_num=20,vocabulary包含10000个单词。通过summary打印对应信息:

得到embedding矩阵之后,先利用compile编译模型,再用训练数据拟合模型。

一个epoch指代所有的数据送入网络中完成一次前向计算及反向传播的过程。我们都知道,在训练时,将所有数据迭代训练一次是不够的,需要反复多次才能拟合收敛。在实际训练时,我们将所有数据分成几个batch,每次送入一部分数据,梯度下降本身就是一个迭代过程,所以单个epoch更新权重是不够的。epoch大小与数据集的多样化程度有关,多样化程度越强,epoch应该越大。

因此,epoch的个数是非常重要的。关于epoch为何这样选择可以看下图:

完成训练之后就需要利用测试集来进行准确率评估:

总结上述过程如下:

注意:161个参数是因为模型还有一个偏移量参数intercept。

上一篇:NLP应用(一)--tokenization

下一篇:NLP应用(三)--RNNs(Recurrent Neural Networks)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trisyp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值