微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过遍历行来预测数据框中的每一行?

如何解决如何通过遍历行来预测数据框中的每一行?

我构建了一个 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)

输出: enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。