在文本分类任务中,数据清洗是决定模型性能的关键环节。本文分享几个实用的数据清洗技巧。
1. 去除噪声文本
首先需要识别并去除明显无效的文本数据。例如,纯数字、特殊符号过多或长度异常的文本。
import re
import pandas as pd
def clean_text(text):
# 去除纯数字和特殊字符过多的文本
if len(re.findall(r'[a-zA-Z]', text)) < 2 or len(re.findall(r'[^\w\s]', text)) > len(text)*0.5:
return None
return text.strip()
df['cleaned_text'] = df['text'].apply(clean_text)
2. 标准化文本格式
统一文本格式有助于模型学习。包括去除多余空格、统一大小写等。
import re
def normalize_text(text):
# 去除多余空格
text = re.sub(r'\s+', ' ', text)
# 统一大小写
text = text.lower()
return text.strip()
3. 处理类别不平衡
使用过采样或欠采样技术平衡数据分布。
from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
smote = SMOTE(random_state=42)
X_train_resampled, y_train_resampled = smote.fit_resample(X_train, y_train)
4. 去除停用词和低频词
降低维度,提高训练效率。
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(stop_words='english', min_df=2)
X = vectorizer.fit_transform(df['cleaned_text'])
以上方法可有效提升文本分类模型的准确率和鲁棒性。

讨论