我正在尝试使用我加载的tokenizer对文本进行编码,但收到以下错误
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)
问题出现在tokenizer.texts_to_sequences(['heyyyy'])
行,我不知道为什么。泡菜有问题吗? tokenizer.texts_to_sequences
适用于'hey'
,'heyy'
和'heyyy'
。
感谢任何指导!
答案 0 :(得分:3)
这很可能是this issue:
您可以手动设置
tokenizer.oov_token = None
来解决此问题。Pickle不是一种可靠的序列化对象的方法,因为它假定 您导入的基础Python代码/模块没有 改变。一般情况下,请勿使用不同的腌制物品 库的版本比酸洗时使用的版本。那不是 一个Keras问题,这是一个通用的Python / Pickle问题。在这种情况下 有一个简单的修复(设置属性),但在许多情况下会有 不是。