文本表示
文本表示是将自然语言转换为计算机可以处理的数值形式的过程,是NLP的基础。本部分介绍经典的文本表示方法。
01One-Hot编码
One-Hot(独热编码)是最简单直观的文本表示方法,将每个词表示为一个稀疏向量。
One-Hot原理
假设词表大小为V,每个词被表示为一个V维向量,只有对应位置的元素为1,其余为0。
示例:词表 ["机器", "学习", "深度"]
机器 = [1, 0, 0]
学习 = [0, 1, 0]
深度 = [0, 0, 1]
使用场景
特点
- 优点:简单直观,稀疏表示,任意两词都不相似
- 缺点:维度灾难(词表大时维度高)、无法表达语义相似性
One-Hot编码适用于类别数量不多且类别之间没有语义关联的场景。 在NLP中,它常作为词向量表示的起点,但真正的语义表示需要更复杂的方法。
02TF-IDF
TF-IDF(词频-逆文档频率)是一种经典的文本特征提取方法,综合考虑词在文档中的重要性和全局分布。
TF-IDF原理
TF-IDF = TF(词频)× IDF(逆文档频率)
TF(词频)
词在文档中出现的次数:
TF(t,d) = t在文档d中出现的次数
IDF(逆文档频率)
词在多少文档中出现,越稀有IDF越高:
IDF(t) = log(总文档数 / 包含词t的文档数)
TF-IDF公式
TF-IDF(t,d) = TF(t,d) × IDF(t)
TF-IDF变体
TF变体
- Boolean TF:出现为1,未出现为0
- Log TF:TF = 1 + log(TF)
- Augmented TF:归一化避免长文档优势
IDF变体
- Smooth IDF:加1避免除零
- Probabilistic IDF:调整公式
TF-IDF应用场景
- 文档分类与聚类
- 信息检索与搜索引擎
- 关键词提取
- 作为机器学习模型的输入特征
03词袋模型
词袋模型(Bag of Words)是最简单的文本表示方法,忽略词序,只统计词频。
词袋模型原理
将文本表示为一个向量,每个维度对应词表中的一个词,值可以是词频或TF-IDF等。
示例
文档1:"机器学习很有意思"
文档2:"深度学习很有深度"
词表:[机器, 学习, 很, 有意思, 深度]
文档1向量:[1, 1, 1, 1, 0]
文档2向量:[0, 1, 1, 0, 2]
优缺点分析
优点
- 简单直观,易于实现和理解
- 计算效率高
- 可解释性强
缺点
- 忽略词序:"我打你"和"你打我"表示相同
- 维度灾难:词表大时向量维度高且稀疏
- 语义鸿沟:无法捕捉语义相似性
词袋模型的改进
- N-gram词袋:保留词组信息,如bigram"机器学习"
- TF-IDF权重:用TF-IDF替代词频
- 词向量平均:用词向量加权平均替代稀疏表示