一种可自定义的词典加载方法及装置与流程

文档序号:17860826发布日期:2019-06-11 22:51阅读:154来源:国知局

本发明涉及自然语言处理技术领域,特别涉及一种可自定义的词典加载方法及装置。



背景技术:

现有的词典数据加载方式只能从文件加载,即从原始的.txt或缓存的.bin文件读取词典数据的方法加载词典。当需要更新词典时,需要修改.txt文件,并手动删除.bin文件,才可以在重启后重新加载词典数据,这种词典加载方式非常的不灵活,并且不能实时更新词典数据,不利于词典的调整。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种可自定义的词典加载方法及装置,以克服现有技术中的词典加载方式不灵活,并且不能实时更新词典数据,不利于词典的调整等问题。

为解决上述技术问题,本发明采用的技术方案是:

一方面,提供了一种可自定义的词典加载方法,所述方法包括如下步骤:

编写自定义的词典加载器以及配置词典同步时间间隔,生成配置文件;

读取所述配置文件,实例化所述词典加载器并启动定时任务,所述定时任务的执行间隔为所述词典同步时间间隔。

进一步的,所述实例化所述词典加载器包括:

s1.1:判断是否需要重新加载词典,若是,则执行步骤s1.2,否则,执行步骤s1.3;

s1.2:通过所述词典加载器重新加载词典,若加载成功,则将所述词典写入本地缓存文件并更新备份文件后启动定时任务,否则,从本地缓存文件及更新备份文件加载词典后启动定时任务;

s1.3:通过所述词典加载器从本地缓存文件及更新备份文件加载词典,若加载成功,则启动定时任务,否则,返回步骤s1.2。

进一步的,所述定时任务的流程包括:

s2.1:判断是否需要重新加载词典,若是,则执行下一步,否则结束任务;

s2.2:通过所述词典加载器重新加载词典;

s2.3:判断词典加载是否成功,若是,则将所述词典写入本地缓存文件并更新备份文件后结束任务,否则,直接结束任务。

进一步的,所述编写自定义的词典加载器包括:

继承抽象代码加载程序的类,实现所述抽象代码加载程序的抽象方法。

进一步的,所述词典同步时间间隔优选为300秒。

另一方面,提供了一种可自定义的词典加载装置,所述装置包括:

文件配置模块,用于编写自定义的词典加载器以及配置词典同步时间间隔,生成配置文件;

词典加载模块,用于读取所述配置文件,实例化所述词典加载器并启动定时任务,所述定时任务的执行间隔为所述词典同步时间间隔。

进一步的,所述词典加载模块包括:

文件读取单元,用于读取所述配置文件;

第一判断单元,用于判断是否需要重新加载词典;

第一加载单元,用于通过所述词典加载器重新加载词典或从本地缓存文件及更新备份文件加载词典;

数据存储单元,用于存储本地缓存文件以及备份文件;

定时更新单元,用于根据所述词典同步时间间隔执行定时任务。

进一步的,所述词典加载模块还包括:

第二判断单元,用于判断词典加载是否成功。

进一步的,所述文件配置模块包括:

方法实现单元,用于继承抽象代码加载程序的类,实现所述抽象代码加载程序的抽象方法。

进一步的,所述文件配置模块还包括:

时间设置单元,用于设置词典同步时间间隔,其中所述词典同步时间间隔优选为300秒。

本发明实施例提供的技术方案带来的有益效果是:

1、本发明提供的可自定义的词典加载方法及装置,通过采用词典加载器让使用者自定义词典加载方式(如从数据库中加载或从本地缓存文件加载等),可以使词典数据不再局限于现有的文本文件方法,而是可以采用任何形式的存储方式,只需要实现词典加载器的接口,并进行相应的配置即可实现词典数据的加载;

2、本发明提供的可自定义的词典加载方法及装置,通过提供定时更新词典数据的功能,并可根据设置的词典同步时间间隔去定时更新词典数据,不需要人工操作及重启,即可达到更新词典数据的目的,增加了词典加载的灵活性,降低了词典调整的复杂度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据一示例性实施例示出的可自定义的词典加载方法的流程图;

图2是根据一示例性实施例示出的实例化所述词典加载器的流程图;

图3是根据一示例性实施例示出的定时任务的流程图;

图4是根据一示例性实施例示出的可自定义的词典加载装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是根据一示例性实施例示出的可自定义的词典加载方法的流程图,参照图1所示,该方法包括:

s1:编写自定义的词典加载器以及配置词典同步时间间隔,生成配置文件。

具体的,首先需要生成配置文件,至少包括编写自定义的词典加载器和配置词典同步时间间隔等。使用者可以通过词典加载器自定义词典加载方式,如从数据库中加载或从本地缓存文件加载等方式。这里需要说明的是,由于采用可自定义的词典加载方式,因此,当需要更新词典时,不需要修改.txt文件,也不用手动删除.bin文件,即可实现词典数据的加载,不仅增加了词典加载的灵活性,而且降低了词典调整的复杂度。

s2:读取所述配置文件,实例化所述词典加载器并启动定时任务,所述定时任务的执行间隔为所述词典同步时间间隔。

具体的,词典启动后,会从配置文件中读取词典加载器、词典同步时间间隔等。实例化词典加载器,加载完词典(包括从数据库中加载或从本地缓存文件加载中的一种或多种)后启动定时任务,根据预先配置的词典同步时间间隔定时同步词典,不需要人工操作及重启,即可达到更新词典数据的目的。

图2是根据一示例性实施例示出的实例化所述词典加载器的流程图,参照图2所示,其包括如下步骤:

s1.1:判断是否需要重新加载词典,若是,则执行步骤s1.2,否则,执行步骤s1.3。

具体的,读取到配置文件后,首先需要判断是否需要重新加载词典。判断的依据可以是查询本地是否存在缓存文件或者缓存文件的最后修改时间是否小于数据库字典数据最后的修改时间,其中,若数据的更新未被同步,则缓存文件的最后修改时间会小于数据库字典数据最后的修改时间,如用户在数据库中添加了自定义的词及其属性等。若有更新,则判定需要重新加载词典,此时通过词典加载器从数据库重新加载词典,否则,判定不需要重新加载词典,此时通过词典加载器从本地缓存文件及更新备份文件加载词典即可。

s1.2:通过所述词典加载器重新加载词典,若加载成功,则将所述词典写入本地缓存文件并更新备份文件后启动定时任务,否则,从本地缓存文件及更新备份文件加载词典后启动定时任务。

具体的,通过词典加载器从数据库重新加载词典时,作为一种示例,可以通过reload方法实现,其中,reload方法是编写自定义加载器时,需要实现的抽象方法,实现此方法才能从自定义的载体中重新加载词典数据。。若加载成功,则可以通过save方法将重新加载到的词典写入本地缓存文件并更新备份文件,然后启动定时任务。若加载失败,则可以通过fromfile方法从本地缓存文件及更新备份文件中加载词典,完成后启动定时任务。

s1.3:通过所述词典加载器从本地缓存文件及更新备份文件加载词典,若加载成功,则启动定时任务,否则,返回步骤s1.2。

具体的,可以通过fromfile方法从本地缓存文件及更新备份文件中加载词典,与reload类似,fromfile方法是编写自定义加载器时,需要实现的抽象方法,实现此方法才能从本地缓存文件及更新备份文件中加载词典。若加载成功,则启动定时任务,否则,返回步骤s1.2,通过词典加载器从数据库重新加载词典。这里需要说明的是,从本地缓存文件及更新备份文件中加载词典成功后,不需要再将加载到的词典写入本地缓存文件并更新备份文件,一方面,因为此时加载到的词典与本地缓存文件以及备份文件中的词典一致,另一方面,这样设置,可以减少不必要的操作,降低了词典调整的复杂度。

图3是根据一示例性实施例示出的定时任务的流程图,参照图3所示,其包括如下步骤:

s2.1:判断是否需要重新加载词典,若是,则执行下一步,否则结束任务。

具体的,定时任务启动后,首先判定是否需要重新加载词典,同样的,这里的判断的依据也可以是查询本地是否存在缓存文件或者缓存文件的最后修改时间是否小于数据库字典数据最后的修改时间,其中,若数据的更新未被同步,则缓存文件的最后修改时间会小于数据库字典数据最后的修改时间,如用户在数据库中添加了自定义的词及其属性等。若需要重新加载词典,则执行下一步,若不需要重新加载词典,则结束任务,即不做任何操作。

s2.2:通过所述词典加载器重新加载词典。

具体的,同样的,此处也可以通过reload方法实现从数据库重新加载词典。

s2.3:判断词典加载是否成功,若是,则将所述词典写入本地缓存文件并更新备份文件后结束任务,否则,直接结束任务。

具体的,词典加载操作完成后,需要判断词典加载是否成功,若加载成功,则将重新加载到的词典写入本地缓存文件并更新备份文件,然后结束任务。若加载失败,则直接结束任务,即不做任何操作,依然采用之前的词典。

作为一种较优的实施方式,本发明实施例中,自定义的词典加载器包括:

继承抽象代码加载程序的类,实现所述抽象代码加载程序的抽象方法。

具体的,以hanlp中的核心词典为例,编写的自定义的词典加载器需要继承抽象代码加载程序(如abstractcoredictionaryloader)的类,实现抽象代码加载程序中的抽象方法。例如,可以将核心词典的加载器配置更改为自定义词典加载器类的完全限定名:

coredictionaryloader=com.hankcs.hanlp.loader.coredictionarydbloader。

作为一种较优的实施方式,本发明实施例中,所述词典同步时间间隔优选为300秒。

具体的,同样以hanlp中的核心词典为例,可以配置词典同步时间间隔syncinterval_core=300,单位为秒。

图4是根据一示例性实施例示出的可自定义的词典加载装置的结构示意图,参照图4所示,该装置包括:

文件配置模块,用于编写自定义的词典加载器以及配置词典同步时间间隔,生成配置文件;

具体的,使用者可以通过词典加载器自定义词典加载方式,如从数据库中加载或从本地缓存文件加载等方式,增加了词典加载方式的多样性。

词典加载模块,用于读取所述配置文件,实例化所述词典加载器并启动定时任务,所述定时任务的执行间隔为所述词典同步时间间隔。

作为一种较优的实施方式,本发明实施例中,所述词典加载模块包括:

文件读取单元,用于读取所述配置文件;

第一判断单元,用于判断是否需要重新加载词典;

第一加载单元,用于通过所述词典加载器重新加载词典或从本地缓存文件及更新备份文件加载词典;

数据存储单元,用于存储本地缓存文件以及备份文件;

定时更新单元,用于根据所述词典同步时间间隔执行定时任务。

作为一种较优的实施方式,本发明实施例中,所述词典加载模块还包括:

第二判断单元,用于判断词典加载是否成功。

作为一种较优的实施方式,本发明实施例中,所述文件配置模块包括:

方法实现单元,用于继承抽象代码加载程序的类,实现所述抽象代码加载程序的抽象方法。

作为一种较优的实施方式,本发明实施例中,所述文件配置模块还包括:

时间设置单元,用于设置词典同步时间间隔,其中所述词典同步时间间隔优选为300秒。

综上所述,本发明实施例提供的技术方案带来的有益效果是:

1、本发明提供的可自定义的词典加载方法及装置,通过采用词典加载器让使用者自定义词典加载方式(如从数据库中加载或从本地缓存文件加载等),可以使词典数据不再局限于现有的文本文件方法,而是可以采用任何形式的存储方式,只需要实现词典加载器的接口,并进行相应的配置即可实现词典数据的加载;

2、本发明提供的可自定义的词典加载方法及装置,通过提供定时更新词典数据的功能,并可根据设置的词典同步时间间隔去定时更新词典数据,不需要人工操作及重启,即可达到更新词典数据的目的,增加了词典加载的灵活性,降低了词典调整的复杂度。

需要说明的是:上述实施例提供的可自定义的词典加载装置在触发词典加载业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的可自定义的词典加载装置与可自定义的词典加载方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1