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 相关文章推荐
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
django的settings中设置中文支持的实现
Apr 28 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
Python如何将函数值赋给变量
Apr 28 Python
Python如何输出百分比
Jul 31 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
python反编译教程之2048小游戏实例
Mar 03 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
PHP MSSQL 存储过程的方法
2008/12/24 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
如何打开php的gd2库
2017/02/09 PHP
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python使用socket连接远程服务器的方法
2015/04/29 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
python列表返回重复数据的下标
2020/02/10 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
五年级小学生评语
2014/12/26 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
2015年父亲节寄语
2015/03/23 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
撤诉申请怎么写
2015/05/19 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
Nginx进程管理和重载原理详解
2021/04/22 Servers