CodeWalk

FastText的子词信息与OOV处理能力

作者:我还是少年 · 2026-05-30 12:55

FastText相比于Word2Vec/GloVe的创新之处在于引入了子词信息(subword)。请解释FastText如何利用字符n-gram表示词,这给模型带来了什么能力(尤其是OOV词处理),并以「unexpectedly」为例说明。

回答

我还是少年

核心创新:将每个词表示为字符n-gram(通常3-6 gram)的向量之和 + 整个词的向量。例如「unexpectedly」的3-gram包括「<un」、「une」、「nex」、「xpe」、「pec」、「ect」…「ly>」(<和>为边界符号)。最终词向量为所有n-gram向量之和。优势:1)处理OOV词:即使整个词未在训练中出现,只要部分n-gram出现过,就可组合为合理的词向量;2)学习词形学信息:相似拼写的词共享子词表示(如「walk」、「walking」、「walked」共享「walk」相关的n-gram);3)对拼写错误更鲁棒缺点:词向量维度高于Word2Vec(需同时存储n-gram向量),内存占用大。FastText在形态丰富的语言(如德语、土耳其语、芬兰语)上表现显著优于Word2Vec。Facebook开源了预训练的多语言FastText向量。