PaddleNLP一种更好的异常处理办法
收藏
通常情况下,PaddleNLP读取函数会长这样:
# 数据ID,用户ID,商品ID,评论时间戳,评论标题,评论内容,评分
def read(data_path):
with open(data_path, 'r', encoding='utf-8') as in_f:
next(in_f)
for line in in_f:
line = line.strip('\n')
split_array = [i.start() for i in re.finditer(',', line)]
id = line[:split_array[0]]
comment_title = line[split_array[3] + 1:split_array[4]]
comment = line[split_array[4] + 2:split_array[-2]]
label = line[split_array[-1] + 1:]
yield {'text': comment_title +' '+ comment, 'label': str(int(label.split('.')[0])-1), 'qid': id}
会经常遇到某行少列等异常情况,处理很麻烦,现在有更好的办法来处理:
def read(pd_data):
for index, item in pd_data.iterrows():
yield {'text_a': item['text_a'], 'label': label_id_dict[item['label']]}
BQ_train = pd.read_csv('train/BQ/train', sep="\t", header=None, error_bad_lines=False)
使用pandas来读取数据,其中error_bad_lines=False,可以自动忽略错误行。
0
收藏
请登录后评论
可参考我的项目:https://aistudio.baidu.com/aistudio/projectdetail/2411372?contributionType=1
弱弱给大佬补充一下,之前有用这个处理过某行的编码形式不同导致的错误,一样有用。error_bad_lines=False 就是跳过报错行。但是还是要慎用~ 因为可能数据读取时候有多个不同的错误,编码问题就是可以解决的,不一定要跳过,会少很多数据。
当然感谢大佬普及~
说得对,不过真的懒得处理了,有时候空值或者什么的。
编码应该有其他办法吧