{"record":{"id":"2a9b3c40aa09aaef","repo":"keras-team/keras","slug":"unrecognized-keyword-arguments-str-kwargs","errorCode":null,"errorMessage":"Unrecognized keyword arguments: {str(kwargs)}","messagePattern":"Unrecognized keyword arguments: (.+?)","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"keras/src/legacy/preprocessing/text.py","lineNumber":105,"sourceCode":"        num_words=None,\n        filters='!\"#$%&()*+,-./:;<=>?@[\\\\]^_`{|}~\\t\\n',\n        lower=True,\n        split=\" \",\n        char_level=False,\n        oov_token=None,\n        analyzer=None,\n        **kwargs,\n    ):\n        # Legacy support\n        if \"nb_words\" in kwargs:\n            warnings.warn(\n                \"The `nb_words` argument in `Tokenizer` \"\n                \"has been renamed `num_words`.\"\n            )\n            num_words = kwargs.pop(\"nb_words\")\n        document_count = kwargs.pop(\"document_count\", 0)\n        if kwargs:\n            raise TypeError(f\"Unrecognized keyword arguments: {str(kwargs)}\")\n\n        self.word_counts = collections.OrderedDict()\n        self.word_docs = collections.defaultdict(int)\n        self.filters = filters\n        self.split = split\n        self.lower = lower\n        self.num_words = num_words\n        self.document_count = document_count\n        self.char_level = char_level\n        self.oov_token = oov_token\n        self.index_docs = collections.defaultdict(int)\n        self.word_index = {}\n        self.index_word = {}\n        self.analyzer = analyzer\n\n    def fit_on_texts(self, texts):\n        for text in texts:\n            self.document_count += 1","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/legacy/preprocessing/text.py#L87-L123","documentation":"The legacy Tokenizer __init__ accepts only a fixed set of keyword arguments; after handling the deprecated nb_words alias and popping document_count, any remaining kwargs raise TypeError listing the offending names, so misspelled or removed arguments are never silently ignored.","triggerScenarios":"Constructing Tokenizer with a misspelled or outdated kwarg such as num_word=100, or Keras 1.x-era names other than nb_words.","commonSituations":"Copy-pasting Tokenizer code from old tutorials; IDE autocompletion picking the wrong name; version migrations from Keras 1.x.","solutions":["Fix each name printed in the message against the real signature (num_words, filters, lower, split, char_level, oov_token, document_count, analyzer)","Replace nb_words with num_words (only that alias is auto-handled)","Drop arguments removed in this Keras version"],"exampleFix":"# before\nTokenizer(num_word=5000, lower=True)\n# after\nTokenizer(num_words=5000, lower=True)","handlingStrategy":"type-guard","validationCode":"allowed = {'num_words','filters','lower','split','char_level','oov_token','document_count','analyzer'}\nbad = set(kwargs) - allowed\nif bad:\n    raise TypeError(f'typo(s): {bad}')","typeGuard":"def valid_tokenizer_kwargs(kw):\n    allowed = {'num_words','filters','lower','split','char_level','oov_token','document_count','analyzer'}\n    return not (set(kw) - allowed)","tryCatchPattern":null,"preventionTips":["Let the IDE type the signature; avoid hand-typing kwargs from memory"],"tags":["keras","text","tokenizer","validation"],"backgroundTag":"invalid-argument-value","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}