keras实现nlp

将文本表示为数字
机器学习模型将向量(数字数组)作为输入。
处理文本时,首先要将字符串输入模型之前将字符串转换为数字(或“矢量化”文本)
一、一键编码
“one-hot”编码。考虑这句话“猫坐在垫子上”。这句话中的词汇(或独特的词)是 (cat, mat, on, sat, the)。为了表示每个单词,您将创建一个长度等于词汇表的零向量,然后在与该单词对应的索引中放置一个 1。这种方法如下图所示。
在这里插入图片描述
关键点:这种方法效率低下。one-hot 编码向量是稀疏的(意味着,大多数索引为零)。想象一下,您的词汇表中有 10,000 个单词。要对每个单词进行单热编码,您将创建一个向量,其中 99.99% 的元素为零。
二、用唯一的数字对每个单词进行编码
您可以尝试的第二种方法是使用唯一编号对每个单词进行编码。继续上面的示例,您可以将 1 分配给“cat”,将 2 分配给“mat”,依此类推。然后,您可以将句子“The cat sat on the mat”编码为密集向量,如 [5, 1, 4, 3, 5, 2]。这种方法是有效的。您现在拥有一个稠密向量而不是稀疏向量(其中所有元素都已满)。
但是,这种方法有两个缺点:

整数编码是任意的(它不捕获单词之间的任何关系)。
整数编码对于模型的解释可能具有挑战性。例如,线性分类器为每个特征学习一个权重。因为任意两个词的相似度与其编码的相似度之间没有关系,所以这种特征权重组合没有意义。

三、词嵌入
词嵌入提供了一种使用高效、密集表示的方法,其中相似的词具有相似的编码。重要的是,您不必手动指定此编码。嵌入是浮点值的密集向量(向量的长度是您指定的参数)。它们不是手动指定嵌入的值,而是可训练的参数(模型在训练期间学习的权重,与模型为密集层学习权重的方式相同)。在处理大型数据集时,通常会看到 8 维(对于小数据集)、高达 1024 维的词嵌入。更高维的嵌入可以捕获单词之间的细粒度关系,但需要更多的数据来学习。
在这里插入图片描述
上图是一个词嵌入图。每个单词都表示为浮点值的 4 维向量。另一种将嵌入视为“查找表”的方法。在学习了这些权重之后,您可以通过在表中查找它对应的密集向量来对每个单词进行编码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值