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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
Python实现的简单dns查询功能示例
May 24 Python
详解Python文件修改的两种方式
Aug 22 Python
python 变量初始化空列表的例子
Nov 28 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
Python docutils文档编译过程方法解析
Jun 23 Python
Python远程linux执行命令实现
Nov 11 Python
Python实现视频自动打码的示例代码
Apr 08 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
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python实现单向链表详解
2018/02/08 Python
python学生管理系统代码实现
2020/04/05 Python
Python入门必须知道的11个知识点
2018/03/21 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
python实现录音小程序
2020/10/26 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
python实现人工蜂群算法
2020/09/18 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
生物化学研究助理员求职信
2013/10/09 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
小学生作文批改评语
2014/12/25 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python