1. 从文字到向量:自然语言处理的编码基础
在自然语言处理(NLP)领域,我们面临的首要挑战是如何让计算机理解人类语言。与图像和声音不同,文字本身是离散的符号系统,无法直接被数学模型处理。这就引出了自然语言处理中最基础也最关键的问题:如何将文字转化为数值表示?
1.1 独热编码的困境与局限
独热编码(One-hot Encoding)是最直观的文字表示方法。假设我们有一个包含5万个单词的词表,每个单词都会被表示为一个5万维的向量,其中只有对应单词的位置为1,其余全部为0。
这种表示方法存在三个致命缺陷:
- 语义盲区:所有单词之间的距离都相等,"猫"和"狗"(同为动物)的距离与"猫"和"云计算"的距离完全相同,这与人类对语言的理解背道而驰。
- 维度灾难:随着词表扩大,向量维度线性增长。处理百万级词表时,存储和计算都会变得极其低效。
- 泛化无能:无法处理词表外的生僻词或新词,缺乏灵活性和扩展性。
实际工程中,独热编码仅用于词表极小的特殊场景,如处理有限类别的分类标签。对于自然语言处理的主流应用,我们需要更智能的编码方案。
1.2 词嵌入的革命性突破
词嵌入(Word Embedding)技术彻底改变了这一局面。通过将单词映射到低维连续向量空间(通常50-300维),它不仅解决了维度灾难问题,更神奇地捕捉到了单词之间的语义关系。
词嵌入的训练基于"分布式假设":具有相似上下文的单词应该具有相似的含义。通过大量文本训练后,我们会发现:
- 向量空间中的"国王"-"男"+"女"≈"女王"
- "巴黎"-"法国"+"意大利"≈"罗马"
- 同义词聚集在同一区域,反义词位于对称位置
这种表示方法使计算机首次能够在语义层面理解和处理语言。2013年Google发布的Word2Vec和后续的GloVe等模型,都是这一思想的经典实现。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 序列建模:从简单到复杂的进化之路
自然语言本质上是时序数据,单词的顺序和上下文关系决定了语义。处理这种序列依赖关系,NLP领域经历了三次重要的技术迭代。
2.1 循环神经网络(RNN)的奠基
RNN通过引入记忆单元(hidden state)来保存历史信息,理论上可以处理任意长度的序列。其核心公式为:
code复制h_t = σ(W_hh·h_{t-
