python获取txt文件词向量过程详解


Posted in Python onJuly 05, 2019

在读取https://github.com/Embedding/Chinese-Word-Vectors中的中文词向量时,选择了一个有3G多的txt文件,之前在做词向量时用的是word2vec,所以直接导入模型然后indexword即可。

因为这是一个txt大文件,尝试了DataFrame,np.loadtxt等,都没有成功,其中主要遇到的问题是:

  • 如何读取完整的大文件,而不会出现内存不足memery error等问题
  • 将读取出来的文件,保存为npy文件
  • 根据词找到对应的向量

解决办法

尝试使用的代码:

代码1:
try:
lines=np.loadtxt(filepath)
catch:
感觉这块不会写了咦,,,
  print(ValueError)
但这样的话,它就不会继续循环去读上边的txt了呢
代码2:
lines=[]
with open(filepath) as f:
  for line in f:
    lines.append(line)
np.save(filepath,lines)
代码3
 
def readEmbedFile(embedFile):
#   embedId = {}
#   input = open(embedFile,'r',encoding="utf-8")
#   lines = []
#   a=0
#   for line in input:
#     lines.append(line)
#     a=a+1
#     print(a)
#   nwords = len(lines) - 1
#   splits = lines[1].strip().split(' ') # 因为第一行是统计信息,所以用第二行
#   dim = len(splits) - 1
#   embeddings=[]
#   # embeddings = [[0 for col in range(dim)] for row in range(nwords)]
#   b=0
#   for lineId in range(len(lines)):
#     b=b+1
#     print(b)
#     splits = lines[lineId].split(' ')
#     if len(splits) > 2:
#       # embedId赋值
#       embedId[splits[0]] = lineId
#       # embeddings赋值
#       emb = [float(splits[i]) for i in range(1, 300)]
#       embeddings.append(emb)
#   return embedId, embeddings
代码4:
def load_txt(filename):
  lines=[]
  vec_dict={}
  with open(filename,r) as f:
    for line in f:
    list=line.strip()
    lines.append(line)
  for i, line in emuate(lines):
    if i=0:
      continue
    line=line.split(" ")
    wordID=line[0]
    wordvec=[float line[i] for i in range(1,300)]
  vec_dict[wordId]=np.array(wordvec)  
 
  return vec_dict

具体内存不足主要的原因是:

我的虚拟机中确实内存不太够,后来使用实验室32G的主机后,可以得到idvec,而得不到向量的,报的错还是memory error.
另一个原因,是需要把词向量转换为float形式,在python中str 占的内存>float类型,如代码所示:

print("str",sys.getsizeof(""))
print("float",sys.getsizeof(1.1))
print("int",sys.getsizeof(1))
print("list",sys.getsizeof([]))
print("tuple",sys.getsizeof(()))
print("dic",sys.getsizeof([]))
str 49
float 24
int 28
list 64
tuple 48
dic 64

在我的电脑,64位操作系统,64位的python, 所占内存大小排序为:

dic=list>str>tuple>int>float

读取时候可以用np.load().item就可以复原原来的字典,主要参照下述文件:

然后通过python的字典操作就可以遍历得到每个词的词向量了,dic[vocab]

心得

距离完全解决项目的问题还有5~6的大关卡,但静下心来,一步步地做总会突破的呀!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python获取远程文件大小的函数代码分享
May 13 Python
python使用pymysql实现操作mysql
Sep 13 Python
Python实现的快速排序算法详解
Aug 01 Python
Python MD5加密实例详解
Aug 02 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
Python实现的直接插入排序算法示例
Apr 29 Python
Sanic框架应用部署方法详解
Jul 18 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
python数组循环处理方法
Aug 26 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
小结Python的反射机制
Sep 28 Python
python使用pymysql模块操作MySQL
Jun 16 Python
Python 的字典(Dict)是如何存储的
Jul 05 #Python
关于Python 的简单栅格图像边界提取方法
Jul 05 #Python
Python3+Appium安装使用教程
Jul 05 #Python
Python叠加两幅栅格图像的实现方法
Jul 05 #Python
用vue.js组件模拟v-model指令实例方法
Jul 05 #Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 #Python
Python 计算任意两向量之间的夹角方法
Jul 05 #Python
You might like
星际争霸任务指南——神族
2020/03/04 星际争霸
php用header函数实现301跳转代码实例
2013/11/25 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
PHP中SESSION过期设置
2021/03/09 PHP
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
numpy数组拼接简单示例
2017/12/15 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
Python实现京东秒杀功能代码
2019/05/16 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
取保候审保证书
2014/04/30 职场文书
个人综合鉴定材料
2014/05/23 职场文书
早上好问候语大全
2015/11/10 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技