自然语言处理的分词与词嵌入

1 分词

1.1 什么是分词

分词是把自然语言语句进行数字化的过程。

1.2 为什么要分词

自然语言是字符串序列,机器没办法直接处理, 需要处理成数字的形式。

1.3 如何进行分词

以英文为例:

  • 1 按空格划分
    这应该是最简单也最直观的做法了。这样分词的结果基本上就是单词和标点符号。 这种分词方法的优点是简单, 缺点也很明显: 1)单词的表的数量会很大,2)容易出现新的单词不在词表中的情况, 3)相似单词之间没有联系(如一个单词的过去式, 未来式等等)

  • 2 按字符划分
    按字符划分不会出现新的单词不在词表中的情况, 并且词表的数量也会比较小。但是缺点也非常明显, 那就是序列会变得特别长, 并且拆分成一个一个的字符, 几乎完全丢失了单词的语义信息。

  • 3 按子词(subword)划分
    这种方式可以看做是上面两种方式的折中, 可以有效避免上面2种方式的缺点。
    下面将介绍几个流行的subword分词方法。

1.3.1 BPE

1.3.2 Wordpiece

经过分析后, 我们可以得到一个词表, 下面是一个词表的示例:
在这里插入图片描述
可以看到, 词表中既有完整的单词, 也有一些并不是完整的单词, 如es, ed, ou等等, 它们可以被看做subword。对词表中的每一个元素, 我们可以给他一个数字编号, 如词表中包含50000个元素, 我们就依次用0~49999给他们编号。

有了这个词表,对一个句子, 我们就可以逐个遍历词表, 把一个句子用词表中的元素顺序拼接起来, 如Hello word这个序列,可以分成Hell o world, 对应的数字序列就是13586, 137,255。
在这里插入图片描述

分词完成了语言序列的数字化, 使神经网络可以处理自然语言序列。

2 词嵌入

词嵌入就是为了把词表中的每个元素用向量表示。 上面分词得到的词表我们用数字对他们进行了编号, 虽然网络可以直接处理数字信息, 但上面的数字并没有什么语义信息, 数字编号只是我们随意赋予的一个数值, 本身没有什么意义。我们期望得到一个有意义的表征,常见的做法是把词表中的每个元素用一个向量表征, 比如每一个元素, 我们用1024维的向量表示, 那么对于一个长度50000的词表, 词嵌入之后的词汇表就是50000*1024的大小。

3 参考

1 深度学习进阶篇-预训练模型[1]:预训练分词Subword、ELMo、Transformer模型原理;结构;技巧以及应用详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值