NLP项目测试和验证

前言

软件测试定义
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试目的
检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试方法
静态测试和动态测试、功能测试、性能测试、黑盒测试和白盒测试等…
场景
在进行文本分类、信息抽取等NLP任务时,要对各项指标进行测试
流程
功能测试 --> 性能测试 --> 数据测试 --> 批量人工检验标签

功能测试

单条数据测试(如:使用标准句);非全量数据执行测试

if __name__ == '__main__':
    print()

性能测试

  • 空间测试
    https://blog.csdn.net/Yellow_python/article/details/94435972
  • 时间测试
    https://blog.csdn.net/Yellow_python/article/details/82710017

数据测试

数据量

SELECT t.table_name,t.num_rows FROM user_tables t

抽取率(非空占比)

SELECT
t1.f1 amount,
t1.f1/t2.f1 proportion
FROM
(SELECT COUNT(*)f1 FROM {table} WHERE {field} IS NOT NULL)t1,
(SELECT COUNT(*)f1 FROM {table})t2
;

分析(某字段各项占比)

SELECT
t1.f2 fullname,
t1.f1 amount,
t1.f1/t2.f1 proportion
FROM
(SELECT COUNT(*)f1,{field} f2 FROM {table} GROUP BY {field})t1,
(SELECT COUNT(*)f1 FROM {table})t2
ORDER BY amount DESC
;

取样

顺序采样

-- 前n行
SELECT * FROM {table} WHERE ROWNUM<=5;
-- 第m~n行
SELECT * FROM (SELECT ROWNUM a,t.* FROM {table} t WHERE ROWNUM<=5)WHERE a>=3;
-- 尾行
SELECT * FROM (SELECT ROWNUM a,t.* FROM {table} t)WHERE a=(SELECT COUNT(*) FROM {table});

随机采样

SELECT * FROM {table} SAMPLE(1) WHERE ROWNUM<=10;

数据标注界面设计

文本分类

ID 文本 算法结果 是否正确 正确结果 备注 评标人
1 全球疫情升级!多国确诊病例攀升,美股道指暴跌超千点 财经 F 疫情 小基基
2 世界卫生组织与世界旅游组织呼吁:团结是预防病毒扩散唯一途径 疫情 T 小基基
9527 淘宝经济暖报:回暖从舌尖开始 财经 T 小贤贤

命名实体识别

ID 全文 上下文 实体 是否正确 备注 评标人
1 买小米机,送了袋小米和苹果 小米 小米 T
送了袋小米和苹果 小米 F 不是手机
送了袋小米和苹果 苹果 F 不是手机
2 买华为送苹果机 买华为送苹果 苹果 T
9527 三星电池炸了 三星电池炸了 三星 T

长文本

全文 关键句 算法结果 是否正确 备注 评标人
买小米机,送了袋小米和苹果 小米 手机 T
送了袋小米和苹果 不是手机
送了袋小米和苹果 不是手机
上一篇                                                                                                        下一篇

踩过的坑

  • 多进程写入数据库后,会乱序。因此读出的时候,要保证原子性及有序性
  • 数据量(随时间)不断增长,写SQL时要加上(时间)条件,从而可把控结果总数
  • 数据标注人员不宜过多,越多人越难统一标准

猜你喜欢

转载自blog.csdn.net/Yellow_python/article/details/101558173