介绍

到目前为止,我们只考虑过主要使用数字输入的机器学习算法。如果我们想要使用文本,我们必须找到一种方法将文本转换为数字。有很多方法可以做到这一点,我们将在本章中探讨一些常用的方法。

如果我们考虑句子TensorFlow makes machine learning easy,我们可以按照我们观察它们的顺序将单词转换为数字。这将使句子成为1 2 3 4 5。然后,当我们看到一个新句子machine learning is easy时,我们可以将其翻译为3 4 0 5,,表示我们没有看到的索引为零的单词。通过这两个例子,我们将词汇量限制为六个数字。对于大块文本,我们可以选择我们想要保留多少单词,并且通常保留最常用的单词,用零索引标记其他所有单词。

如果单词learning的数值为 4,单词makes 的数值为 2,则自然会认为learningmakes的两倍。由于我们不希望单词之间存在这种类型的数字关系,我们可以假设这些数字代表的是类别,而不是关系数字。

另一个问题是这两个句子的大小不同。我们所做的每个观察(在这种情况下,句子)需要具有与我们希望创建的模型相同的大小输入。为了解决这个问题,我们必须在稀疏向量中创建每个句子,如果该单词出现在该索引中,则该特定索引中的值为 1:

TensorFlow makes machine learning easy
1 2 3 4 5
first_sentence = [0,1,1,1,1,1]

为了进一步解释前面的向量,我们的词汇由六个不同的单词组成(五个已知单词和一个未知单词)。对于这些单词中的每一个,我们要么具有零值或 1 值。零表示单词不出现在我们的句子中,1 表示它至少出现一次。因此值为零表示该单词不会出现,值为 1 表示它出现

machine learning is easy
3 4 0 5
second_sentence = [1,0,0,1,1,1]

这种方法的缺点是我们失去了任何词序的指示。两个句子TensorFlow makes machine learning easymachine learning makes TensorFlow easy将产生相同的句子向量。

值得注意的是,这些向量的长度等于我们选择的词汇量的大小。选择非常大的词汇量是很常见的,因此这些句子向量可能非常稀疏。这种类型的嵌入称为词袋。我们将在下一节中实现这一点。

另一个缺点是单词isTensorFlow具有相同的数字索引值:1。有意义的是,单词is可能不如单词TensorFlow的出现重要。

我们将在本章中探索不同类型的嵌入,试图解决这些问题,但首先我们将开始实现字袋算法。

results matching ""

    No results matching ""