当前位置: 首页 > web >正文

机器学习知识自然语言处理入门

一、引言:当文字遇上数学 —— 自然语言的数字化革命

在自然语言处理(NLP)的世界里,计算机要理解人类语言,首先需要将文字转化为数学向量。早期的 One-Hot 编码如同给每个词语分配一个唯一的 “房间号”,例如 “我爱北京天安门” 分词后,每个词用一个仅含一个 1 的高维向量表示。但这种方法如同用庞大的书架存放稀疏的书籍 —— 维度爆炸、语义割裂,无法捕捉词语间的潜在联系。

于是,** 分布式表示(Distributed Representation)** 应运而生,它如同为词语打造一张 “语义地图”,每个词被映射为低维空间中的一个点,相近的点代表语义相关的词。Word2Vec 正是这一思想的经典实现,它用简洁的神经网络架构,让计算机学会 “理解” 词语的隐含关系,甚至能完成 “king - man + woman = queen” 这样的语义推理。

二、Word2Vec:让词语在向量空间中 “对话”
2.1 从 One-Hot 到词向量:稀疏到稠密的跨越

One-Hot 编码的缺陷在于 “维度诅咒”:若词表有 N 个词,每个向量需 N 维,且仅有一个 1。而 Word2Vec 通过训练,将词语映射到d 维稠密向量(d 通常为 50-300),每个维度对应一种潜在语义特征(如 “性别”“地点”“情感” 等)。例如 “国王” 和 “女王” 可能在 “权力” 维度值高,在 “性别” 维度值相反。

2.2 模型架构:简化的神经网络魔法

Word2Vec 本质是一个两层神经网络,有两种经典模式:

  • CBOW(连续词袋模型):用上下文词语预测目标词(如用 “I” 和 “learning” 预测 “deep”)。
  • Skip-gram:用目标词预测上下文(如用 “deep” 预测 “I” 和 “learning”)。

以 CBOW 为例,模型结构如下:

  1. 输入层:上下文词语的 One-Hot 向量(假设词表大小 V,向量维度 V)。
  2. 隐藏层:权重矩阵 W(V×d)与输入向量相乘,压缩为 d 维词向量。
  3. 输出层:通过 Softmax 计算目标词的概率(矩阵 W'(d×V)将隐藏层映射回 V 维空间)。
2.3 数据生成:滑动窗口里的语义世界

训练数据来自大规模文本(如维基百科),通过滑动窗口提取上下文 - 目标词对。例如句子 “I like deep learning and NLP”,窗口大小设为 3 时,可生成样本:

  • 上下文 [“I”, “like”] → 目标词 “deep”
  • 上下文 [“like”, “deep”] → 目标词 “learning”
    ...
    滑动窗口遍历全文后,形成大量训练样本。为解决 Softmax 计算量过大的问题,引入负采样(Negative Sampling):对每个正样本(真实上下文 - 目标词对),随机采样若干负样本(非目标词),将多分类问题转化为二分类,大幅提升训练效率。
三、训练 Word2Vec:让机器学会 “猜词”

训练的核心是通过反向传播优化权重矩阵 W 和 W',使得预测目标词的概率最大化。过程可简化为:

  1. 初始化:随机初始化词向量矩阵。
  2. 前向传播:根据输入上下文计算目标词概率。
  3. 计算损失:用交叉熵衡量预测与真实标签的差距。
  4. 反向传播:更新权重,降低损失。

训练完成后,每个词语对应隐藏层的权重向量即为其词向量。这些向量不仅能通过余弦相似度衡量词语相关性(如 “猫” 与 “狗” 接近),还能通过向量运算发现语义规律,如 “中国” - “北京” + “巴黎” ≈ “法国”。

四、Word2Vec 的优缺点:通用但不完美的语义引擎

优点

  • 高效性:相比传统 Embedding,更低的维度和更快的训练速度。
  • 语义关联性:能捕捉词语间的类比关系(如 “男人 - 女人” 对应 “国王 - 女王”)。
  • 通用性:可迁移至多种 NLP 任务(如文本分类、机器翻译)。

缺点

  • 多义词困境:一个词对应一个向量,无法区分 “bank(银行 / 河岸)” 在不同语境的含义。
  • 静态局限性:词向量固定,无法针对特定任务动态调整(如情感分析中 “棒” 的褒义强度)。
五、实战:用 Word2Vec 生成古诗
5.1 数据准备:构建诗词语料库

收集唐诗、宋词等古典文本,预处理步骤:

  • 分词(保留单字,因古诗以字为基本单位)。
  • 清洗(去除标点、特殊符号)。
  • 构建词表(统计高频字,过滤生僻字)。
5.2 训练诗词专用词向量

调整 Word2Vec 参数:

  • 窗口大小设为 2-5(捕捉近邻字的语义关联,如 “床前”“明月”)。
  • 向量维度设为 100-200(平衡语义表达与计算效率)。
  • 负采样数设为 5-10(增加训练难度,提升向量质量)。

训练完成后,“月”“夜”“酒” 等字的向量应在语义空间中接近,而 “江”“河”“湖” 形成地理相关的簇。

5.3 结合语言模型生成诗句

Word2Vec 仅提供词向量,生成古诗需结合序列模型(如 RNN/LSTM):

  1. 编码层:将输入字转换为 Word2Vec 向量。
  2. 隐藏层:RNN 捕捉上下文依赖,输出隐藏状态。
  3. 解码层:通过 Softmax 预测下一个字的概率,采样生成诗句。

示例代码框架(伪代码):

python

# 假设已训练好word2vec模型和RNN模型  
def generate_poem(seed_word, length=4):  poem = [seed_word]  for _ in range(length):  # 编码当前序列  vecs = [word2vec[word] for word in poem]  hidden_state = rnn(vecs)  # 预测下一字  next_word = softmax(hidden_state).sample()  poem.append(next_word)  return ''.join(poem)  # 生成示例:以“春”开头的五言绝句  
print(generate_poem('春', 20))  # 输出类似“春眠不觉晓,处处闻啼鸟...”的诗句  

六、结语:从词向量到认知智能的起点

Word2Vec 如同打开自然语言理解的第一扇窗,用简单的架构揭示了语言的数学本质。尽管它存在局限,但作为后续预训练模型(如 BERT、GPT)的基石,其思想深远影响着 NLP 的发展。从古诗生成到智能对话,词向量始终是连接人类语言与机器智慧的桥梁。

思考延伸:如何用 Word2Vec 分析不同诗人的写作风格?多语言场景下,如何让不同语言的词向量 “对话”?欢迎在评论区分享你的想法!

参考资料

  • 《Word2Vec Parameter Learning Explained》(Tomas Mikolov et al.)
  • 《自然语言处理入门》(何晗)
  • Word2Vec 官方实现:gensim 库
http://www.xdnf.cn/news/6788.html

相关文章:

  • allure报告自定义logo和名称
  • 什么是SMBus
  • 医疗机械中丝杆支撑座有什么特殊要求?
  • 前端精度问题全解析:用“挖掘机”快速“填平精度坑”的完美解决方案
  • 支付宝授权登录
  • ROS2学习(4)------ROS2工作空间介绍
  • Vue3基础学习(中)
  • 高标准农田灌区信息化赋能粮食产能提升
  • 二维数组以及C99中的变长数组(如何在VS2022中使用苹果的clang编译器)
  • 智慧灌区信息化节水灌溉系统解决方案
  • 基于 nvitop+Prometheus+Grafana 的物理资源与 VLLM 引擎服务监控方案
  • 【Python】EAFP?请求原谅比请求允许容易?
  • 小白学编程之——深入理解Java线程的完整生命周期
  • 研华服务器ASMB-825主板无法识别PCIE-USB卡(笔记本)
  • 5.10品牌日|电商院徐一帆解读:中国企业如何迈向全球品牌
  • 根据用户ID获取所有子节点数据或是上级直属节点数据
  • DiT中的 Adaptive Layer Normalization (adaLN) 讲解
  • 代码随想录算法训练营 Day48 单调栈Ⅱ 接雨水Like
  • 第三十三节:特征检测与描述-Shi-Tomasi 角点检测
  • 【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑
  • 基于matlab的D2D 功率控制仿真
  • 【Boost搜索引擎】构建Boost站内搜索引擎实践
  • Tor推出Oniux新工具:为Linux应用提供网络流量匿名化
  • 将 Element UI 表格元素导出为 Excel 文件(处理了多级表头和固定列导出的问题)
  • DAY 28 类的定义
  • 安全生产调度管理系统的核心功能模块
  • 数学复习笔记 15
  • Ubuntu安装Nginx详细示例
  • mobile预览
  • 初识仓颉编程语言:高效、简洁与创新的编程选择