机器学习基础:第 8 部分 – 自然语言处理的标记化

上一节第 7 部分 –图像增强和过度拟合

到目前为止,您已经了解了机器学习的工作原理,并通过图像分类探索了计算机视觉中的示例,包括理解用于特征识别的卷积神经网络等概念,以及用于避免过度拟合的图像增强,从而使您的网络变得更加智能。

现在我们要换个话题,看看自然语言处理。在这一部分,我们将看看计算机如何以数字格式表示语言,即单词和句子,然后可以用它来训练神经网络。这个过程称为标记化。让我们开始吧。

考虑一下这个单词。这是英

文单词LISTEN ,由六个字母组成。我们习惯根据发音来阅读,并将这些发音组合成一个单词。但计算机如何理解这个单词呢?一种方法是给每个字母分配一个数字,因为计算机处理数字比处理字母要好。一种常见的编码格式称为 ASCII,其中常见的字母和符号被编码为 0 到 255 之间的值。它很有用,因为只需要一个字节来存储字母的值,但它已被后来的编码所取代,以便访问超过 255 个字符和字母,特别是国际字符。但为了便于说明,我们可以继续使用 ASCII,例如,字母 L 是 76,I 是 73,依此类推。所以我们现在将单词listen编码为六个字节,每个字母一个。

这是一种完全有效的编码,通

基础设施建设,5G 覆盖迅速发展,4G 覆盖广泛。该国的 立陶宛手机移动数据 电信供应商提供价格合理的数据套餐,让用户可以轻松访问移动互联网。立陶宛是欧洲连接最紧密的国家之一,得益于其对数字化发展的承诺,在城市和农村地区提供一致的网络覆盖。

常当你使用神经网络时,你会看 黑色时尚舒适连帽莱特曼夹克 到字符编码或子字编码,以及诸如此类的东西。它们会让事情变得稍微复杂一些,在这些教程中,我将进行基于字的编码,而不是我们刚刚看到的基于字母的编码。

我为什么要这样做?原因之一是,如果我们将一个单词视为一组数字,除非我们考虑这些数字的序列,否则我们有时会有两个单词具有相反的含义,例如SILENT,它们可具有相同的字母。因此,如果我们想使用基于字符的编码,除非我们有一个序列模型,否则计算机无法区分这两个单词。这比我们现在需要研究的要复杂一些。

那么让我们考虑一种不

同的编码,即基于单词的编码。这样,每个单词都可以用一个数字表示,并且每个数字都是不同的。这还有一个隐藏的优势,我们稍后会看到。

考虑一下这个句子。我爱我的狗。这是一个相当简 bj 列表 单的句子。如果我根据单词进行编码,我可以得出任意的编码。假设单词“我”是数字一,那么“爱我的狗”分别变成二、三和四。如果我要编码另一个句子,例如“我爱我的猫”,单词“我爱我的”已经有数字了,所以我可以再次使用一、二和三来表示它们。我可以为“猫”创建一个新数字,我会说它是数字五。所以现在我的句子是1 2 3 4,和1 2 3 5。有趣的是,现在单词消失了,单词的标记被使用,我们可以开始看出句子之间存在相似性。所以也许我们开始瞥见将句子变成数字但又保留某种含义会是什么样子。

我刚刚概述的过程称为标记化,它是自然语言处理 (NLP) 的固有部分。TensorFlow 为您提供了可帮助您轻松实现此目的的 API。接下来我们将介绍它们。

这是对我之前展示的

句子进行标记所需的所有代码。 打印(单词索引)

我们可以将其分解并逐行检查。标记器工具是 TensorFlow Keras 库的一部分,它们位于预处理命名空间中。因此请确保导入这些。

我要把这些句子硬编码到一个数组中。现在,虽然这是一个非常简单的语料库——只有两个句子和五个独特的单词——但这种设计模式可以适用于更大的数据集。你很快就会处理数万个句子和数千个独特的单词。而且它们几乎都是相同的代码。所以如果这看起来有点过于简单,现在不要担心。

tokenizer  然后,您只需创建一个实例并使用参数对其进行初始化即可创建一个Tokenizer。其中一个参数是num_words参数,它指定您要关注的最大单词数。

这里只有五个独特的单词,所以实际上没有什么区别。但是对于较大的文本集,它可能会有所不同。您通常会遇到包含数千个独特单词的文本主体,其中许多单词可能只使用过一次或两次。通过在标记器中指定您关心的单词数量,您可以轻松地过滤掉这些单词。标记器足够智能,可以根据单词在语料库中的常用程度为单词分配标记。因此,最常见的单词将位于索引 1,下一个常用单词将位于索引 2,依此类推。

为了让标记器完成其工作,您可以将其安装在文本上并将文本语料库传递给它。在本例中,它是我们的简单句子数组。要查看标记器创建的单词索引,您只需获取属性即可word_index。这将为您提供一组名称值对,其中名称是单词,值是该单词的标记。然后您可以打印它来检查它。


打印出来时,不一定按任何顺

排列,但要注意值。就像我之前说的,最常见的单词将是最低的索引。从这个意义上讲,“I love my”出现了两次,而“dog”和“cat”都出现了一次。因此,“I love my”是索引较低的单词——一、二和三——而“dog”和“cat”是索引较高的单词,四和五。

那么,如果我们扩展句子,然后添加更多内容,比如“你爱我的狗! ”并加上感叹号,会怎么样呢?请注意那个感叹号。标记器默认的行为是删除标点符号。它可以被覆盖,但我们现在会保留它。它还会使所有单词都变成小写,因此“Dog”将以与“dog”相同的

请注意,它们略有

移动。“Love”现在是第一个标记,因为它是最常用的词,并且与“my”相似。还请注意,“dog”失去了感叹词。这里只有一个表示“dog”的标记,它代表该词的两种用法,尽管感叹词在第二个标记上。我们添加了一个新词“you”,因为它首次出现在添加到语料库的新句子中。

因此,我希望您发现这非常简单,尽管标记器具有强大的功能。

在这一部分中,您首次尝试使用标记化进行 NLP,其中您可以获取句子并将单词编码为标记。下一部分 9 –使用排序 API

 

机器学习 毫升 TensorFlow Python 编程 深度学习 人工智能 标记化 自然语言处理 自然语言处理
如果您发现文中存在错误,请选择错误并按 Ctrl-Enter 向作者发送消息。
跟随
亚历克斯 5.4千
加入时间:5 年前

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部