实验目标:固定 64 Byte(21 个中文字符)切片长度,量化测试 ELM 模型对查询串的截断容错性、局部重叠容错性、字符替换容错性,明确不同扰动下的匹配准确率边界,为滑动步长选择提供数据支撑。
数据集构建
- 选取 1000 份与实际应用场景一致的文本文件,按 64 Byte 固定长度、32 Byte 步长(50% 重叠)生成切片库,共得到 N 个切片样本,记为 S={s1,s2,...,sN}。
- 将切片库按 8:2 划分为训练集(80%)和测试集(20%),训练 ELM 模型并保存训练好的权重参数。
评价指标定义
- 匹配准确率:Accuracy=总查询次数正确匹配的查询次数×100%
- 召回率:Recall=测试集中的目标切片总数正确匹配的目标切片数×100%
- 误匹配率:FPR=总查询次数错误匹配的查询次数×100%
测试意图:明确查询串从两端截断后,ELM 仍能正确匹配的最大截断比例。
- 测试用例生成
- 从测试集切片中随机选取 200 个样本作为基准查询串 Qbase(64 Byte)。
- 对每个 Qbase 生成截断变体:分别从头部截断、尾部截断、头尾同时截断 k 个 Byte(k=8,16,24,32,40,48,56,对应截断比例 12.5%~87.5%),每个截断长度生成 5 个重复用例。
- 测试步骤
- 将所有截断查询串输入训练好的 ELM 模型,记录每个截断长度下的匹配准确率、召回率。
- 绘制 截断比例 - 匹配准确率 曲线,找到准确率下降至 50%(临界值)时对应的截断比例,记为 截断容错边界。
- 关键观察点
- 头部截断和尾部截断对准确率的影响是否存在差异(是否与文本特征位置相关)。
- 头尾同时截断的容错性是否低于单侧截断。
测试意图:模拟查询串跨两个切片的场景,测试不同重叠长度下的匹配能力,对应滑动步长 16 Byte(25% 重叠)、8 Byte(12.5% 重叠)等小步长场景。
- 测试用例生成
- 选取测试集中相邻的两个切片 si 和 si+1(步长 32 Byte 时重叠 32 Byte),生成跨切片的查询串 Qcross:
- 重叠长度 32 Byte(对应步长 32):Qcross 覆盖 si 后 32 Byte + si+1 前 32 Byte
- 重叠长度 16 Byte(对应步长 16):Qcross 覆盖 si 后 16 Byte + si+1 前 48 Byte
- 重叠长度 8 Byte(对应步长 8):Qcross 覆盖 si 后 8 Byte + si+1 前 56 Byte
- 每个重叠长度生成 100 个跨切片查询用例。
- 测试步骤
- 输入所有 Qcross 进行查询,统计不同重叠长度下的匹配准确率。
- 对比步长 32/16/8 Byte 对应的准确率变化,确定最小有效重叠长度(准确率≥80% 对应的最小重叠 Byte 数)。
测试意图:测试查询串存在字符错误时的容错能力,贴近实际应用中用户输入偏差的场景。
- 测试用例生成
- 从基准查询串 Qbase 中随机选取 200 个样本,对每个样本随机替换 m 个 Byte(m=2,4,8,16,对应替换比例 3.125%~25%),替换内容为随机 UTF-8 中文字符或乱码。
- 测试步骤
- 输入替换后的查询串,统计不同替换比例下的准确率和误匹配率。
- 确定最大容忍替换比例(误匹配率 ≤ 5% 时的最大替换 Byte 数)。
- 数据汇总
- 整理三个模块的测试数据,形成容错性指标表,包含截断容错边界、最小有效重叠长度、最大容忍替换比例。
- 对比不同扰动类型下的模型鲁棒性排序(如 截断 vs 替换 vs 重叠)。
- 工程化建议
- 根据最小有效重叠长度,推荐最优滑动步长(如 若 16 Byte 重叠准确率≥80%,则步长可设为 48 Byte,减少切片数量)。
- 基于截断容错边界,明确实际应用中查询串的最短有效长度。
- 所有测试用例需避免重复,且覆盖不同文本类型(如叙事、说明、议论类文本),保证结果普适性。
- 每次测试需固定 ELM 模型参数(隐含层节点数、激活函数等),排除模型本身的波动影响。
- 记录每次测试的训练时间和存储占用,用于后续平衡成本与性能。
我可以帮你把这个方案细化成一份可直接执行的实验代码框架,包含测试用例生成、指标计算的 Python 伪代码,需要吗?