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

news2025/5/17 19:10:47
一、引言:当文字遇上数学 —— 自然语言的数字化革命

在自然语言处理(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.coloradmin.cn/o/2377914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库——支持远程IP访问的设置方法总结

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实…

Pageassist安装(ollama+deepseek-r1)

page-assist网站:https://github.com/n4ze3m/page-assist 首先电脑配置node.js,管理员打开命令窗口输入下面命令下载bun npm install -g buncd 到你想要安装page-assist的地方(推荐桌面) 输入下列命令 git clone https://gith…

2025年渗透测试面试题总结-安恒[实习]安全服务工程师(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 安恒[实习]安全服务工程师 1. SQLMap爆出当前库名的参数是什么? 2. Nmap探测系统的参数&am…

五月份嵌入式面试总结

目录 1、札记 1.1、芯片的bring up 主要做哪些工作: 2、Linux驱动八股文 中断与同步互斥 2.1.1 内核同步互斥的几种方式 2.1.2 互斥锁和自旋锁的区别 2.1.3 spin_lock 和 spin_lock_irqsave 的区别 2.1.4 进程上下文和中断上下文有什么区别 2.1.5 进行上下…

数据库行业竞争加剧,MySQL 9.3.0 企业版开始支持个人下载

最新发现,Oracle 官方网站放开了 MySQL 9.3.0 企业版下载链接,个人用户也可以免费下载,不过只能用于学习、开发或者原型测试,不能用于生产环境。 通常我们都是下载 MySQL 社区版,不过 MySQL 企业版可以支持更多高级功能…

Tcping详细使用教程

Tcping详细使用教程 下载地址 https://download.elifulkerson.com/files/tcping/0.39/在windows环境下安装tcping 在以上的下载地中找到exe可执行文件,其中tcping.exe适用于32位Windows系统,tcping64.exe适用于64位Windows操作系统。 其实tcping是个…

【GAN网络入门系列】一,手写字MINST图片生成

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 博主简介:努力学习的22级本科生一枚 🌟​;探索AI算法,C,go语言的世界;在迷茫中寻找光芒…

ubuntu22鼠键失灵恢复记录笔记chatgpt解决

ChatGPT 说: 你提到“Ubuntu 22 鼠键失灵”,这个问题可能涉及以下几方面: 🧭 先确认问题 是鼠标问题还是键盘问题,还是触控板? “鼠键”一般理解为“鼠标键”,请确认你是指鼠标左键/右键失灵&a…

智能呼入:云蝠大模型赋能政府热线

政府热线作为连接政府与民众的重要桥梁,提升智能化水平,成为政府热线亟待解决的问题。 大模型呼入 大模型呼入技术基于先进的自然语言处理和机器学习算法,能够实现对海量语音数据的处理和理解。通过构建大规模的语言模型,系统可…

STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析

知识点1【TRGO的介绍】 1、TRGO的概述 TRGO:Trigger Output(触发输出),是定时器的一种功能。 它可以作为外设的启动信号,比如ADC转换,DAC输出,DMA请求等。 对于ADC来说,可以通过…

(1-4)Java Object类、Final、注解、设计模式、抽象类、接口、内部类

目录 1. Object类 1.1 equals 1.2 toString() 2.final关键字 3.注解 4. 设计模式 4.1 单例模式 4.1.1 饿汉式 4.1.3 饿汉式 VS 懒汉式 5. 抽象类&抽象方法 6. 接口 7.内部类 7.1 成员内部类 7.2 静态内部类 7.3 方法内部类 7.4 匿名内…

在服务器上安装AlphaFold2遇到的问题(3)_cat: /usr/include/cudnn_version.h: 没有那个文件或目录

[rootlocalhost ~]# cat /usr/include/cudnn_version.h cat: /usr/include/cudnn_version.h: 没有那个文件或目录这个错误表明系统找不到 cudnn_version.h 头文件,说明 cuDNN 的开发文件(头文件)没有正确安装。以下是完整的解决方案&#xff…

实验-实现向量点积-RISC-V(计算机组成原理)

目录 一、实验内容 二、实验步骤 三、源代码 四、实现效果 五、实验环境 六、实验小结与思考 一、实验内容 首先,我们用一个简单的“向量点积”运算作为热身。你将拿到一个不完整的汇编代码“task2-向量点积”,我们的目标是按照C语言描述的功能&a…

描述性统计工具 - AxureMost 落葵网

描述性统计工具是用于汇总和分析数据,以更好地了解数据特征的工具1。以下是一些常见的描述性统计工具简介: 描述性统计工具 Excel 基本统计函数:提供了丰富的函数用于计算描述性统计量。例如,AVERAGE 函数用于计算平均值&#xf…

麒麟桌面系统文件保险箱快捷访问指南:让重要文件夹一键直达桌面!

往期文章链接:统信操作系统自定义快捷键配置音量调节功能指南 Hello,大家好啊,今天给大家带来一篇麒麟桌面操作系统上配置文件保险箱内文件夹桌面快捷方式的文章,欢迎大家分享点赞,点个在看和关注吧!在日常…

从硬件角度理解“Linux下一切皆文件“,详解用户级缓冲区

目录 前言 一、从硬件角度理解"Linux下一切皆文件" 从理解硬件是种“文件”到其他系统资源的抽象 二、缓冲区 1.缓冲区介绍 2.缓冲区的刷新策略 3.用户级缓冲区 这个用户级缓冲区在哪呢? 解释关于fork再加重定向“>”后数据会打印两份的原因 4.内核缓冲…

游戏站的几种形式

游戏站点的主要形式:单品游戏站、游戏盒子站与单类型游戏盒子站 随着互联网的普及和游戏产业的快速发展,游戏站点作为玩家获取游戏资源和信息的重要平台,呈现出多种形式。本文将分析三种常见的游戏站点形式:单品游戏站、游戏盒子站…

打造智能化军工软件工厂,破解版本管理难题

在数字化浪潮席卷全球的当下,军工行业正经历着前所未有的软件工业化转型。作为这一进程的核心支撑,软件工厂模式正在重塑军工领域的研发体系。然而,传统版本管理方式已难以适应现代军工软件研发的复杂需求,成为制约行业发展的关键…

SpringbBoot nginx代理获取用户真实IP

为了演示多级代理场景,我们分配了以下服务器资源: 10.1.9.98:充当客户端10.0.3.137:一级代理10.0.4.105:二级代理10.0.4.129:三级代理10.0.4.120:服务器端 各级代理配置 以下是各级代理的基本配…

allure报告自定义logo和名称

根据pytest框架,做自动化测试的时候,选择的是allure测试报告,这个报告是目前所有报告中功能最强大最好用的测试报告之一 我们在使用这个测试报告的时候,怎么样去把allure的logo和名称替换成自己公司或者自己的logo呢?…