尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

TextFlint 数据格式入门:5 分钟搞定 JSON/CSV 输入与配置文件编写

TextFlint 数据格式入门:5 分钟搞定 JSON/CSV 输入与配置文件编写 TextFlint 数据格式入门5 分钟搞定 JSON/CSV 输入与配置文件编写【免费下载链接】textflintUnified Multilingual Robustness Evaluation Toolkit for Natural Language Processing项目地址: https://gitcode.com/gh_mirrors/te/textflintTextFlint 是一个统一的多语言 NLP 鲁棒性评测工具包支持从数据加载、对抗样本生成到模型鲁棒性报告的全流程。对于新手来说最容易卡住的第一关往往不是算法本身而是TextFlint 数据格式——输入文件怎么组织、配置文件怎么写。本文用 5 分钟带你跑通 JSON/CSV 两种输入格式并完成一份可用的config.json配置文件让你的模型鲁棒性评测快速起步。TextFlint 是什么一条命令跑通鲁棒性评测TextFlint 的用法极其简单你只需要准备两个文件——一个数据文件input_file和一个配置文件config.json然后执行一条命令即可完成数据加载、样本变换和报告生成$ textflint --dataset input_file --config config.json其中input_file是 CSV 或 JSON 格式的输入文件config.json是包含生成策略和目标模型选项的配置文件。命令行入口实现在 textflint_cli.py 中支持--dataset、--config、--task和--model四个参数即使不写配置文件也可以通过--task直接指定任务名称。从整体工作流程可以看到TextFlint 以「原始数据集 任务配置」为输入经过词级/字符级/句子级变换生成对抗样本最终输出鲁棒性报告整个过程对普通用户非常友好。第一步准备 JSON 输入文件每行一个样本JSON 是 TextFlint 最常用的输入格式规则很简单每行一个 JSON 对象代表一个样本。以情感分析SA任务为例{x: Titanic is my favorite movie., y: pos, sample_id: 0} {x: I dont like the actor Tim Hill, y: neg, sample_id: 1}x待评测的文本内容y样本标签如pos/negsample_id样本编号可选不写也会自动编号。数据加载逻辑位于 dataset.py 的load_json方法逐行读取并自动校验合法性非法样本默认跳过dropnaTrue不会中断整个流程。第二步CSV 输入文件怎么组织CSV 同样是受支持的输入格式组织方式和 JSON 完全对应第一行是表头每一行是一个样本。例如同样的 SA 数据可以写成x,y Titanic is my favorite movie.,pos I dont like the actor Tim Hill,negCSV 解析由 file_io.py 中的read_csv完成支持自定义分隔符sep参数默认逗号和自定义表头headers参数。需要注意的是列数必须与表头一致否则该行会被丢弃或报错。小提示当字段中含有逗号时建议优先使用 JSON 格式避免 CSV 分隔符导致的解析错位。不同任务的数据格式一览TextFlint 支持 20 种 NLP 任务不同任务的字段名并不相同。这里整理了一份常用任务的字段对照表帮你少踩坑任务缩写必需字段通用变换UTx,y情感分析SAx,y词性标注POSx,y标签序列命名实体识别NERx文本,yBIO 标签序列自然语言推理NLIpremise,hypothesis,y语义匹配SMsentence1,sentence2,y机器阅读理解MRCcontext,question,answer等关系抽取REx,y机器翻译NMTsource,target指代消解COREFx,y中文通用变换UTCNx,y以 NLI 任务为例JSON 输入长这样{premise: A man is playing a guitar., hypothesis: A man is playing music., y: entailment, sample_id: 0}每种任务的样本类如 sa_sample.py、nli_sample.py会在加载时自动校验字段是否齐全、类型是否正确字段名写错会直接报错提示非常贴心。第三步编写配置文件 config.json核心参数详解配置文件是 TextFlint 的灵魂它决定了要生成什么类型的对抗样本、用什么策略。以 SA 任务的 TextCNN 模型为例{ task: SA, out_dir: ./DATA/, trans_methods: [ Ocr, [InsertAdv, SwapNamedEnt] ], trans_config: { Ocr: {trans_p: 0.3} } }下面是几个最常用的参数说明参数作用说明task目标任务名称必填如SA、NLI、NER中文任务加cn后缀如SACNout_dir输出目录生成的样本与原始样本的保存位置trans_methods变换方法列表字符串表示单个变换如Ocr数组表示变换流水线如[InsertAdv, SwapNamedEnt]trans_config变换方法参数如{Ocr: {trans_p: 0.3}}表示 OCR 变换概率为 0.3max_trans单样本最大变换数默认 1random_seed随机种子用于复现实验结果默认 1sub_methods子群体方法用于生成子群体样本attack_methods攻击配方文件路径指向包含 Attack 实例的 Python 文件validate_methods验证器列表如EditDistance、GPT2Perplexity等flint_model目标模型文件路径包含 FlintModel 实例的 Python 文件做变换时可省略配置解析逻辑在 config.py 中所有参数都有默认值新手只需要填task和trans_methods就能跑起来。如果你暂时不想接入模型可以完全省略flint_model仅做数据变换。从架构图可以看出Input Layer 的 Dataset 和 Config 是整个评测流程的入口Config 文件同时驱动生成层Generation Layer与模型评测最终由报告层Report Layer产出鲁棒性报告。运行与输出生成结果怎么读执行命令后TextFlint 会在out_dir目录下生成两类文件ori_Keyboard_2.json ori_SwapNamedEnt_1.json trans_Keyboard_2.json trans_SwapNamedEnt_1.jsonori_xxx.json原始样本trans_xxx.json变换后的对抗样本文件名中的数字表示成功变换的样本数量。例如trans_Keyboard_2.json的内容可能是{x: Titanic is my favorite m0vie., y: pos, sample_id: 0}可以看到movie被替换成了m0vie——这就是键盘误触类对抗样本。借助这些样本你可以评估模型在不同扰动下的鲁棒性表现最终生成包含多种图表雷达图、柱状图等的鲁棒性报告直观对比不同变换方法对模型准确率的影响。常见避坑指南字段名必须与任务匹配SA 用x/yNLI 用premise/hypothesis/y写错会报should be in data错误JSON 必须每行一个对象不能写成多行格式化的 JSON 数组解析器是按行读取的CSV 列数要一致多列或少列都会导致该行被跳过中文任务要带 cn 后缀如SACN、NERCN、UTCN对应中文数据与变换方法先跑通再调参建议先复制官方示例数据test/data/mini.json跑通全流程再逐步替换为自己的数据和参数。至此你已经掌握了 TextFlint 数据格式的核心知识JSON/CSV 输入文件的组织方式、不同任务的字段要求以及配置文件的编写方法。按照本文的步骤5 分钟即可完成第一次鲁棒性评测实验快去试试吧【免费下载链接】textflintUnified Multilingual Robustness Evaluation Toolkit for Natural Language Processing项目地址: https://gitcode.com/gh_mirrors/te/textflint创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表