0Pricing
Learn AI with Python · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Word2Vec:Skip-gram 与 CBOW
  2. GloVe 与 FastText 嵌入
  3. 使用 BERT 进行文本分类
  4. 语义相似度与句子嵌入
← 返回 Learn AI with Python