1. 文本表示:机器理解语言的基石
当我在2013年第一次接触自然语言处理项目时,面对的第一个技术难题就是如何让计算机"读懂"用户评论。当时团队尝试用传统的独热编码方法,结果模型完全无法区分"产品很好用"和"产品不好用"这两种评论。这段经历让我深刻认识到,文本表示技术是NLP领域最基础也最关键的一环。
文本表示的本质,是将人类语言中的词汇、句子和篇章转化为计算机可以处理的数学形式。这个过程就像为机器配备了一个特殊的"翻译器",把抽象的语义概念映射到具体的数值空间。经过十多年的发展,这项技术已经从最初的简单编码演变为能够捕捉深层语义关系的复杂模型。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从词到向量:文本表示的演进之路
2.1 离散表示时代
早期的文本表示方法可以追溯到上世纪50年代。当时最主流的技术是独热编码(One-hot Encoding),这种方法为词汇表中的每个词分配一个唯一的二进制向量。例如在一个包含5000个词的词汇表中,"苹果"可能被表示为[0,0,1,0,...,0],其中只有第三位是1。
我在2015年参与的一个电商分类项目就采用了这种方法。我们很快发现了几个严重问题:
- 维度灾难:当词汇量增长到10万时,每个词向量的维度也随之膨胀到10万维
- 语义缺失:"苹果"和"橙子"的向量点积永远为0,无法反映它们都是水果的事实
- 数据稀疏:实际文本中大部分维度都是0,导致模型训练效率极低
实际经验:在处理小规模分类任务时,可以配合TF-IDF加权来缓解独热编码的部分缺陷。但对于现代NLP应用,这种方法已经基本被淘汰。
2.2 分布式表示革命
2003年,Bengio团队提出的神经网络语言模型开创了分布式表示的新纪元。这种表示方法的核心思想是:一个词的语义可以由其上下文决定。我在2016年首次将Word2Vec应用到客户评论分析中,效果令人惊艳。
以经典的Skip-gram模型为例,其训练过程可以分解为:
- 构建上下文窗口(通常取5-10个词)
- 定义目标函数:最大化当前词预测上下文的概率
- 通过负采样优化计算效率
python复制# Word2Vec简单实现示例
from gensim.models import Word2Vec
sentences = [["cat", "say", "meow"], [
