【问题标题】:How to find "num_words" or vocabulary size of Keras tokenizer when one is not assigned?未分配 Keras 分词器时如何查找“num_words”或词汇量?
【发布时间】:2019-04-30 17:56:17
【问题描述】:

那么,如果我在初始化Tokenizer() 时不传递num_words 参数,那么在使用它对训练数据集进行标记后,如何找到词汇量大小?

为什么这样,我不想限制分词器词汇量的大小,以了解我的 Keras 模型在没有它的情况下表现如何。但是我需要将这个词汇量大小作为模型第一层定义中的参数传递。

【问题讨论】:

    标签: machine-learning keras deep-learning nlp tokenize


    【解决方案1】:

    所有单词及其索引都将存储在字典中,您可以使用tokenizer.word_index 访问它。因此,您可以根据该词典中的元素数找到唯一词的数量:

    num_words = len(tokenizer.word_index) + 1
    

    + 1 是因为保留填充(即索引零)。

    注意:当你没有设置num_words 参数(即你不知道或不想限制字数)时,这个解决方案(显然)适用,因为word_index 包含所有单词(不仅是最常用的单词),无论您是否设置num_words

    【讨论】:

    • 似乎不对,因为当我以Tokenizer(num_words=50000) 启动标记器并执行len(tokenizer.word_index) + 1 时,我看到一个像75000 这样的数字,远远超过我定义的限制。这怎么可能?
    • @karthiks 你提到你不想设置num_wordsword_index 包含所有单词,无论您是否设置num_words。因此,当您没有限制字数(即没有设置num_words 参数)时,此解决方案有效。否则,如果您设置了num_words,那么您就知道字数是多少,而且您一开始就不需要这个解决方案! :) 我在回答中添加了一条注释来澄清这一点。
    • 我指的是验证词汇大小 = len(tokenizer.word_index)+1 失败的假设。
    • 我认为 +1 是针对“词汇量不足”的词
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多