如何解决如何通过遍历行来预测数据框中的每一行?
我构建了一个 BERT 模型,现在我有一个块,可以很好地对文本列中的每一行进行一一分类。 Pandas 数据框是这样的:
text
0 working add oil
1 @KristianaNKOTB you're welcome
2 is going to bed,work in the morning boo but t...
3 @sparky_habbo - uni & assignments happened...
4 Can't wait to have chinese food! Still disappo...
text = [df[0]]
pred_tokens = map(tokenizer.tokenize,text)
pred_tokens = map(lambda tok: ["[CLS]"] + tok + ["[SEP]"],pred_tokens)
pred_token_ids = list(map(tokenizer.convert_tokens_to_ids,pred_tokens))
pred_token_ids = map(lambda tids: tids +[0]*(data.max_seq_len-len(tids)),pred_token_ids)
pred_token_ids = np.array(list(pred_token_ids))
predictions = model.predict(pred_token_ids).argmax(axis=-1)
df = pd.DataFrame(predictions,columns = ['emotion'])
df
例如,如果我们想对 df.text[0]
,所以 'working add oil'
,是 1 还是 0 进行分类,我使用此代码,结果如下:
emotion
0 1
但是现在如何通过遍历行来预测数据框中的每一行?
解决方法
下面的代码演示了可用于预测数据框中文本并保存的过程。
输入数据:
df=pd.DataFrame({"text":['working add oil',"@KristianaNKOTB you're welcome","is going to bed,work in the morning boo but t..."]})
定义一个函数。你可以根据你的程序调整它。您可以评论我的代码并取消注释您的代码。
import random
def predict_emotion(input_text):
text = input_text
''' uncomment this and remove my return statement
pred_tokens = map(tokenizer.tokenize,text)
pred_tokens = map(lambda tok: ["[CLS]"] + tok + ["[SEP]"],pred_tokens)
pred_token_ids = list(map(tokenizer.convert_tokens_to_ids,pred_tokens))
pred_token_ids = map(lambda tids: tids +[0]*(data.max_seq_len-len(tids)),pred_token_ids)
pred_token_ids = np.array(list(pred_token_ids))
predictions = model.predict(pred_token_ids).argmax(axis=-1)
return predictions
'''
return_int=random.randint(1,8)
print(f"text:{input_text},emotion:{return_int}")
return return_int
为每行输入文本调用函数。
df['emotion']=df['text'].apply(predict_emotion)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。