一文读懂深度学习中文本处理的4种方式

一、序言

文本处理方式是深度学习领域中自然语言处理的基础,即把文本转变成计算机识别的语言过程。转变之后才能用算法做后续的文本分析和理解。所以有必要了解文本处理的几种方式,做到对不同的场景采用不同的处理方式。

常见的文本处理方式有独热编码(one-hot),词袋法(Bag of words),TF-IDF和词向量(Word2Vec)这4种,我们分别为大家解释。

二、文本处理方式之独热编码(one-hot)

首先给大家解释的是独热编码,也称为one-hot编码,是最基础,同时也是用的较多的一种处理方式。

我们举个例子解释下one-hot过程。假设文本有三句话:分别为

  1. 我爱北京。

  1. 爷爷奶奶爱北京。

  1. 我爱爷爷奶奶。

按照one-hot处理步骤,首先需要将语料库的每句话分成单词,即为[我,爱,北京,爷爷,奶奶],总共5个单词,构成一个词典,如图所示:

5个单词构成的词典示例

这相当于字典中只有这5个单词,每个单词对应一个编号。然后分别对每句话中的单词判断,在字典中出现表示为1,不在字典中出现表示为0。

我们先看下第一句话的表示形式,如图:

句子1的one-hot编码示例

可以发现对于"我爱北京" 来说,"我"在词典中出现,所以表示为1。"爱"在词典中出现,表示为1。北京也同样在词典中出现,所以也表示为1。而"爷爷","奶奶" 在这句话里面没有涉及,所以表示为0。最终第一句话表示为[1,1,1,0,0]。这就是第一句话对应的独热编码。

我们再看下第二句话"爷爷奶奶爱北京"的one-hot表示。如图所示:

句子2的one-hot编码示例

可以发现同样对于"爷爷","奶奶","奶","北京",这几个单词来说都分别在词典中出现,所以表示为1。而"我"没有出现,表示为0。最终第二句话的one-hot表示为[0,1,1,1,1]。

同理,第三句话one-hot表示,如图所示:

句子3的one-hot编码示例

这里同样也是将句子中出现的单词在文本中表示为1,没有表示的为0。最终第二句话的one-hot表示为[0,1,1,1,1]。

通过以上案例可以发现,独热编码的处理方式的优点是比较简单,容易理解,并且方便操作。

三、文本处理方式之词袋法(Bag of words)

因为one-hot只是表示单词出现还是不出现,所以这种方法有一个比较明显的问题,就是不能体现单词的重要程度

对于一个文本来说,如果频繁出现某个词,可能意思更倾向于这个单词所表示的主题思想,如下举例:

  1. 我爱北京天安门,天安门上红旗飘。

  1. 我爱北京。

  1. 我爱中国北京。

首先同样还是按照文章中所有出现的单词构造字典。如下:

8个单词组成的词典示例

如果按照one-hot编码的话,结果如下:

三个句子对应的one-hot编码结果

对于第一句话来说,"天安门"出现了两次,所以第一句话的中心思想应侧重强调于对"天安门"这个词的表达。而在上图中one-hot编码这种方式表示仅仅表示了单词"天安门"出现或者不出现,不能很好的突出这个单词在文本中的重要性。

因此我们用词袋法来表示,词袋法主要是统计了每个单词出现的频数,作为当前单词的表达形式。结果如下:

三个句子对应的词袋法表示结果

可以发现对于第一句话,词袋法将"天安门"这个单词表示为2,这样文本在考虑中心词的时候会更倾向于"天安门"这个词的表达,从而更好的体现文章思想。

通过以上案例可以发现,词袋法的处理方式优点是能够体现单词的重要程度。

四、文本处理方式之TF-IDF

从one-hot到词袋法,虽然考虑了单词出现的频数,以单词的频数来表示单词所表达的思想的重要性。

但是这里会有一个问题,单词次数越多,会越重要吗?

比如一篇文章出现好多个"我","我"这个词就一定重要吗? 答案是不一定的,真正重要的不是单词本身,而是这句话所要表达的主题才是最重要的。

所以才有了TF-IDF的发展,其中TF表示的含义是 term frequency就是词频DF是Document Frequency即文档的频率I是Inverse,求逆,也就是TF值除以DF值的含义

我们举个例子来进行讲解,比如以下文本:

1、我爱中国

2、我爱北京

对于以上两个句子中每个句子对应的词频如下:

句子对应的词频示例

这也正是我们的TF。我们再看下对应的DF,DF实际上为每个单词在所有文本中出现的个数。所以DF表示如下:

文档频率示例

对应单词的TF除以DF如图所示:

每个单词的TF-IDF结果示例

可以发现对于句子1,"中国"的TF-IDF值最大,所以第一个句子的主题倾向于"中国"。对于句子2,"北京"的TF-IDF值最大,所以第二个句子的主题思想倾向于"北京"。而文本中的"我"和"爱"因为在各个文本中都有涉及,所以在表达主题上面,其实没有太大的参考意义,因此对应的DF值比较高,最后再通过TF相除之后,TF-IDF值就比较低了。

通过以上案例可以发现TF-IDF处理方式,它除了考虑词频,还考虑了单词在整个语料库里面的频率,这会让一些大部分文本中都有的词对应的权重降低,从而更好的突出文章主题。

五、文本处理方式之词向量(Word2Vec)

以上三种方法,一般来说是比较基础和简单的了,但是它们都忽略了句子单词之间的语境,或者理解为忽略了单词之间的顺序。

举个例子,比如:"我爱苹果" 这里面的"苹果"代表什么意思呢?它是我们所说的苹果手机还是吃的苹果呢?

日常生活的苹果和苹果手机的理解示例

如果按one-hot,词袋法或者TF-IDF中的任何一个算法来计算的话,都是有歧义的。因为这些算法没有考虑单词之间上下文的关系。

举个例子理解下单词之间上下文的关系:比如对文本"我想吃苹果",对于人来说,它吃的一定是水果,不是手机,那怎么能让计算机知道呢?就得靠"苹果"前面的"吃"这个字,来体会到后面是水果。再比如对文本"我想玩苹果",一般情况下它是手机,它就根据前面的"玩"来定义它是苹果。

所以句子的上下文对于词语表达的方式是很重要的一个信息。因此词向量算法应运而生,字面理解,词向量就是把一个词变成向量。只不过在词向量算法里面相近的词位置比较近。

那什么是向量?向量就是高维空间里面的一个点,如果把一个词变成了向量,词就在高维空间里面有个位置。假设文本中"苹果"和"梨"单词的位置表示如图:

单词的词向量表示示例

那此时"苹果"的含义可能是水果,因为离梨比较近。

如果此时最终训练的词向量表示如图所示:

单词的词向量表示示例

那此时"苹果"的含义可能是苹果手机,因为离"华为"单词比较近。

词向量训练本身是一种浅层的神经网络算法,需要我们算法模型不断学习的,最终可以将单词表示成一定维度的向量,它考虑了上下文之间语义的联系,能够很好的表达词真正的含义。

六、总结

文本处理方式比较普遍的就是以上4种,我们要结合不同的情形分别应用。

举个例子,一般来说,对于离散型的特征和标签,我们需要表示为one-hot编码。而对于深度学习算法中的场景,我们的文本需要转成词向量,嵌入到神经网络最开始的层次里面,作为预训练的基础。所以大家需要结合实际工作业务,选择对应的文本处理方式即可。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

L先生AI课堂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值