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的一些用法分享
Oct 07 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
总结Python编程中三条常用的技巧
May 11 Python
Python基于pygame实现的font游戏字体(附源码)
Nov 11 Python
谈谈如何手动释放Python的内存
Dec 17 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
Python如何实现强制数据类型转换
Nov 22 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
如何用Python徒手写线性回归
Jan 25 Python
python压包的概念及实例详解
Feb 17 Python
python FTP编程基础入门
Feb 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
PHP 七大优势分析
2009/06/23 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
python进程管理工具supervisor使用实例
2014/09/17 Python
python实现各进制转换的总结大全
2017/06/18 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
python集合是否可变总结
2019/06/20 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
函授毕业自我鉴定
2013/12/19 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
航空学院求职信
2014/06/11 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
优秀党员个人总结
2015/02/14 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技