如何在Tensorflowkeras中使用nlp预测?

2024-05-18 12:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在预测命名实体识别集时有点问题。 经过我的训练和测试,一切都很顺利。现在我想测试原始数据,比如字符串

我试着用

model.predict(['Elon musk is good guy , he owns spacex, tesla.'])

但是它抛出了erorr

UnimplementedError:  Cast string to float is not supported
     [[node functional_29/Cast (defined at <ipython-input-210-e13dae4a124d>:1) ]] [Op:__inference_predict_function_223088]

Function call stack:
predict_function

我有token2index和

tag2index,从训练集生成的词典。我试着将其转换并使用这些,但预测显示0

word = ['Elon musk is good guy , he owns spacex, tesla.']
word_index = [[token2idx[word] for word in word]]
X = pad_sequences(sequences=word_index, maxlen=7, padding='post')
predicted = np.argmax(model.predict(X), axis=-1) 
print(predicted)

给予 数组([[0,0,0,0,0,0,0]] 但事实并非如此。甚至尝试了x_train[0]的一个片段句子,但它抛出的结果是这样的。 谢谢你的帮助


Tags: indexmodelisfunctionpredictwordhegood
1条回答
网友
1楼 · 发布于 2024-05-18 12:24:24

我猜你想预测单词,对吗

那么你应该把你的话分开:

sentence = 'Elon musk is good guy , he owns spacex, tesla.'
word_index = [[token2idx[word] for word in sentence.split(' ')]]
X = pad_sequences(sequences=word_index, maxlen=7, padding='post')
predicted = np.argmax(model.predict(X), axis=-1) 
print(predicted)

更新

正如讨论所显示的,问题在于模型在学习过程中具有较高的准确性,但输出始终为零

由于y类的大小不是均匀分布的,因此模型了解到,改进一类的预测将很快提高精度。所以你的y数据是这样的:[0,0,0,0,0,0,0,1,0,0,0,0,0,3,0]。有三个类:0,1,3模型可以快速学习预测零,因为这可以最大程度地提高精度但是

该模型只学习预测0,这已经给了它很高的精确度。例如,当一个序列包含20个单词,因此20个y值和19个为0时,通过始终预测0,模型将达到95%的准确度。因此,在这种情况下,高精度是无法衡量模型质量的,因为为了提高所有类的模型性能,从95%跳到98%比从50%跳到95%更能改善模型

相关问题 更多 >

    热门问题