GloVe 与 FastText 嵌入
全局共现统计、基于子词的 FastText,以及加载预训练嵌入。
GloVe 与 FastText 嵌入 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
超越 Word2Vec
Word2Vec 从局部语境窗口中学习。另外两种有影响力的嵌入采用了不同的方法:GloVe 使用全局统计信息,而 FastText 使用字符片段。
GloVe 是什么
GloVe(全局向量)基于全局共现矩阵进行训练:统计每对词在整个语料库中共同出现的频率,而不仅仅是局部窗口中的频率。
全局统计信息的作用
通过分解完整的共现矩阵,GloVe 可以捕捉整个语料库范围内的词语关系和比例,并且在类比任务中通常能生成高质量的向量,其效果可媲美甚至超过 Word2Vec。
加载预训练向量
训练嵌入需要海量语料库,因此我们通常会下载预训练向量。gensim.downloader 只需一行代码就能获取 GloVe 向量等热门模型。
import gensim.downloader as api
glove = api.load("glove-wiki-gigaword-100")
print(glove["computer"].shape) # (100,)使用预训练 GloVe
加载后,GloVe 向量支持与 Word2Vec 相同的操作:相似度计算和类比运算。
import gensim.downloader as api
glove = api.load("glove-wiki-gigaword-100")
print(glove.most_similar("king", topn=3))
print(glove.most_similar(positive=["king", "woman"], negative=["man"], topn=1))词汇表外问题
Word2Vec 和 GloVe 只会为训练时见过的词分配向量。新词或拼写错误的词(词汇表外词,OOV)没有对应向量,这是处理杂乱文本时的一个实际限制。
FastText 是什么
FastText 通过将每个词表示为字符 n 元语法的集合来解决 OOV 问题。单词 "playing" 包含 "pla"、"lay"、"ing" 等片段,因此会与相关词共享结构。
字符 n 元语法的作用
由于词向量由词的子片段构成,FastText 可以根据一个未见过的词的 n 元语法构造其向量。它还能够捕捉词法形态,从而有助于处理前缀、后缀和稀有词。
训练 FastText
gensim 提供了类似 Word2Vec 的 FastText 接口。min_n 和 max_n 参数用于设置字符 n 元语法的范围。
from gensim.models import FastText
model = FastText(
sentences,
vector_size=100,
window=5,
min_count=1,
min_n=3,
max_n=6,
)FastText 处理 OOV
即使某个词在训练中从未出现过,也能返回一个由其字符 n 元语法组合而成的向量。这是 FastText 相较于 Word2Vec 和 GloVe 的标志性优势。
from gensim.models import FastText
model = FastText(sentences, vector_size=100, min_n=3, max_n=6, min_count=1)
# works even if "catlike" was never in training
vec = model.wv["catlike"]选择嵌入
对于词汇表固定且文本规范的数据,请使用 GloVe 或 Word2Vec。对于形态丰富的语言、噪声较多的文本,或 OOV 词很常见的情况,请选择 FastText。在所有情况下,预训练向量都是很好的起点。
快速检查
测试您对嵌入的了解。
总结
总结:GloVe 从全局共现统计信息中学习;FastText 使用字符 n 元语法处理词汇表外词和词法形态。使用 gensim.downloader.load 加载预训练向量。二者都支持相似度计算和类比运算。对于噪声较多或形态丰富的文本,请选择 FastText;对于词汇表固定且文本规范的情况,请选择 GloVe/Word2Vec。
常见问题解答
「GloVe 与 FastText 嵌入」课时是免费的吗?
是的 — 「GloVe 与 FastText 嵌入」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「GloVe 与 FastText 嵌入」这节课中我会学到什么?
全局共现统计、基于子词的 FastText,以及加载预训练嵌入。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「GloVe 与 FastText 嵌入」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Word2Vec:Skip-gram 与 CBOW
- GloVe 与 FastText 嵌入
- 使用 BERT 进行文本分类
- 语义相似度与句子嵌入