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中的类,对象,方法,属性
Sep 11 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
Python深入06——python的内存管理详解
Dec 07 Python
Python中进程和线程的区别详解
Oct 29 Python
python pyheatmap包绘制热力图
Nov 09 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
python 实现单通道转3通道
Dec 03 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
Python如何定义有默认参数的函数
Aug 10 Python
基于Python采集爬取微信公众号历史数据
Nov 27 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程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python算法学习之计数排序实例
2013/12/18 Python
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
高中自我鉴定
2013/12/20 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
五型班组建设方案
2014/02/10 职场文书
医学检验专业自荐信
2014/09/18 职场文书
湘江北去观后感
2015/06/15 职场文书
在Python中如何使用yield
2021/06/07 Python
Python first-order-model实现让照片动起来
2022/06/25 Python