gpt4 book ai didi

python - 为什么 Tokenizer 跟踪的单词数量多于 num_words?

转载 作者:行者123 更新时间:2023-12-01 00:34:38 25 4
gpt4 key购买 nike

我有以下代码

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer

sentences = [
'I love my dog',
'I love my cat',
'You love my dog',
]

tokenizer = Tokenizer(num_words=3)
tokenizer.fit_on_texts(sentences)
word_index = tokenizer.word_index

print(word_index)

Output: {'love': 1, 'my': 2, 'i': 3, 'dog': 4, 'cat': 5, 'you': 6}

现在我的代码如何跟踪超过 3 个唯一的常用单词?

我在这里遗漏了什么吗?

最佳答案

查看source code ,似乎索引已分配给遇到的所有单词。但是,一旦您实际使用标记生成器将文本转换为索引序列(例如使用 texts_to_sequences),所有“不常见单词”都将被 OOV 标记替换。请注意,只有在您实际指定了 OOV token (您尚未指定)时才会执行此操作。示例:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer

sentences = [
'I love my dog',
'I love my cat',
'You love my dog dog',
]

tokenizer = Tokenizer(num_words=4, oov_token=None)
tokenizer.fit_on_texts(sentences)
word_index = tokenizer.word_index

print(word_index)
tokenizer.texts_to_sequences(["I love my cat"])

{'love': 1, 'you': 6, 'i': 4, 'dog': 3, 'my': 2, 'cat': 5}
[[1, 2]]

我稍微修改了文本,打破了“dog”和“I”之间的联系,并将存储的单词数量增加了 1(无论出于何种原因,指定 4 实际上只使用了三个最常见的单词...)。您可以看到 OOV 单词(“I”和“cat”)被简单地从文本中删除,即使它们已分配了索引。

如果我们指定 OOV token ,会发生以下情况:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer

sentences = [
'I love my dog',
'I love my cat',
'You love my dog dog',
]

tokenizer = Tokenizer(num_words=4, oov_token="oov")
tokenizer.fit_on_texts(sentences)
word_index = tokenizer.word_index

print(word_index)
tokenizer.texts_to_sequences(["I love my cat"])

{'love': 2, 'you': 7, 'i': 5, 'dog': 4, 'my': 3, 'cat': 6, 'oov': 1}
[[1, 2, 3, 1]]

如您所见,索引 1 现在是为 OOV 标记保留的,并且在转换时不常见的单词将分配给该索引。

关于python - 为什么 Tokenizer 跟踪的单词数量多于 num_words?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57899789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com