Machine learning Keras标记器num#u words不';好像不行

Machine learning Keras标记器num#u words不';好像不行,machine-learning,neural-network,keras,deep-learning,tokenize,Machine Learning,Neural Network,Keras,Deep Learning,Tokenize,我希望t.word\u index只包含前三个单词。我做错了什么?你做的事没有什么错word_index的计算方法与您以后使用的最频繁单词数相同(如您所见)。因此,当您调用任何转换方法时,标记器将只使用三个最常见的单词,同时,它将保留所有单词的计数器-即使很明显以后它不会使用它。只是对Marcin答案的补充(“它将保留所有单词的计数器-即使很明显以后不会使用它。”) 它将计数器保留在所有单词上的原因是,您可以多次调用fit_on_text。每次它都会更新内部计数器,并且在调用转换时,它会根据更新

我希望
t.word\u index
只包含前三个单词。我做错了什么?

你做的事没有什么错
word_index
的计算方法与您以后使用的最频繁单词数相同(如您所见)。因此,当您调用任何转换方法时,
标记器将只使用三个最常见的单词,同时,它将保留所有单词的计数器-即使很明显以后它不会使用它。

只是对Marcin答案的补充(“它将保留所有单词的计数器-即使很明显以后不会使用它。”)

它将计数器保留在所有单词上的原因是,您可以多次调用
fit_on_text
。每次它都会更新内部计数器,并且在调用转换时,它会根据更新的计数器使用最前面的单词


希望有帮助。

num\u words限制为一个较小的数字(例如,3)对fit\u-on\u文本输出没有影响,例如word\u索引、word\u计数、word\u文档。它对文本到\u矩阵有影响。生成的矩阵将有num\u words(3)列


再补充一点farid khafizov的回答, 从文本_到_顺序的结果中删除num_单词和以上顺序的单词(第一句中的4个、第二句中的5个和第三句中的6个分别消失)


所以
num_words
fit_on_text()
也没有影响?
>>> t = Tokenizer(num_words=3)
>>> l = ["Hello, World! This is so&#$ fantastic!", "There is no other world like this one"]
>>> t.fit_on_texts(l)
>>> t.word_index
{'fantastic': 6, 'like': 10, 'no': 8, 'this': 2, 'is': 3, 'there': 7, 'one': 11, 'other': 9, 'so': 5, 'world': 1, 'hello': 4}
>>> t = Tokenizer(num_words=3)
>>> l = ["Hello, World! This is so&#$ fantastic!", "There is no other world like this one"]
>>> t.fit_on_texts(l)
>>> print(t.word_index)
{'world': 1, 'this': 2, 'is': 3, 'hello': 4, 'so': 5, 'fantastic': 6, 'there': 7, 'no': 8, 'other': 9, 'like': 10, 'one': 11}

>>> t.texts_to_matrix(l, mode='count')
array([[0., 1., 1.],       
       [0., 1., 1.]])
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer

print(tf.__version__) # 2.4.1, in my case
sentences = [
    'I love my dog',
    'I, love my cat',
    'You love my dog!'
]

tokenizer = Tokenizer(num_words=4)
tokenizer.fit_on_texts(sentences)
word_index = tokenizer.word_index
seq = tokenizer.texts_to_sequences(sentences)
print(word_index)  # {'love': 1, 'my': 2, 'i': 3, 'dog': 4, 'cat': 5, 'you': 6}
print(seq)         # [[3, 1, 2], [3, 1, 2], [1, 2]]