天池-基于预训练任务的泛化能力改进-基于cleanlab的数据处理
背景
本次是基于先前的baseline进行改进,刚好看到推荐的改进思路有cleanlab对文本处理的改进,鉴于对现实的工作可能会有帮助,本篇会偏向于记录使用cleanlab进行文本处理
相关资料链接
cleanlab的简介
cleanlab的博客
cleanlab的开源git
基于cleanlab的介绍
该开源框架涉及到了 置信学习的概念,用以筛选掉数据中错误的样本。根据官方给出的样例,目前是cv,nlp以及规范型的数据均可以使用。
(个人理解,对于置信学习,是根据模型的评估,得到预测概率与实际预测差距较大的样本)
- 工具的使用
现在该工具已经开源,可以直接pip下载进行使用。
pip install cleanlab
配合tensorflow_hub使用cleanlab
相关资料
秋风梧的知乎大佬
基于bert的模型,建立一个基础的cleanlab对文本分类的数据筛选
环境:
pip install tensorflow==2.0
pip install tensorflow_hub
pip install bert-for-tf2
pip install sklearn
(若下载速度太慢,可以使用清华镜像,在后加上-i http://mirrors.aliyun.com/pypi/simple/ 即可)
demo
1、读取数据
import pandas as pd
df = pd.read_csv('tianchi_datasets/TNEWS/train.csv', error_bad_lines=False, sep = '\s',
names=['index', 'text', 'label'])
print(df.head())
对应的数据结果:
2、加载Bert的分词器
import tensorflow_hub as hub
import tensorflow as tf
import tensorflow_hub as hub
from tensorflow.keras import layers
import bert
BertTokenizer = bert.bert_tokenization.FullTokenizer
bert_layer = hub.KerasLayer("bert_zh_L-12_H-768_A-12_2",
trainable=False)
vocabulary_file = bert_layer.resolved_object.vocab_file.asset_path.numpy()
to_lower_case = bert_layer.resolved_object.do_lower_case.numpy()
tokenizer = BertTokenizer(vocabulary_file, to_lower_case)
print(tokenizer.tokenize("美商务部拟限制联发科等向华为供货"))