1. 根据(上一轮)标注结果,进行问题分析;一方面参照quality_tools/step2_get_label_result.py;另一方面需要对问题进行归类分析,要求具体的case,不能泛泛的说无关文本占比很高;
5.清洗完成后,自检(quality_result.md),clean.py or clean.ipynb, sample/reclean?_xxxx_en/zh_label.jsonl三个文件是否存在;并且排出掉其他中间文件;
context.strip(" ").strip("\n").strip(" ").strip("\n")
def post_process(context):
context = context.strip(" ").strip("\n").strip(" ").strip("\n")
# 消除分界符失效 --*- 前面需要有连续两个\n;
context = re.sub('\n --', "\n\n --", context)
# 消除空格问题
context = re.sub(r'\n +\n', "\n\n", context)
context = re.sub(r'\n +\n', "\n\n", context)
# 去掉过多\n的情况
context = re.sub("\n{2,}", "\n\n", context)
return context
清洗代码模板请参考: - https://github.com/11983h/data_quality_control/blob/dev/datasets/atemplete/iter0/clean_template.py
对于正则,有如下要求:以列表形式,分别为替换src文本以及target文本
pattern_list = [
[r'xxx',"yyy"],
]
清洗过程中,请固定如下基本框架,实现clean_text函数即可:
def clean_text(context, lang):
#todo
# ...
for pattern_item in pattern_list:
item = re.sub(pattern_item[0], pattern_item[1], item)
# ...
return context
def post_process(context):
context = context.strip(" ").strip("\n").strip(" ").strip("\n")
# 消除分界符失效 --*- 前面需要有连续两个\n;
context = re.sub('\n --', "\n\n --", context)
# 消除空格问题
context = re.sub(r'\n +\n', "\n\n", context)
context = re.sub(r'\n +\n', "\n\n", context)
# 去掉过多\n的情况
context = re.sub("\n{2,}", "\n\n", context)
return context
fw = open("", "w", encoding="utf-8")
with open("", "r", encoding="utf-8") as fs:
for items in tqdm(fs.readlines()):
item = json.loads(items.strip())
context = item["text"]
# if need
lang = item["lang"]
context = clean_text(context, lang)
context = post_process(context)
item["text"] = context
item = json.dumps(item, ensure_ascii=False)
fw.write(item + "\n")
如果数据集涉及到中、英语种区分清洗,可以直接通过如下代码获取,并注意分别处理的实现应该放在clean()函数:
lang=item["lang"]