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压平嵌套列表的简单实现
Jun 08 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Python线程下使用锁的技巧分享
Sep 13 Python
10个Python小技巧你值得拥有
Sep 29 Python
python微信公众号之关注公众号自动回复
Oct 25 Python
浅谈Python 递归算法指归
Aug 22 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
Keras 使用 Lambda层详解
Jun 10 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
Python xmltodict模块安装及代码实例
Oct 05 Python
python 使用cycle构造无限循环迭代器
Dec 02 Python
jupyter 添加不同内核的操作
Feb 06 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
世界收音机发展史
2021/03/01 无线电
PHP判断变量是否为0的方法
2014/02/08 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
php上传大文件设置方法
2016/04/14 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
php 可变函数使用小结
2018/06/12 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
vuejs实现递归树型菜单组件
2018/01/13 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
Python如何解除一个装饰器
2020/08/07 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
食品安全工作实施方案
2014/03/26 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书