GloVe(全局词向量嵌入)

news2024/11/16 19:48:27

目录

GloVe简介

 1.使用预训练的GloVe的词向量(英文文本的用的最多)¶

2.自己训练Glove词向量

3. 知识点


 GloVe简介

GloVe的全称叫Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具, 是斯坦福大学在2014年提出的模型. 论文地址: https://aclanthology.org/D14-1162.pdf

 1.使用预训练的GloVe的词向量(英文文本的用的最多)¶

#导包
from gensim.test.utils import datapath, get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec
#构建glove预训练词向量文件
#必须是绝对路径
#  r 表示对表示其他含义的\进行处理,不用\\
glove_file = datapath(r'E:/ALOT/10_deep_learning/data/glove.6B.100d.txt')
#创建一个空的临时文件
# word2vec_glove_file = get_tmpfile('glove.6B.100d.txt')
worde2vec_glove_file = get_tmpfile('glove.6B.100d.word2vec.txt')
#将glove文件转化为临时文件
glove2word2vec(glove_file, worde2vec_glove_file)
#输出一个词向量的大小  (400000, 100)   400000个词向量,每个词向量是100维度的
[('microsoft', 0.7449405193328857),
 ('ibm', 0.6821643114089966),
 ('intel', 0.6778088212013245),
 ('software', 0.6775422692298889),
 ('dell', 0.6741442680358887),
 ('pc', 0.6678153276443481),
 ('macintosh', 0.6617538332939148),
 ('iphone', 0.6595612168312073),
 ('ipod', 0.6534676551818848),
 ('hewlett', 0.6516579389572144)]
model = KeyedVectors.load_word2vec_format(worde2vec_glove_file)  #加载转化成word2vec的glove文件

model.most_similar('apple'相似度较高的词)  #查找与'apple'相似度较高的词

model.most_similar(positive=['woman', 'king'], negative=['man'])  
#表示 'king'与['man']是相对应的,按照此对应方式找'woman'最相似的词
[('queen', 0.7698540687561035),
 ('monarch', 0.6843381524085999),
 ('throne', 0.6755736470222473),
 ('daughter', 0.6594556570053101),
 ('princess', 0.6520534157752991),
 ('prince', 0.6517034769058228),
 ('elizabeth', 0.6464517712593079),
 ('mother', 0.631171703338623),
 ('emperor', 0.6106470823287964),
 ('wife', 0.6098655462265015)]

2.自己训练Glove词向量

#在环境中安装glove包
!pip install glove-python-binary -i https://pypi.tuna.tsinghua.edu.cn/simple

!pip install pkuseg -i https://pypi.tuna.tsinghua.edu.cn/simple    #百度研发的分词库
#导包
import gensim
from glove import Glove
from glove import Corpus
import pkuseg
#分词
#传的是相对路径
#nthread=5 同时开多少个进程去分词
pkuseg.test(r'../data/不要等到毕业以后.txt', r'../data/不要等到毕业以后_分词.txt', nthread=5)



#准备数据集
with open(r'../data/不要等到毕业以后_分词.txt', 'r', encoding='utf-8') as f:
    #line.strip()是去掉每一行首尾的空格
    sentences = [line.replace('\n', '').split(' ') for line in f.readlines() if line.strip() != '']  #sentences是二维列表



sentences

#输出太长,部分展示:

[['迄今', '最', '实用', '的', '大学生', '人生', '规划', '工具书', '。'],
 ['这是', '一', '本', '用心', '打磨', '的', '书', '。'],
 ['完全', '不同于', '那些', '东拼西凑', '的', '大学生', '人生', '指南', ';'],
 ['没有', '理论', '的', '说教', ',', '只有', '苦口婆心', '地', '规劝', '。'],
 ['57',
  '条',
  '人生',
  '成长',
  '建议',
  '、',
  '57',
  '个',]
#创建语料库模型
corpus_model = Corpus()   #创建语料库的示例对象
#构建共现矩阵
corpus_model.fit(sentences, window=10)
corpus_model.save('../data/corpus_model')  #保存训练好的语料库模型,以后可以读取加载


corpus_model.dictionary  #查看词与索引的对应关系

输出部分展示:

{'迄今': 0,
 '最': 1,
 '实用': 2,
 '的': 3,
 '大学生': 4,
 '人生': 5,
 '规划': 6,
 '工具书': 7,
 '。': 8,
 '这是': 9,}
corpus_model.matrix.nnz  #查看共现矩阵中一共有多少个词

 16184

#训练
#no_components:构建的词向量的维度是多少,经验值300维度以下
glove = Glove(no_components=100, learning_rate=0.05)
#no_threads=1 同时开的进程
#verbose=True显示训练过程中的日志
glove.fit(corpus_model.matrix, epochs=10, no_threads=1, verbose=True)

 

Performing 10 training epochs with 1 threads
Epoch 0
Epoch 1
Epoch 2
Epoch 3
Epoch 4
Epoch 5
Epoch 6
Epoch 7
Epoch 8
Epoch 9 
glove.add_dictionary(corpus_model.dictionary)

glove.dictionary

输出部分展示:

{'迄今': 0,
 '最': 1,
 '实用': 2,
 '的': 3,
 '大学生': 4,
 '人生': 5,
 '规划': 6,
 '工具书': 7,
 '。': 8,
 '这是': 9,
 '一': 10,}
#查看某个词的词向量
glove.word_vectors[glove.dictionary['我']]

 

array([-3.85271677e-03,  6.03527930e-03, -6.46135204e-03,  7.04933438e-04,
       -3.00269815e-04, -6.35298652e-03, -5.04293920e-03, -2.87305933e-03,
        9.96562326e-06, -1.28239511e-03,  2.32297241e-03,  1.67665561e-03,
       -4.88860444e-03,  2.11428079e-03,  4.59453142e-04, -9.32589063e-03,
       -4.38411281e-03, -2.58539354e-03, -1.21059775e-02, -3.58457042e-03,
        4.42692637e-04,  4.25907889e-03,  8.23455533e-04, -7.69576469e-03,
        4.53250350e-04,  1.43330507e-03, -1.93765326e-03, -5.62252827e-03,
       -6.46001688e-04,  1.00060915e-03, -6.56430222e-03, -9.70502832e-03,
        4.73688765e-03, -8.92992657e-04,  3.56808700e-03,  9.79184843e-03,
        9.15090144e-03,  4.93799065e-04, -5.08780746e-03, -2.17941323e-04,
        2.21646527e-04,  3.65010548e-03,  4.65875282e-03, -3.11105523e-03,
        3.47489254e-03,  1.28445053e-03, -7.86476014e-03, -3.82036168e-03,
       -4.68850099e-03, -2.73481768e-03,  6.43765283e-03,  3.74767271e-04,
       -3.61486712e-03, -2.67486806e-03,  2.20565042e-03, -7.80749700e-04,
       -6.51855200e-03, -1.89578758e-03,  1.97327613e-03, -5.57302319e-03,
       -2.51269656e-03,  1.28111552e-03,  3.78035822e-06, -7.56995098e-03,
        3.88149824e-03, -2.34932018e-03, -5.40425079e-03, -1.80393452e-03,
        5.03049188e-03, -5.58385635e-03,  3.37829026e-03, -2.29710432e-03,
        9.08578290e-03, -4.35930405e-03,  9.61504496e-03,  1.15320991e-02,
        3.32939316e-03,  9.24636042e-03, -9.36855207e-03,  1.15861179e-02,
       -5.50878460e-03,  8.79297798e-03, -3.17951379e-04,  4.44059952e-03,
       -2.52683441e-03, -3.06109383e-03,  7.93721916e-04, -2.56597966e-03,
       -5.98975245e-05, -2.69277017e-03,  8.00875023e-03, -8.21644481e-03,
        1.72800689e-03,  1.52961102e-03, -1.60708166e-04,  4.23559648e-03,
       -1.08741576e-03, -5.77238705e-03,  8.43079576e-03,  3.88278545e-03])
#查找相似词
glove.most_similar('专业',number=10)

 

[('的', 0.8430016342292636),
 (',', 0.8206669513798159),
 ('是', 0.6985497214327246),
 ('。', 0.6971518842587385),
 ('我', 0.6554453225214771),
 ('你', 0.6365204850038154),
 ('不', 0.5187983190436662),
 ('自己', 0.49869570695139864),
 ('一', 0.47569447514853663)]
#查看全局词向量的形状
glove.word_vectors.shape

 (939, 100)

glove.word_vectors

 

array([[ 2.22664080e-03, -4.40492727e-04,  1.56658813e-03, ...,
        -3.70435501e-03,  2.13948809e-03, -3.67479285e-03],
       [-2.59109652e-03,  4.25853419e-03, -2.38113383e-03, ...,
         2.06839387e-03, -4.34270506e-03,  2.74836134e-03],
       [-5.90079017e-04,  4.30749793e-03,  3.15428115e-03, ...,
         1.83901467e-03, -2.14947886e-03,  6.05205719e-05],
       ...,
       [ 3.74231450e-04,  2.05554199e-03,  1.57123457e-03, ...,
        -2.67770537e-05,  2.63345084e-03,  1.49179696e-03],
       [-8.56595044e-04, -4.88608984e-03, -1.88634857e-03, ...,
         6.74149560e-04,  3.00811616e-03, -4.58626075e-03],
       [-3.12888567e-03,  8.80138770e-05, -4.06701493e-03, ...,
         1.17048113e-03, -2.72183947e-04,  2.05452380e-03]])
#查看共线矩阵(若语料库很大,共现矩阵也会比较大)
corpus_model.matrix.todense().shape

 (939, 939)

3. 知识点

  GloVe的全称叫Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具, 是斯坦福大学在2014年提出的模型. 论文地址: https://aclanthology.org/D14-1162.pdf

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171257.html

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

相关文章

OpenAI为高级语音模式添加五种声音,已正式推出!华为发布业界首个L4自动驾驶网络|AI日报

文章推荐 法国亿万富翁加入字节跳动董事会!美国总统候选人哈里斯、特朗普纷纷向人工智能和加密货币产业示好|AI日报 今日热点 华为发布业界首个L4自动驾驶网络——星河AI自动驾驶网络解决方案 在华为全联接大会2024“星河 AI 自动驾驶网络”论坛上&a…

【深度学习】深度学习框架有哪些及其优劣势介绍

本文摘要 在深度学习的开发中,有许多流行的深度学习框架可供使用。本文主要介绍其中一些常见的深度学习框架以及其优劣势。 注:个人观点,仅供学习参考。 原文地址:【深度学习】深度学习框架有哪些及其优劣势介绍 TensorFlow 开发…

教育行业知乎广告投放,如何开户?

随着教育行业的竞争日益激烈,作为一家致力于提供高质量教育资源的企业,如何在众多竞争者中脱颖而出,成为客户心中的首选呢?知乎作为高质量人群平台,无疑是教育行业品牌推广的理想平台。它不仅汇聚了大量求知欲旺盛的用…

分享:一个小学四则运算出题工具

前言 目的在于辅助家长对孩子小学数学的教导。功能分六个部分:计算、加法、减法、乘法、除法和混合,其中,计算的功能在于计算特定算式的结果以及竖式过程,其他的则是基于参数生成指定数目的四则算式,并给出结果和竖式…

CSS边框

CSS 中的边框是围绕着元素内容和内边距的一条或多条线段,您可以自定义这些线段的样式、宽度以及颜色。您可以通过下面几个属性分别定义边框的样式、宽度和颜色: border-style:设置边框的样式,例如实线、虚线等;border…

召回06 双塔模型two-tower(DSSM)

双塔模型的结构 相比于矩阵补充模型,双塔模型考虑了id之外的多种特征作为输入。 对于每个离散特征用单独的enbadding层得到向量,对于性别等类别较少的特征直接使用one-hot编码;对于连续特征,最简单的直接归一化,对于…

【2024.9.27】[JSOI2010] 部落划分

题目描述 题目分析 将野人居住地看作顶点,之间的距离看作边,部落看作集合,考虑用最小生成树Kruskal算法解决,同一个部落里的居住点就构成一个连通分量。使用Kruskal算法时,设初始部落数为,每有两个原本不在…

Splashtop 在2024年 CybersecAsia 读者之选奖项评选中荣获新星奖

2024年9月26日 新加坡 安全远程访问和支持解决方案领域的领先企业 Splashtop 在第五届 CybersecAsia 读者之选奖项评选中荣获新星奖。该奖项的评选人员包括首席信息安全官、技术领袖和网络安全从业者,旨在表彰亚太地区网络安全领袖在行业中发挥的关键作用、取得的创…

FileZilla Server 黑白单移除

我使用FileZilla Server 搭建了一个FTP服务在内网使用,主要用于做数据备份的。 有一台服务器一直可以正常连接,突然有一天不能连接了。一开始我以为是FTP服务器出问题了,就一直没管。后来我测试了一下其他IP都可以正常连接FTP服务器&#xff…

高校教师成果管理小程序的设计与实现springboot(lw+演示+源码+运行)

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全…

连锁收银系统的五大功能 选择开源收银系统三要素

连锁收银系统的五大功能,很多新手是不清楚的,老手也只是知道一些大概,今天,商淘云为大家分享收银系统的五大功能,尤其是第五个,大部分人不清楚,有的企业前面选了不合适的收银系统,导…

漏洞挖掘 | 发现隐藏子域的虚拟主机

高效虚拟主机发现的工具和技术 在进行外部渗透测试或漏洞赏金狩猎时,我们从各个角度探索目标系统,收集尽可能多的信息来识别潜在的攻击向量。这涉及识别所有可用的资产、域和子域。 在这个过程中,我们关注的事情之一就是枚举虚拟主机。通过…

一文速学-知识图谱从零开始构建实战:知识图谱的基本概念

前言 目前设计到很多企业专业领域的知识库构建基本都没有很好的思路对现有的领域知识作一个很好的思路拆分理解,想要落地私域多模态大模型的应用我想还是绕不过想现有的知识库转换为知识图谱,知识图谱不论是对业务还说还是对各个员工来说都是对业务清晰…

从响应到预见:前瞻性客户服务策略的实践与探索

在快速变化的商业环境中,客户服务已不再是简单的需求响应与问题解决,它正逐步演变为企业竞争力的核心要素之一。传统的“响应式”服务模式虽能满足基本的客户需求,但在追求极致客户体验和构建长期忠诚度的今天,显然已显不足。因此…

【巅峰算力,静谧之作】4卡4090GPU深度学习“静音”服务器

各位同仁,随着人工智能浪潮的汹涌澎湃,我们正步入一个前所未有的创新纪元。在这个充满挑战与机遇的时代,我愈发频繁地在工作场景中邂逅那些致力于深度学习探索的智者们。他们,对计算力的渴望如同对知识的追求一般,永无…

HTX DAO重磅亮相Crypto Summit 2024:强势布局CIS地区,推动全球化扩张

9月25日-26日,HTX DAO独家赞助Crypto Summit 2024大会注册处,并以商业伙伴身份亮相。此举为HTX DAO展示其独特的去中心化治理模型提供了机会,将进一步扩大HTX DAO及HTX在CIS地区的市场份额和影响力,吸引更多的加密社区成员、开发者…

实现org.springframework.beans.factory.InitializingBean 接口--初始化bean

1、案例 import com.dzwl.easy.report.core.service.IUserDescService; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;Component public c…

flink:java集成flink实现流数据处理(一)

文章目录 0. 引言1. flink安装2. 流数据处理程序依赖包简介流处理4个部分 3. 程序调用4. 总结 0. 引言 Apache Flink作为一款高性能的流处理框架,已成为企业级流数据处理的优选方案。本文将带领读者深入了解如何利用Java语言集成Flink,实现高效、可靠的…

Tomcat CVE-2017-12615 靶场攻略

漏洞描述 当 Tomcat运⾏在Windows操作系统时,且启⽤了HTTP PUT请求⽅法(例如,将 readonly初始化参数由默认值设置为false),攻击者将有可能可通过精⼼构造的攻击请求数据包向服务器上传包含任意代 的 JSP ⽂件&#xf…

Kubernetes 资源详解

1. Namespace Namespace 是 kubernetes 系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行…