在Keras中,AttributeError: 'Tokenizer'对象没有'oov_token'属性。

4

我正在尝试使用加载的分词器对文本进行编码,但是遇到以下错误:

AttributeError: 'Tokenizer'对象没有'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'])这一行,我不确定问题出在哪里。是pickle的问题吗?tokenizer.texts_to_sequences可以处理'hey''heyy''heyyy'。欢迎提供任何指导!

你能发布你的完整代码吗? - Colin Ricardo
我已经更新了帖子并附上了所有代码。 - alienboy
1
啊,这可能会引起您的兴趣:https://github.com/keras-team/keras/issues/9099 - Colin Ricardo
1个回答

5

这很可能是这个问题:

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

Pickle不是一种可靠的序列化对象的方式,因为它假定您导入的基础Python代码/模块没有发生更改。通常情况下,请勿在与拾取时使用的库版本不同的版本中使用拾取的对象。这不是Keras问题,而是通用的Python/Pickle问题。在这种情况下,有一个简单的修复方法(设置属性),但在许多情况下将不会有。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接