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实现多线程抓取网页功能实例详解
Jun 08 Python
Python的多维空数组赋值方法
Apr 13 Python
python编辑用户登入界面的实现代码
Jul 16 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
python中@contextmanager实例用法
Feb 07 Python
python使用pygame创建精灵Sprite
Apr 06 Python
Python中三种花式打印的示例详解
Mar 19 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
怎样搭建PHP开发环境
2015/07/28 PHP
php编程每天必学之表单验证
2016/03/01 PHP
eclipse php wamp配置教程
2016/06/30 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
web.py获取上传文件名的正确方法
2014/08/26 Python
python实现得到一个给定类的虚函数
2014/09/28 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
大学生职业生涯规划书模版
2013/12/30 职场文书
演讲稿怎么写
2014/01/07 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
国际贸易实训总结
2015/08/03 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL
优化Mysql查询的示例
2022/04/26 MySQL