词向量文件加载方法、装置及存储介质制造方法及图纸

技术编号:33275295 阅读:53 留言:0更新日期:2022-04-30 23:33
本申请提供一种词向量文件加载方法、装置及存储介质,其中方法包括:在Golang程序启动后,通过Syscall指令将格式化完成的词向量文件映射到内存;所述格式化完成的词向量文件为二进制文件,所述格式化完成的词向量文件包括词长度、词、词向量长度和词向量;加载映射到内存后的词向量文件,构造词向量词典。本申请实施例提供的词向量文件加载方法、装置及存储介质,通过将原始词向量文件格式化为二进制文件有效节省了内存,在Golang环境下通过Syscall指令将词向量文件映射到内存,提高了加载速率,使用映射的内存文件作为词向量的存储对象,避免了内存碎片,减少了GC压力。减少了GC压力。减少了GC压力。

【技术实现步骤摘要】
词向量文件加载方法、装置及存储介质


[0001]本申请涉及自然语言处理
,尤其涉及一种词向量文件加载方法、装置及存储介质。

技术介绍

[0002]文本的原生信息计算机无法识别,为了便于计算和处理,出现了词向量,即以数字化向量的方式来表征一个字、词、短语或者文本,通过词向量可以进一步发现语义之间的内在关联。
[0003]在自然语言处理过程中,词向量是百万级别的,生成的词向量词典占用很高的内存,在加载词向量生成词向量词典的过程中,耗时较长,加载过程慢。

技术实现思路

[0004]针对现有技术存在的上述问题,本申请提供一种词向量文件加载方法、装置及存储介质。
[0005]第一方面,本申请提供一种词向量文件加载方法,包括:在Golang程序启动后,通过Syscall指令将格式化完成的词向量文件映射到内存;所述格式化完成的词向量文件为二进制文件,所述格式化完成的词向量文件包括词长度、词、词向量长度和词向量;加载映射到内存后的词向量文件,构造词向量词典。
[0006]可选地,所述通过Syscall指令将格式化完成的词向量文件映射到内存之前,还包括:读取原始词向量数据,计算词长度,获取词,计算词向量长度,获取词向量;写入格式化文件转为二进制文件;获取所述格式化完成的词向量文件。
[0007]可选地,所述加载映射到内存后的词向量文件,构造词向量词典,包括:读取所述映射到内存后的词向量文件,获取当前词向量对应的索引;获取当前词对应的索引;基于所述当前词对应的索引获取所述当前词的词长度;基于所述当前词对应的索引和所述当前词的词长度获取所述当前词;以词为Key,以词向量对应的索引为Value,构造所述词向量词典。
[0008]可选地,所述当前词向量对应的索引基于上一个词向量对应的索引、上一个词的词向量长度变量、所述上一个词的词向量长度、当前词的词长度变量和所述当前词的词长度确定。
[0009]可选地,所述当前词对应的索引基于上一个词对应的索引、所述上一个词的词长度变量、所述上一个词的词长度、所述上一个词的词向量长度变量和所述上一个词的词向量长度确定。
[0010]可选地,所述构造词向量词典之后,还包括:基于目标词查询得到目标词向量对应的索引;基于所述目标词向量对应的索引查找目标词向量长度;基于所述目标词向量长度和所述目标词向量对应的索引查找所述目标词向量。
[0011]第二方面,本申请还提供一种词向量文件加载装置,包括:映射模块,用于在Golang程序启动后,通过Syscall指令将格式化完成的词向量文件映射到内存;所述格式化完成的词向量文件为二进制文件,所述格式化完成的词向量文件包括词长度、词、词向量长度和词向量;加载模块,用于加载映射到内存后的词向量文件,构造词向量词典。
[0012]可选地,所述装置还包括格式化模块,用于:读取原始词向量数据,计算词长度,获取词,计算词向量长度,获取词向量;写入格式化文件转为二进制文件;获取所述格式化完成的词向量文件。
[0013]可选地,所述加载模块还用于:读取所述映射到内存后的词向量文件,获取当前词向量对应的索引;获取当前词对应的索引;基于所述当前词对应的索引获取所述当前词的词长度;基于所述当前词对应的索引和所述当前词的词长度获取所述当前词;以词为Key,以词向量对应的索引为Value,构造所述词向量词典。
[0014]可选地,所述当前词向量对应的索引基于上一个词向量对应的索引、上一个词的词向量长度变量、所述上一个词的词向量长度、当前词的词长度变量和所述当前词的词长度确定。
[0015]可选地,所述当前词对应的索引基于上一个词对应的索引、所述上一个词的词长度变量、所述上一个词的词长度、所述上一个词的词向量长度变量和所述上一个词的词向量长度确定。
[0016]可选地,所述装置还包括查找模块,用于:基于目标词查询得到目标词向量对应的索引;基于所述目标词向量对应的索引查找目标词向量长度;基于所述目标词向量长度和所述目标词向量对应的索引查找所述目标词向量。
[0017]第三方面,本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的词向量文件加载方法。
[0018]第四方面,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的词向量文件加载方法。
[0019]第五专利技术,本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的词向量文件加载方法。
[0020]本申请提供的词向量文件加载方法、装置及存储介质,通过将原始词向量文件格式化为二进制文件有效节省了内存,在Golang环境下通过Syscall指令将词向量文件映射到内存,提高了加载速率,使用映射的内存文件作为词向量的存储对象,避免了内存碎片,
减少了GC压力。
附图说明
[0021]为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022]图1是本申请实施例提供的词向量文件加载方法的流程示意图;图2是本申请实施例提供的词向量文件加载装置的结构示意图;图3是本申请实施例提供的电子设备的结构示意图。
具体实施方式
[0023]首先对本申请实施例中将出现的一些英文及缩写进行解释说明:NLP:Natural Language Processing,自然语言处理。
[0024]FAQ:Frequently Asked Question,快速问答。
[0025]CGO:Go语言和C语言相互调用的机制。
[0026]GC:Garbage Collection,垃圾回收。
[0027]Key:词内容。
[0028]Value:词向量对应的索引。
[0029]Redis:Remote Dictionary Server,远程字典服务,是一个开源的使用标准c语言编写、支持网络、可基于内存亦可持久化的日志型、Key

Value数据库,并提供多种语言的应用程序编程接口。
[0030]Golang:又称Go,一种静态强类型、编译型语言,可并行化,且具有垃圾回收功能。
[0031]Syscall:从应用层到内核层的系统调用。
[0032]在Golang环境下,现有技术加载词向量的过程及存在的问题如下:(1)程序启动时将词向量加载到内存中,生成词向量词典,词典Key为词内容,Value是128个浮点数。
[0033]①
词向量的数量级达到百万级别,生成的词向量词典占用内存大,约18G。
[0034]②
加载词向量生本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种词向量文件加载方法,其特征在于,包括:在Golang程序启动后,通过Syscall指令将格式化完成的词向量文件映射到内存;所述格式化完成的词向量文件为二进制文件,所述格式化完成的词向量文件包括词长度、词、词向量长度和词向量;加载映射到内存后的词向量文件,构造词向量词典。2.根据权利要求1所述的词向量文件加载方法,其特征在于,所述通过Syscall指令将格式化完成的词向量文件映射到内存之前,还包括:读取原始词向量数据,计算词长度,获取词,计算词向量长度,获取词向量;写入格式化文件转为二进制文件;获取所述格式化完成的词向量文件。3.根据权利要求1所述的词向量文件加载方法,其特征在于,所述加载映射到内存后的词向量文件,构造词向量词典,包括:读取所述映射到内存后的词向量文件,获取当前词向量对应的索引;获取当前词对应的索引;基于所述当前词对应的索引获取所述当前词的词长度;基于所述当前词对应的索引和所述当前词的词长度获取所述当前词;以词为Key,以词向量对应的索引为Value,构造所述词向量词典。4.根据权利要求3所述的词向量文件加载方法,其特征在于,所述当前词向量对应的索引基于上一个词向量对应的索引、上一个词的词向量长度变量、所述上一个词的词向量长度、当前词的词长度变量和所述当前词的词长度确定。5.根据权利要求3所述的词向量文件加载方法,其特征在于,所述当前词对应的索引基于上一个词对应的索引、所述上一个...

【专利技术属性】
技术研发人员:马冰
申请(专利权)人:北京沃丰时代数据科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1