Open voidf opened 3 weeks ago
实际数据发现,有的段落是空段落,有的段落一整段的所有语种都是同一个字符串,这两种情况下收录段落没有意义,现提供一个简易脚本过滤旧版语料的这两种情况。
# 去掉老版本语料中,整段为空,或者整段中含有文本的,文本全都一样的段落,不会更新段落数,低质量段落数等
# 不考虑扩展字段,扩展字段内含有有意义文本的不应该使用本脚本
import argparse
import json
import copy
from pathlib import Path
LANG_SET = [
"it_text",
"zh_text",
"en_text",
"ar_text",
"nl_text",
"de_text",
"eo_text",
"fr_text",
"he_text",
"ja_text",
"pt_text",
"ru_text",
"es_text",
"sv_text",
"ko_text",
"th_text",
"id_text",
"cht_text",
"vi_text",
]
def process_file(ifilename: Path):
print(f"input file: {ifilename.absolute()}")
ofilename = ifilename.parent / (ifilename.stem + "_dedup" + ifilename.suffix)
with open(ifilename, 'r', encoding='utf-8') as f:
ilines = f.read().splitlines()
olines = []
for iline in ilines:
j = json.loads(iline.strip())
out = copy.deepcopy(j)
valid_paras = []
for para in j['段落']:
paratextset = set()
for lang in LANG_SET:
paratextset.add(para[lang].strip())
paratextset.discard("")
if len(paratextset) <= 1:
continue
valid_paras.append(para)
valid_paras[-1]["行号"] = len(valid_paras)
out['段落'] = valid_paras
olines.append(json.dumps(out,ensure_ascii=False))
with open(ofilename, 'w', encoding='utf-8') as f:
f.write('\n'.join(olines))
print(f"output file: {ofilename.absolute()}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Process some files.')
parser.add_argument('input', type=str, help='The input file path', nargs='?')
parser.add_argument('-d', '--directory', type=str, help='Process a directory instead of a single file')
args = parser.parse_args()
if args.directory:
for f in Path(args.directory).iterdir():
if f.name.endswith('.jsonl'):
process_file(f)
elif args.input:
process_file(Path(args.input))
else:
print("请提供一个目录或输入文件路径。")
exit(0)
此脚本无法处理形如以下的语言对不上的导出,可能需要另外使用正则或者是机翻手段来纠正这些case。现阶段暂时不把工作重心放在这里,交给语料的下游使用者想办法处理。
{"行号": 4, "是否重复": false, "是否跨文件重复": false, "it_text": "這種手機也是方便的電子產品嘛?", "zh_text": "這種手機也是方便的電子產品嘛?", "en_text": "這種手機也是方便的電子產品嘛?", "ar_text": "", "nl_text": "", "de_text": "這種手機也是方便的電子產品嘛?", "eo_text": "", "fr_text": "這種手機也是方便的電子產品嘛?", "he_text": "", "ja_text": "これもハイテクで便利なんだろ?", "pt_text": "這種手機也是方便的電子產品嘛?", "ru_text": "這種手機也是方便的電子產品嘛?", "es_text": "這種手機也是方便的電子產品嘛?", "sv_text": "", "ko_text": "這種手機也是方便的電子產品嘛?", "th_text": "", "other1_text": "", "other2_text": "", "id_text": "", "cht_text": "這種手機也是方便的電子產品嘛?", "vi_text": "", "扩展字段": "{\"k\": \"sound_auth_subtitles_speech_list_sub_b19.bin.json@27@@4\"}"
先分给如来