簡體   English   中英

如何在 Tensorflow-keras 中對 nlp 使用預測?

[英]How to use predict for nlp in Tensorflow-keras?

我在預測命名實體識別集時遇到了一些問題。 經過我的培訓和測試,一切順利。 現在我想測試像字符串這樣的原始數據。

我試着用

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

但它拋出錯誤,

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)

給出 array([[0, 0, 0, 0, 0, 0, 0]]) 這是不正確的。 甚至嘗試了 x_train[0] 的片段句子,但它會拋出這樣的錯誤。 謝謝你的幫助。

我猜你想預測單詞,對吧?

那么你應該分開你的話:

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,這已經給了它很高的准確性。 EG 當一個序列包含 20 個單詞時,因此 20 個 y 值和 19 個為 0,模型將通過始終預測 0 達到95%的准確度。 因此,在這種情況下,高精度並不能衡量模型的質量,因為為了提高所有類別的模型性能,從 95% 躍升至 98% 確實比從 50% 躍升至 98% 對模型的提升更大95%。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM