Utilisation de num_words dans la classe tokenizer dans Keras [duplicate]

Aug 30 2020

Je voulais comprendre la différence entre,

from tensorflow.keras.preprocessing.text import Tokenizer

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

tokenizer = Tokenizer(num_words = 1)
tokenizer.fit_on_texts(sentences)
word_index = tokenizer.word_index
print(word_index)

O / P - {'love': 1, 'my': 2, 'i': 3, 'dog': 4, 'cat': 5, 'you': 6}

contre

from tensorflow.keras.preprocessing.text import Tokenizer

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

tokenizer = Tokenizer(num_words = 100)
tokenizer.fit_on_texts(sentences)
word_index = tokenizer.word_index
print(word_index)

O / P - {'love': 1, 'my': 2, 'i': 3, 'dog': 4, 'cat': 5, 'you': 6}

Si le tokeniser indexe dynamiquement tous les mots uniques, à quoi sert-il num_words?

Réponses

1 MarcoCerliani Aug 30 2020 at 14:39

word_index c'est simplement un mappage de mots en identifiants pour tout le corpus de texte passé quel que soit le nombre de mots

la différence est évidente dans l'utilisation. par exemple, si nous appelonstexts_to_sequences

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

tokenizer = Tokenizer(num_words = 1+1)
tokenizer.fit_on_texts(sentences)
tokenizer.texts_to_sequences(sentences) # [[1], [1], [1]]

seul l'identifiant d'amour est renvoyé car le mot le plus fréquent

au lieu

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

tokenizer = Tokenizer(num_words = 100+1)
tokenizer.fit_on_texts(sentences)
tokenizer.texts_to_sequences(sentences) # [[3, 1, 2, 4], [3, 1, 2, 5], [6, 1, 2, 4]]

les identifiants des 100 mots les plus fréquents sont renvoyés