【问题标题】:What is Keras tokenizer.fit_on_texts doing?Keras tokenizer.fit_on_texts 在做什么?
【发布时间】:2021-09-02 08:41:08
【问题描述】:

如何使用 Keras Tokenizer 方法fit_on_texts

它与fit_on_sequences 有何不同?

【问题讨论】:

    标签: python tensorflow machine-learning keras tokenize


    【解决方案1】:

    fit_on_textstexts_to_matrix 结合使用会为文本生成 one-hot 编码,请参阅 https://www.tensorflow.org/text/guide/word_embeddings

    fit_on_texts

    fit_on_texts使用示例

    from keras.preprocessing.text import Tokenizer
    text='check check fail'
    tokenizer = Tokenizer()
    tokenizer.fit_on_texts([text])
    tokenizer.word_index
    

    将产生{'check': 1, 'fail': 2}

    请注意,我们使用[text] 作为参数,因为输入必须是一个列表,其中列表的每个元素都被视为一个标记。输入也可以是文本生成器或字符串列表。

    将文本生成器作为输入传递是节省内存的,这里是一个示例:(1) 定义一个返回可迭代文本集合的文本生成器

    def text_generator(texts_generator):
        for texts in texts_generator:
            for text in texts:
                yield text
    

    (2) 将其作为输入传递给fit_on_texts

    tokenizer.fit_on_text(text_generator)
    

    fit_on_texts 在调用 texts_to_matrix 之前使用,它会为原始文本集生成 one-hot 编码。

    num_words 参数

    num_words 参数传递给标记器将指定我们在表示中考虑的(最常见的)单词的数量。举个例子,首先是num_words = 1,然后我们只对最常见的词进行编码,love

    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]]
    

    其次,num_words = 100,我们对 100 个最常用的词进行编码

    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]]
    

    fit_on_sequences

    Fit_on_sequences 适用于“序列”,即整数词索引列表。在调用sequence_to_matrix之前使用它

    from tensorflow.keras.preprocessing.text import Tokenizer
    test_seq = [[1,2,3,4,5,6]]
    tok = Tokenizer(num_words=10)
    tok.fit_on_sequences(test_seq)
    tok.sequences_to_matrix(test_seq)
    

    制作

    array([[0., 1., 1., 1., 1., 1., 1., 0., 0., 0.]])
    

    【讨论】:

    • 请问如果我需要使用 bert tokenizer 而不是这种方式,我该怎么做?
    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 2021-03-15
    • 2020-12-09
    • 2018-07-11
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多