自然语言处理(NLP)神经网络的数据预处理步骤

1. 文本清理(Text Cleaning)

目的:去除文本中的噪音和无关内容,确保输入数据的质量和一致性。

方法:

  • 去除标点符号:删除文本中的标点符号(视任务需求,某些标点符号可能保留)。
  • 转换大小写:将所有文本转换为小写,减少同一个词的不同形式(如"Cat"和"cat")带来的影响。
  • 去除停用词:删除常见的停用词(如"the"、"is"、"and"),这些词对语义贡献较小。
  • 删除空白和特殊字符:去除多余的空格、换行符和特殊字符。

2. 标记化(Tokenization)

目的:将文本划分为单词或子词单位(tokens),这些单位是模型的基本输入。

方法:

  • 单词级标记化:将文本分割成单词,如"Natural language processing"变成"Natural", "language", "processing"。
  • 子词标记化:使用BPE(Byte Pair Encoding)或WordPiece等算法,将单词进一步分解成更小的单元,处理未见过的单词更灵活。

3. 词汇表构建(Vocabulary Building)

目的:创建一个词汇表,将所有标记化后的单位映射到唯一的索引。

方法:

  • 词汇表大小:设定一个固定的词汇表大小,如10,000个词,词频较低的词汇可以统一映射为特殊标记(如<UNK>)。
  • 包含特殊标记:词汇表中通常包含特殊标记,如<PAD>(填充)、<SOS>(序列开始)、<EOS>(序列结束)。

4. 词嵌入(Word Embedding)

目的:将离散的词汇转换为连续的向量表示,捕捉词汇间的语义关系。

方法:

  • 预训练词嵌入:使用预训练的词嵌入模型,如Word2Vec、GloVe、FastText等,将词汇映射到高维向量。
  • 自训练词嵌入:在模型训练过程中,同时学习词汇的向量表示。

5. 序列填充和截断(Padding and Truncation)

目的:确保所有输入序列长度一致,便于批量处理。

方法:

  • 填充:对较短的序列在末尾添加<PAD>标记,扩展到固定长度。
  • 截断:对超过固定长度的序列进行截断,只保留前面的部分。

6. 生成注意力掩码(Attention Masking)

目的:在处理可变长度输入时,忽略填充部分,确保模型只关注有效部分。

方法:创建一个与输入序列长度相同的掩码,填充部分为0,有效部分为1,指导模型计算注意力权重时忽略填充部分。

7. 词干提取和词形还原(Stemming and Lemmatization)

目的:将单词还原到其基本形式,减少词形变化的影响。

方法:

  • 词干提取:通过简单规则去掉单词的词尾,使其变成词干形式,如"running"变成"run"。
  • 词形还原:使用词典和语言学规则,将单词还原到其基本形式,如"better"还原为"good"。

8. 字符级预处理(Character-level Processing)

目的:在处理细粒度任务(如拼写纠错、生成任务)时,直接处理字符级别的信息。

方法:将文本分割成单个字符,构建字符级词汇表,并生成字符序列。

相关推荐
zx_7414848113 天前
【计算机视觉入门】基于 dlib 与 OpenCV 的三大案例:人脸检测、年龄性别预测与疲劳检测
opencv·计算机视觉·dnn
中科院提名者1 个月前
深度学习语音增强架构演进的具体原因,从DNN开始
深度学习·架构·dnn
在学了加油1 个月前
阿尔茨海默病诊断(优化特征选择版)
人工智能·python·dnn
zhy295632 个月前
【DNN】Llama 3.2 1B模型LORA微调与QAIRT部署
人工智能·dnn·llama
萌动的小火苗2 个月前
深度神经网络中,梯度消失和梯度爆炸的根本原因是什么?有哪些解决方法?【文末含面试万能总结】
人工智能·python·深度学习·神经网络·dnn
Ivanqhz3 个月前
DRN(深度强化学习推荐网络)
人工智能·线性代数·机器学习·矩阵·dnn
Ivanqhz3 个月前
注意力机制
线性代数·算法·矩阵·哈希算法·dnn
zhy295634 个月前
【DNN】基于llama.cpp的Qwen3-0.6B量化部署微调
人工智能·lora·dnn·llama·qwen3
Together_CZ4 个月前
OpenCV 5.0 重磅发布:全面技术深度解析
图像处理·人工智能·opencv·计算机视觉·llm·dnn·推理
进击切图仔4 个月前
确保深度神经网络在训练过程中的数值稳定性
人工智能·机器学习·dnn