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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
Python中使用HTMLParser解析html实例
Feb 08 Python
python返回昨天日期的方法
May 13 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
Python多进程写入同一文件的方法
Jan 14 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
python程序控制NAO机器人行走
Apr 29 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
python缩进长度是否统一
Aug 02 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
python collections模块的使用
Oct 16 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防注入及开发安全详细解析
2013/08/09 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
让python json encode datetime类型
2010/12/28 Python
Python科学计算环境推荐——Anaconda
2014/06/30 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
对于Python中RawString的理解介绍
2016/07/07 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python爬取个性签名的方法
2018/06/17 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
彻底解决Python包下载慢问题
2020/11/15 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
中国文明网签名寄语
2014/01/18 职场文书
元旦晚会策划方案
2014/02/18 职场文书
企业法人授权委托书
2014/04/03 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
一个都不能少观后感
2015/06/04 职场文书