带你了解NLP的词嵌入
摘要:今天带领大家学习自然语言处理中的词嵌入的内容。
本文分享自华为云社区《【MindSpore易点通】深度学习系列-词嵌入》,作者:Skytier。
1 特征表示
在自然语言处理中,有一个很关键的概念是词嵌入,这是语言表示的一种方式,可以让算法自动的理解一些同类别的词,比如苹果、橘子,比如袜子、手套。
![](https://pic1.zhimg.com/80/v2-a3fff56d01d1168cb3ed7ef27c3b3580_720w.webp)
![](https://pic2.zhimg.com/80/v2-e13f1ac3cdb810407f22e2e191d53779_720w.webp)
比如我们通常会说:“I want a glass of orange juice.”但如果算法并不知道apple和orange的类似性(这两个one-hot向量的内积是0),那么当其遇到“I want a glass of apple __”时,并不知道这里也应该填写 juice。
如果用特征化的表示来表示库里的每个词,学习它们的特征或者数值。
![](https://pic2.zhimg.com/80/v2-ada30e6c3708eeebe2b76ed4fa735591_720w.webp)
![](https://pic1.zhimg.com/80/v2-12c74919f415106d4f39e02123b3b2f4_720w.webp)
![](https://pic2.zhimg.com/80/v2-4bec65e2960dbba8757acc832f59d3c9_720w.webp)
这样我们就可以选用t-SNE算法来对特征向量可视化,通过观察这种词嵌入的表示方法,最终同类别的单词会聚集在一块,词嵌入算法对于相近的概念,学到的特征也比较类似。
2 词嵌入的使用
参考案例——句中找人名:Jack Li is a teacher.
![](https://pic1.zhimg.com/80/v2-0d66f4c12c767c53deeeca1894bbac04_720w.webp)
使用词嵌入作为输入训练好的模型,如果看到一个新的输入:“Jack Li is a farmer.”因为知道teacher和farmer很相近,那么算法很容易就知道Jack Li是一个人的名字。同时,如果遇到不太常见的单词,比如:Jack Li is a cultivator.(假设训练集里没有cultivator这个单词),但是词嵌入的算法通过考察大量的无标签文本,会发现farmer、teacher、cultivator相近,把它们都聚集在一块。这样一来即使只有一个很小的训练集,但是使用迁移学习,把从大量的无标签文本中学习到的知识迁移到一个任务中——比如少量标记的训练数据集的命名实体识别任务。
如何用词嵌入做迁移学习的步骤:
1.先从大量的文本集中学习词嵌入。
2.用这些词嵌入模型把它迁移到新的只有少量标注训练集的任务中,比如说用300维的词嵌入来表示单词,这样就可以用更低维度的特征向量代替原来的10000维的one-hot向量。
3.当在新的任务上训练模型时,只有少量的标记数据集,可以选择不进行微调,而是用新的数据调整词嵌入。
当你的任务的训练集相对较小时,词嵌入的作用最明显,所以它广泛用于NLP领域,但是其对于一些语言模型和机器翻译并不适用。
3 类比推理
词嵌入有一个非常强大的特性就是可以帮助实现类比推理。比如从性别这个特征上来说,如果man应该对应woman,那么算法可以推导出king对应queen。
![](https://pic1.zhimg.com/80/v2-0724e500c112aa53ff60f207f07af2f0_720w.webp)
![](https://pic3.zhimg.com/80/v2-f8b74227cb0832df0c18a6a51b0a88a6_720w.webp)
![](https://pic2.zhimg.com/80/v2-1fc0c2500b558d0cc23597ea4e661179_720w.webp)
![](https://pic3.zhimg.com/80/v2-7baecf70bd0bc4f18fe8c9e0e378fd5e_720w.webp)
最常用的相似度函数是余弦相似度,假如在向量u和v之间定义相似度:
![](https://pic1.zhimg.com/80/v2-7a28e2ba67e7eb886def5685d19e4638_720w.webp)
如果u和v非常相似,那么它们的内积将会很大,那么该式就是u和v的夹角Φ的余弦值,实际就是计算两向量夹角Φ角的余弦。夹角为0度时,余弦相似度就是1,当夹角是90度角时余弦相似度就是0,当夹角是180度时相似度等于-1,因此角度越小,两个向量越相似。
![](https://pic1.zhimg.com/80/v2-098d0e98ed4fba2d338ecb216e617708_720w.webp)
相关文章
- 在线客服系统源码开发实战总结:gin框架模板渲染html页面
- 在线客服系统源码开发实战总结:H5 Notifications浏览器桌面通知
- wordpress独立站宝塔面板配置HTTPS教程
- 宝塔面板出现“require(): open_basedir restriction in effect. ”的解决方法
- elementui的loading加载页面的使用方式
- javascript监听页面关闭事件
- 【小程序】微信小程序开发在app.json中新建页面时报[ WXML 文件编译错误] (env: Windows,mp,1.06.2206090; lib: 2.25.0)
- 【Linux】宝塔面板设置MySQL慢查询日志,未走索引日志
- 客服系统搭建教程_宝塔面板下安装使用方式_可对接公众号_支持APP/h5多租户运营
- [宝塔面板] 客服系统适配宝塔面板,实现软件商店=>导入项目=>一键部署私有云在线客服系统
- [html] 同一页面的跳转,锚文本的使用方法
- [PHP] 解决宝塔面板运行php项目 pcntl_fork() has been disabled for security reasons
- 论文解读丨无参数的注意力模块SimAm
- 华为云企业级Redis揭秘第15期:Redis为什么需要强一致?
- 带你了解AKG正反向算子注册+关联流程
- 软件开发除了23种设计模式,还有7个开发原则需要了解
- Sechunter移动应用隐私合规检测详解
- 数仓如何限制临时数据文件下盘量
- 关于HTTPS认证,这里解决你所有疑惑
- 分析师机构发布中国低代码平台现状分析报告,华为云AppCube为数字化转型加码