面包屑图标 当前位置: 首页
AI资讯
热点详情

Python实现简单词嵌入:无第三方库底层代码解析

AI热点日报
AI热点日报时间:2026-05-30
热点解读

不依赖任何第三方库实现词嵌入(Word Embedding),本质上就是亲手编写词向量的完整训练流程——从文本清洗、词典构建,到生成上下文样本,再到定义前向传播与反向更新。其核心在于透彻理解 Skip‑gram 或 CBOW 的前向计算与梯度回传机制。下面我们用纯 Python(仅使用 math、r

不依赖任何第三方库实现词嵌入(Word Embedding),本质上就是亲手编写词向量的完整训练流程——从文本清洗、词典构建,到生成上下文样本,再到定义前向传播与反向更新。其核心在于透彻理解 Skip‑gram 或 CBOW 的前向计算与梯度回传机制。下面我们用纯 Python(仅使用 mathrandomcollections)搭建一个可运行的轻量级词嵌入模型,以 Skip‑gram + 负采样(Negative Sampling)为例。虽然无法处理大规模语料,但每个步骤都对应着 NLP 表征学习的核心动机,值得亲手走一遍。

1. 文本预处理与词汇表构建

第一步是将原始句子转换为整数索引序列,同时过滤低频词和停用词(可选,但通常能提升嵌入质量)。具体拆解如下:

  • 分词:按空格或简单标点切分,统一转为小写,丢弃空字符串;
  • 词频统计:使用 Counter 统计所有词的出现次数;
  • 词汇表构建:仅保留出现次数 ≥ min_count 的词,按频次从高到低排序;务必为 UNK(未登录词)预留索引 0;
  • 映射表:建立两个字典——word2idx(词→索引)和 idx2word(索引→词),后续所有查表操作均依赖它们。

2. 生成 Skip‑gram 训练样本

对于每个中心词,提取窗口内(例如左右各2个)的词作为正样本;负样本则依据词频分布按概率采样——这里有一个常用技巧:将一元分布的 3/4 次方作为平滑权重,使低频词也有机会被选中。

  • 遍历句子中的每个词(跳过窗口边界处的词),以它为中心,收集左右 window_size 内的词作为正样本;
  • 针对每个正样本,随机采样 n_neg 个负样本:预先计算每个词的采样概率(freq^(3/4) 后归一化),可采用轮盘赌或别名采样;简易版本直接使用 random.choices 并设置权重即可;
  • 每条样本存储为三元组 (center_idx, context_idx, label),正样本 label=1,负样本 label=0

3. 初始化与前向传播(Sigmoid + 点积)

需要维护两组向量:输入矩阵 W(尺寸 vocabulary_size × embedding_dim)和输出矩阵 W'(相同大小)。Skip‑gram 的做法是:从 W 中查询中心词得到向量 v_c,从 W' 中查询上下文词得到向量 v_w,计算两者点积 v_c ⋅ v_w,再通过 Sigmoid 得到概率值。

  • 初始化WW' 均赋值为小随机数,例如 uniform(-0.5/dim, 0.5/dim),以避免对称性导致向量趋同;
  • Sigmoid 手写实现def sigmoid(x): return 1 / (1 + math.exp(-max(-50, min(50, x))))——通过截断防止数值溢出;
  • 前向计算score = sum(v_c[i] * v_w[i] for i in range(dim)),然后 prob = sigmoid(score)

4. 手动反向传播与参数更新

损失函数选用二元交叉熵:L = −[y·log(p) + (1−y)·log(1−p)]。正样本时 y=1,梯度为 (p−1);负样本时 y=0,梯度为 p。依据该误差信号更新两组向量:

  • g = prob - label(即误差信号);
  • 更新中心词向量:W[center_idx][i] -= lr * g * W_prime[context_idx][i]
  • 更新上下文词向量:W_prime[context_idx][i] -= lr * g * W[center_idx][i]
  • 学习率 lr 建议初始值设为 0.025,并随训练步数线性衰减。

整个过程不依赖 NumPy 或 PyTorch,全部使用原生 Python 列表与循环手动实现。虽然效率较低——仅适合小语料或教学演示——但优点在于清晰展现了词向量如何通过局部共现被“拉近”,以及负采样如何绕过 softmax 的计算瓶颈。归根结底,核心不在于代码的简洁性,而在于每一步都映射了“分布假设”的数学本质。

热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:Python实现简单词嵌入:无第三方库底层代码解析要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
来源:https://www.php.cn/faq/2553795.html?uid=1503042
Python

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关热点
AI热点2026-07-14 19:48
面壁智能CTO谈端侧AI:从打字机到大模型的进化突围

面壁智能聚焦端侧AI,不拼参数大小,而是通过知识密度提升与模型风洞技术,将大模型压缩至手机、汽车等设备。其MiniCPM以2B参数超越同期8B对手。CTO曾国洋22岁主导训练中国首个大语言模型CPM-1。端侧AI追求“默契系统”,在用户开口前预判需求,已在吉利、上汽大众等车型落地应用。

AI热点2026-07-14 19:48
印度IT巨头HCL Tech投350亿卢比建50MW AI数据中心

印度IT巨头HCLTech投资最高350亿卢比建设AI数据中心,容量可扩展至50MW,提供从设计到运营的端到端服务,旨在满足政府及企业日益增长的算力需求,抢占印度快速增长的数据中心市场,并推动AI基础设施布局。

AI热点2026-07-14 19:48
小米具身智能机器人新工站双侧螺母上件成功率达98%

小米具身机器人在汽车工厂自攻螺母上件工站实现双侧作业成功率98%,接近人工水平。同时在新工站分别达到90%成功率,从单一操作拓展至多工站协同,验证了具身智能在复杂工业环境的落地能力。

AI热点2026-07-14 19:48
DeepSeek梁文锋身价360亿美元成AI新首富

全球AI行业正迎来新的财富格局,DeepSeek创始人梁文锋凭借其公司的迅猛发展,个人财富急剧膨胀,一举超越多位硅谷知名人物,成为全球AI公司领域的新首富。以下将详细解析其身价飙升背后的关键因素及公司发展历程。 一、身价飙升至360亿美元,超越多位AI大佬 根据最新彭博亿万富豪指数,DeepSeek

延伸阅读