Keras Tokenizer num_words 指定了什么?

Gar*_*esh 9 python nlp machine-learning keras tensorflow

鉴于这段代码:

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)
Run Code Online (Sandbox Code Playgroud)

无论num_words=1num_words=100,当我在 jupyter 笔记本上运行此单元时,我都会得到相同的输出,而且我似乎无法理解它在标记化方面有何不同。

{'爱': 1, '我的': 2, '我': 3, '狗': 4, '猫': 5, '你': 6}

Mar*_*ani 12

word_index 它只是整个文本语料库的单词到 id 的映射,无论 num_words 是什么

区别在用法上很明显。例如,如果我们调用texts_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]]
Run Code Online (Sandbox Code Playgroud)

仅返回爱情 ID,因为最常见的单词

反而

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]]
Run Code Online (Sandbox Code Playgroud)

返回最常见的 100 个单词的 id

  • 开发商的有趣决定 (2认同)