在开始之前,请下载文档。 百度网盘链接(337.97MB):https://pan.baidu.com/s/1WZEGJeHBzmqs_tVFV-zBBA 提取码:8dqm
低内存机器: 这里指的是内存小于32GB的计算机。
大型词嵌入: 这里指的是词嵌入文件大于15G的词嵌入文件。
腾讯词嵌入: 这里指的是腾讯发布的 ,其下载地址为(解压后:15.5GB):https://ai.tencent.com/ailab/nlp/data/Tencent_AILab_ChineseEmbedding.tar.gz,其下载页面为:https://ai.tencent.com/ailab/nlp/embedding.html
本文解决了大型词嵌入在低性能、低内存机器上的资源耗尽的问题(ResourceExhaustedError)。
以腾讯词嵌入为例,腾讯中文的词向量映射集在解压后有15.5G,共计有8,824,330条字词短语,内存较小的计算机显然不能直接加载,故为满足小内存、低性能的计算机的需要,特建立对词嵌入的映射关系文件,映射后只有313MB,满足了此类计算机的需求。
这里是典型的以时间换空间的方式解决在使用腾讯词嵌入的时候内存资源耗尽的问题。在词嵌入与程序之间建立一个中间的映射文件,程序通过映射文件读取词嵌入的内容,映射文件格式如下:
程序通过词汇可以访问到对应的文件指针的起始位置以及读取长度,然后程序就可以直接访问磁盘中的对应的数据了。
1. 安装linecache
2. 创建文件夹
创建名字叫做“utils”的文件夹,里面放入“ShowProcess .py”,这个可以在文章末尾复制代码,可以直接从文中的百度网盘链接中下载。
创建名字叫做“embeddings”的文件夹,里面放入解压好了的“Tencent_AILab_ChineseEmbedding.txt”文件,以及“ReadEmbeddings .py”,映射文件“embeddings_map_index.txt”也将在这里生成。
目录结构如图:
2. 加载模块
3. (可选)关键参数设置
指定词嵌入文件位置(默认使用腾讯词嵌入)。
指定词嵌入词条数量(默认使用腾讯词嵌入的词条数量)。
如果有需要指定生成的映射文件的位置,可以在这里指定。
4. (首次使用)创建映射文件
这个过程需要一个小时左右,可以选择自己生成,也可以选择博主生成好了的文件。
5. 加载词嵌入映射文件
生成完之后就可将映射文件加载进内存了,你可自行查看映射列表的内容。
6. 单个查询
这里有提供单个词组查询的功能:
7. 批量查询
这里有提供批量查询的功能:
8. 释放内存
当不再需要映射文件时,立即释放内存。
指定编码
在初始化的时候就可指定全局编码,在读取词嵌入以及创建映射文件的时候可以使用统一的编码。
启用日志
单独查询与批量查询都具备写入日志的功能(仅记录查询失败日志)。
启用元素删除功能
元素删除功能在每个词汇仅查询一次的条件下才能启用,此功能在需要查询的词汇量特别大的时候会显著提升查询效率,有效减少查询时间,举个栗子:
由于Python的特性,此功能会影响到外部变量,受影响的外部变量: