1. 文本向量化的前世今生
第一次接触NLP项目时,我被一个看似简单的问题难住了:计算机怎么认识"苹果"这个词?在人类眼中这是个具体的水果形象,但对机器而言,它只是两个汉字组合。这就是文本向量化要解决的核心问题——把人类语言转化为机器可计算的数值形式。
2008年我在处理电商评论分类时,最原始的方案是直接用ASCII码表示字符。很快发现这完全无法捕捉语义,于是开始研究更先进的表示方法。从One-Hot到Word2Vec,再到后来的BERT,文本向量化技术的发展史就是NLP进步的缩影。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. One-Hot编码:简单粗暴的起点
2.1 基本原理与实现
One-Hot就像给每个词分配一个专属座位。假设词表有5万个词,"苹果"的表示就是在第42号位置放1,其他49999个位置都是0。用Python实现起来非常简单:
python复制from sklearn.preprocessing import OneHotEncoder
import numpy as np
vocab = ["苹果", "香蕉", "橙子"] # 示例词表
encoder = OneHotEncoder(sparse=False)
one_hot = encoder.fit_transform(np.array(vocab).reshape(-1,1))
print(f"'苹果'的编码:{one_hot[0]}")
# 输出:[1. 0. 0.]
2.2 致命缺陷与应对策略
2010年我参与新闻分类项目时,用One-Hot遇到三个头疼问题:
- 维度灾难:5万词的词表意味着每个词都是5万维向量
- 语义鸿沟:"苹果"和"水果"的相似度与"苹果"和"特斯拉"完全相同
- 数据稀疏:99.9%的元素都是0,浪费存储和算力
当时的解决方案是:
- 先进行词性标注和停用词过滤,压缩词表到1万词以内
- 搭配TF-IDF加权,至少让频次信息能被利用
- 使用PCA降维到500维左右
实战经验:当词表超过2万时,建议直接考虑其他向量化方法,One-Hot更适合教学演示或微型项目。
3. WordEmbedding的革命性突破
3.1 分布式表示的核心思想
2013年第一次接触Word2Vec时,我被
