Python 为什么标记器跟踪的单词多于num_单词?
我有以下代码Python 为什么标记器跟踪的单词多于num_单词?,python,tensorflow,keras,Python,Tensorflow,Keras,我有以下代码 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(
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)
输出:{'love':1,'my':2,'i':3,'dog':4,'cat':5,'you':6}
现在,我的代码如何跟踪3个以上的唯一常用词
我在这里遗漏了什么吗?看着,似乎索引被分配给了所有遇到的单词。但是,一旦您实际使用标记器将文本转换为索引序列(例如,使用文本\u到\u序列
),所有“不频繁的单词”都将被OOV标记替换。请注意,只有在您实际指定了OOV令牌(您还没有指定)的情况下,才会执行此操作。示例:
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”之间的联系,并将存储的单词数增加了一个(无论出于何种原因,指定4实际上只使用三个最常见的单词…)。您可以看到,OOV单词(“I”和“cat”)只是被排除在文本之外,即使它们指定了索引 如果我们指定一个OOV令牌,会发生以下情况:
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令牌保留的,并且在转换时为该索引分配了不常用的字