AttributeError:“Tokenizer”对象在 Keras 中没有属性“oov_token”

ali*_*boy 4 python nlp pickle tokenize keras

我正在尝试使用加载的标记生成器对文本进行编码,但出现以下错误

AttributeError: 'Tokenizer' object has no attribute 'oov_token'

我添加了以下代码:

from keras.preprocessing.text import Tokenizer
from keras.preprocessing import sequence
from keras.models import Model, Input, Sequential, load_model
import pickle
import h5py

maxlen = 100
tok = open('tokenizer.pickle', 'rb')
tokenizer = pickle.load(tok)
tok.close()
model = load_model('weights.h5')

def predict():
    new_text = sequence.pad_sequences((tokenizer.texts_to_sequences(['heyyyy'])), maxlen=maxlen)
    prediction = model.predict(new_text,batch_size=1,verbose=2)
Run Code Online (Sandbox Code Playgroud)

问题出现在线路上tokenizer.texts_to_sequences(['heyyyy']),我不知道为什么。是不是泡菜有问题?tokenizer.texts_to_sequences'hey''heyy'、 和 一起工作'heyyy'

任何指导表示赞赏!

Max*_*xim 5

这很可能是这个问题

您可以手动设置tokenizer.oov_token = None来解决此问题。

Pickle 不是一种可靠的序列化对象的方法,因为它假设您导入的底层 Python 代码/模块没有更改。一般来说,不要使用与pickle时使用的库版本不同的pickle对象。这不是 Keras 问题,而是通用的 Python/Pickle 问题。在这种情况下,有一个简单的修复(设置属性),但在许多情况下不会有。