用于词库的解析方法及系统技术方案

技术编号:27655580 阅读:23 留言:0更新日期:2021-03-12 14:17
本发明专利技术实施例提供一种用于词库的解析方法。该方法包括:基于输入流的方式自词库数据库获取一部分词条;加载一部分词条至内存;将一部分词条从内存写入与训练服务已建立请求的输出流。本发明专利技术实施例还提供一种用于词库的解析系统。本发明专利技术实施例解决了应用中解析大体积词库文件可能存在的内存溢出问题,同时避免了增加内存,扩容等造成的运维成本。在此基础上,不仅仅可以应用在解决读取大词库文件上,同时,可也以作为解决其他因素导致的系统内存溢出的一种参考。

【技术实现步骤摘要】
用于词库的解析方法及系统
本专利技术涉及智能语音领域,尤其涉及一种用于词库的解析方法及系统。
技术介绍
目前市面上使用的基于虚拟机运行的应用,如果涉及大体积文件或对象解析至内存的功能,都存在内存溢出的风险(即程序运行要用到的内存大于该应用被分配的最大内存),该异常会导致应用停止运行。因此业界大多会采取一定的方法或技术来防止内存溢出的发生,以保证系统运行的稳定性。通常为了防止内存溢出的发生,会增加应用系统内存的大小,或者进行系统扩容来保障系统的稳定性。在实现本专利技术过程中,专利技术人发现相关技术中至少存在如下问题:目前市面上运行的系统为了解决内存溢出问题,大多会增加应用的内存大小或进行系统扩容,由于增加了应用的内存,系统运行的机器也要配置更高的内存,这样会导致系统的运行依赖于较高的硬件配置,从而增加系统运维成本;此外,虽然加大了内存可以降低内存溢出的风险,但由于文件或对象的大小、系统的并发等不可控因素,一味的通过加内存、扩容等手段无法有效解决内存溢出问题,仍然无法完全避免内存溢出的发生。
技术实现思路
为了至少解决现有技术中增加内存扩容会提高硬件配置以及运维成本,即使一味的加内存也无法有效的解决内存溢出的问题。第一方面,本专利技术实施例提供一种用于词库的解析方法,包括:基于输入流的方式自词库数据库获取一部分词条;加载所述一部分词条至内存;将所述一部分词条从所述内存写入与训练服务已建立请求的输出流。第二方面,本专利技术实施例提供一种用于词库的解析系统,包括:词条获取程序模块,用于基于输入流的方式自词库数据库获取一部分词条;词条加载程序模块,用于加载所述一部分词条至内存;输出程序模块,用于将所述一部分词条从所述内存写入与训练服务已建立请求的输出流。第三方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本专利技术任一实施例的用于词库的解析方法的步骤。第四方面,本专利技术实施例提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本专利技术任一实施例的用于词库的解析方法的步骤。本专利技术实施例的有益效果在于:解决了应用中解析大体积词库文件可能存在的内存溢出问题,同时避免了增加内存,扩容等造成的运维成本。在此基础上,不仅仅可以应用在解决读取大词库文件上,同时,可也以作为解决其他因素导致的系统内存溢出的一种参考。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术一实施例提供的一种用于词库的解析方法的流程图;图2是本专利技术一实施例提供的一种用于词库的解析方法的词库训练具体实施流程图;图3是本专利技术一实施例提供的一种用于词库的解析系统的结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示为本专利技术一实施例提供的一种用于词库的解析方法的流程图,包括如下步骤:S11:基于输入流的方式自词库数据库获取一部分词条;S12:加载所述一部分词条至内存;S13:将所述一部分词条从所述内存写入与训练服务已建立请求的输出流。在本实施方式中,普通用户训练的词库数据库通常体量较小,例如,百MB级别的,在训练时不会出现内存溢出。但是大企业的语音产品,通常有着各种功能,词库数据库体量极大,几十GB、百GB、更有极限甚至是TB级别的。当语音对话平台为了训练词库数据库准备的内存容量,不足以完全缓存词库数据库,就会出现内存溢出。内存溢出异常一般发生于生产环境,在词库训练的过程中不允许有太多的时间来处理内存溢出的问题,因此无法在内存溢出后,再去扩充内存。词库训练的生产环境的应用大多以多节点运行来实现高可用,即使单个服务因内存溢出崩溃,其他节点还可以对外提供服务,因此单节点的内存溢出并不会造成系统完全不可用。本方法应用于语音对话平台的词库服务中,通过词库服务来辅助用户的浏览器端和训练服务进行数据传输。对于步骤S11,为了避免在训练大体量的词库数据库时内存溢出,通过IO流的方式动态解析大体量级别的词库数据库,读取文件过程中,每次只从词库数据库中获取一部分词条。其中,IO流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。通过输入流的方式,从词库数据库中获取一部分词条。例如,词库的大小为10GB,单词只获取100MB的词条。这样确保内存不会溢出。对于步骤S12,将从词库数据库中获取一部分词条加载至语音对话平台的内存中,每次只有少量的词条加载至内存。作为一种实施方式,所述部分词条中的词条数量与所述内存的容量相关。考虑到语音对话平台内存的容量,确保部分词条中词条数量所占用的容量要小于内存。以最小数量考虑,每次可以从词库数据库中读取单个词条至内存中,极限确保语音对话平台内存不溢出。也可以每次从词库中读取100个词条至内存(如果内存较大的情况下)中,在保证语音对话平台内存不溢出的基础上,提高解析效率。对于步骤S13,将加载至内存的部分词条,从内存写入与训练服务建立请求的输出流,通过输出流将部分词条传送至训练服务中。其中,词库服务与训练服务预先建立好,例如可以建立HTTP请求。作为一种实施方式,在将所述一部分词条从所述内存写入与训练服务已建立请求的输出流的过程中,所述输出流为阻塞模式。在输出流模式选择中,有阻塞和非阻塞模式,阻塞模式意味着必须要做完IO操作(包括错误)才会返回,当试图对该文件描述符进行读写时,如果当时没有东西可读,或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止。非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。对于非阻塞状态,如果没有东西可读,或者不可写,读写函数马上返回,而不会等待。考虑到应对于词库解析这一环境,由于每次只将部分词条写入输出流至训练服务,因此使用阻塞模式。通过该实施方式可以看出,解决了应用中解析大体积词库文件可能存在的内存溢出问题,同时避免了增加内存,扩容等造成的运维成本。本文档来自技高网...

【技术保护点】
1.一种用于词库的解析方法,包括:/n基于输入流的方式自词库数据库获取一部分词条;/n加载所述一部分词条至内存;/n将所述一部分词条从所述内存写入与训练服务已建立请求的输出流。/n

【技术特征摘要】
1.一种用于词库的解析方法,包括:
基于输入流的方式自词库数据库获取一部分词条;
加载所述一部分词条至内存;
将所述一部分词条从所述内存写入与训练服务已建立请求的输出流。


2.根据权利要求1所述的方法,其中,在所述将所述一部分词条从所述内存写入与训练服务已建立请求的输出流之后,所述方法还包括:
继续基于输入流的方式自词库数据库获取下一部分词条;
加载所述下一部分词条至内存;
将所述下一部分词条从所述内存写入与训练服务已建立请求的输出流,直至所述词库数据库内所有的词条全部写入与所述训练服务已建立请求的输出流。


3.根据权利要求2所述的方法,其中,在所述词库数据库内所有的词条全部写入与所述训练服务已建立请求的输出流之后,所述方法还包括:
请求所述训练服务对所述词库数据库训练。


4.根据权利要求2所述的方法,其中,在所述词库数据库内所有的词条全部写入与所述训练服务已建立请求的输出流之后,所述方法还包括:
依次关闭所述输出流、所述输入流以及内存释放。


5.根据权利要求1-4中任一项所述的方法,其中,所述部分词条中的词条数量与所述内存的容量相关。

【专利技术属性】
技术研发人员:田森
申请(专利权)人:苏州思必驰信息科技有限公司
类型:发明
国别省市:江苏;32

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

1