一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于AC自动机的化学品名称检索和抽取方法及装置与流程

2021-10-27 21:15:00 来源:中国专利 TAG:自动机 抽取 化学品 装置 名称

一种基于ac自动机的化学品名称检索和抽取方法及装置
技术领域
1.本技术涉及自然语言处理技术领域,领域,具体为一种基于ac自动机的化学品名称检索和抽取方法及装置。


背景技术:

2.化工产业是国民经济的重要支柱产业。中国化工行业在经过半个多世纪的发展已经形成配套齐全的化学工业体系,随之而来的是各类海量化学品及对应性质、反应关系等信息。目前收录的化学品数量已多达数十万种,且每年还在以几万种的速度增加。面对数量如此庞大的化学品种类,为其建立基本信息库以便管理是必不可少的工作。此外,随着大数据的发展,仅检索化学品名称和性质已不能满足化工人员的日常需求,建立化学品的知识图谱和知识问答库正成为新的趋势,由此产生的化学品名称快速检索、精确匹配、模糊匹配以及长文本中的抽取技术等算法问题则显得至关重要。


技术实现要素:

3.本技术的目的:提出一种基于ac自动机的化学品名称检索和抽取方法及装置。实现输入待检索化学品名称,精确匹配或模糊匹配到所有候选的名称;实现输入一段包含化学品名称的长文本,从中抽取出长文本中包含的化学品名称的相同或相似的名称,解决目前化学品信息检索不全面、检索方法单一以及检索效率低的问题。
4.本技术的目的是通过如下技术方案来完成的,一种基于ac自动机的化学品名称检索方法,包括:获取所有化学品名称,将所有化学品名称转成utf

8的编码格式,生成所有化学品名称对应的名称id并记录;将所有化学品名称逐字依次加入到字典树中形成化学品名称字典树,建立所述化学品名称字典树中每个非叶子节点的索引字典并合并相同的索引字典;为化学品名称字典树设定一个指针,所述指针初始状态指向化学品名称字典树的根节点;检索时,所述指针从根节点向子节点遍历查找,直至指针指向叶子节点,从叶子节点返回输出所检索化学品名称的名称id。
5.优选地,所述指针初始状态指向所检索的化学品名称的第一个字符对应的子节点;检索时,所述指针从第一个字符对应的子节点往下遍历查找,直至指针指向叶子节点,从叶子节点返回输出所检索化学品名称的名称id。
6.一种基于ac自动机的化学品名称抽取方法,包括:获取所有化学品名称,将所有化学品名称转成utf

8的编码格式,生成所有化学品名称对应的名称id并记录;将所有化学品名称逐字依次加入到字典树中形成化学品名称字典树,建立化学品
名称字典树中每个非叶子节点的失败指针,所述失败指针用于当遍历过程中出现匹配失败的情况时,化学品名称字典树马上可以进入新的状态而不至于回到根节点重新开始匹配;所述失败指针的构造方法包括:当失败非叶子节点为任一非叶子节点,则失败指针指向根节点;获取一段包含化学品名称的长文本,根据化学品名称字典树抽取所述一段包含化学品名称的长文本中的包含的名称id。
7.优选地,当失败非叶子节点为根节点的子节点,则失败指针指向根节点;当失败非叶子节点为其他非叶子节点:则查找所述其他非叶子节点的上层子节点的失败子节点,从失败子节点的子节点中查找与所述其他节点相同的子节点,若查找到与所述其他节点相同的子节点,则失败指针指向与所述其他节点相同的子节点;若查找不到与所述其他节点相同的子节点,则重复上述步骤,直至失败指针指向根节点。
8.一种基于ac自动机的化学品名称检索装置,包括:处理器,所述处理器与存储器耦合;所述存储器用于存储指令;所述处理器用于执行所述存储器中存储的存储指令,以使所述装执行以上任一项所述的基于ac自动机的化学品名称检索方法。
9.一种基于ac自动机的化学品名称抽取装置,包括:处理器,所述处理器与存储器耦合;所述存储器用于存储指令;所述处理器用于执行所述存储器中存储的存储指令,以使所述装执行以上任一项所述的基于ac自动机的化学品名称抽取方法。
10.一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现以上任一项所述的方法。
11.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序使计算机执行时实现以上任一项所述的方法。
12.本技术与现有技术相比,至少具有以下明显优点和效果:1、利用一种基于ac自动机的化学品名称检索方法,包括:获取所有化学品名称,将所有化学品名称转成utf

8的编码格式,生成所有化学品名称对应的名称id并记录;将所有化学品名称逐字依次加入到字典树中形成化学品名称字典树,建立所述化学品名称字典树中每个非叶子节点的索引字典并合并相同的索引字典;为化学品名称字典树设定一个指针,所述指针初始状态指向化学品名称字典树的根节点;检索时,所述指针从根节点向子节点遍历查找,直至指针指向叶子节点,从叶子节点返回输出所检索化学品名称的名称id,实现精确或者模糊查找所有的化学品名称,不仅检索全面而且效率高,有助于化学品知识图谱和知识问答库的建立,进一步完善化学品数据库,给相关从业人员提供指导。
附图说明
13.图1是本发明实现一种基于ac自动机的化学品名称检索方法的流程图;
图2是本发明一种实施例的化学品字典树示意图;图3是本发明实现一种基于ac自动机的化学品名称抽取方法的流程图;图4是本发明实现一种基于ac自动机的化学品名称抽取方法的化学品名称字典树的示意图;图5是实现本发明的方法的一种电子设备示意图。
具体实施方式
14.下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
15.本技术的权利要求书和说明书的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序,应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式,此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他单元。
16.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同,本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本技术。
17.下面对本技术实施例中的一些专业术语以及该专业术语与本技术的关系进行解释说明。
18.aho

corasick自动机算法(简称ac自动机)是最著名的多模式匹配算法之一,其本质是一种树形结构,具有线性时间复杂度、柔韧性高、可容忍短模式等突出优点,该算法于1975年产生自贝尔实验室,在字符匹配问题中取得了很好的效果。化学品种类虽然多达数十万种,但涉及到的字符却非常有限,常见的字符如数字(0

9)、天干地支(甲、乙、丙、丁
……
)、元素名称(碳、氢、氧、氯
……
)和一些有机物字符(烷、烃、苯、醛
……
)等等,所以ac自动机的状态数量有限。此外,化学品命名时具备一定的规则,如“甲烷”、“甲醛”、“甲醇
”……
,这一类化学品均可以通过“甲”这个非叶子节点延伸下去,大大降低了算法所需要的存储开销。本发明致力于将ac自动机算法改进并应用到化学品名称的快速匹配和抽取当中。
19.实施例1如图1所示,一种基于ac自动机的化学品名称检索方法,包括以下步骤:s110、获取所有化学品名称,将所有化学品名称转成utf

8的编码格式,生成所有化学品名称对应的名称id并记录;s120、将所有化学品名称逐字依次加入到字典树中形成化学品名称字典树,建立所述化学品名称字典树中每个非叶子节点的索引字典并合并相同的索引字典;s130、为化学品名称字典树设定一个指针,所述指针初始状态指向化学品名称字典树的根节点;
s140、检索时,所述指针从根节点向子节点遍历查找,直至指针指向叶子节点,从叶子节点返回输出所检索化学品名称的名称id。
20.在实施例1中,首先获取所有化学品名称,将所有化学品名称转成utf

8的编码格式,生成所有化学品名称对应的名称id并记录,名称id用于检索结果的返回,以便进一步查询化学品的属性及其相关信息;将所有化学品名称逐字依次加入到字典树中形成化学品名称字典树,建立所述化学品名称字典树中每个非叶子节点的索引字典并合并相同的索引字典,所述化学品名称字典树根节点下的子节点的有序集合代表所有化学品名称的第一个字符,所述化学品名称字典树的叶子节点代表所有化学品名称的最后一个字符,所述化学品名称字典树中其他子节点代表所有化学品名称的中间字符,每个子节点均有对应的子节点id,如图2所示,根节点下的id为1的子节点甲和id为4的子节点乙为所有化学品名称的第一个字符,需要说明的是,所述化学品名称字典树根节点下的子节点的有序集合包括所有化学品名称的第一个字符,不限于本实施例的甲和乙,id为2的子节点醇和id为3的子节点醛为id为1的子节点甲的子节点,id为5的子节点醇和id为6的子节点醛为id为1的子节点甲的子节点,在构建化学品名称字典树时,建立所述化学品名称字典树中每个非叶子节点的索引字典并合并相同的索引字典,每个子节点均有对应的子节点id,当子节点id相同时,合并相同的子节点id,因此如图2所示,醇和醛为甲和乙共同的子节点,因此醇的子节点id为[2,5,
……
],醛的子节点id为[3,6,
……
],同理,甲和乙的子节点不限于醇和醛,为化学品名称字典树设定一个指针,所述指针初始状态指向化学品名称字典树的根节点,检索时,所述指针从根节点向子节点遍历查找,直至指针指向叶子节点,每一个叶子节点会有一个输出,从叶子节点返回输出所检索化学品名称的名称id,如图2所示,如输入所检索化学品名称为甲醛,化学品名称字典树的指针从根节点向子节点遍历查找,查找到id为1的子节点甲,然后从id为1的子节点甲继续向其子节点查找,查找到id为3的子节点醛,id为3的子节点醛可以为叶子节点,则指针指向id为3的子节点醛,此时输出甲醛的名称id,由于数据库里已经存储了所有化学品名称的名称id,将输出的名称id匹配后,最后得到所检索的化学品名称为甲醛,然后可进一步查询数据库得到甲醛的详细信息。实现对化学品名称的精确检索和模糊检索。
[0021]
实施例2所述指针初始状态指向所检索的化学品名称的第一个字符对应的子节点;检索时,所述指针从第一个字符对应的子节点往下遍历查找,直至指针指向叶子节点,从叶子节点返回输出所检索化学品名称的名称id。
[0022]
在实施例2中,所述指针初始状态指向所检索的化学品名称的第一个字符对应的子节点,输入所检索化学品名称为化学品名称的已知字符和未知字符的组合,所述未知字符采用utf

8的编码格式以外的字符,例如*硝基*,检索时,所述指针从第一个字符对应的子节点往下遍历查找,即指针指向硝字对应的所有子节点id,然后从所有子节点id的子节点继续查找基字对应的所有子节点id,当查找到基字对应的所有子节点id时,基字对应的所有子节点id为叶子节点,从基字对应的所有子节点id返回输出名称id中包含硝基的所有名称id,例如邻硝基甲苯、硝基苯、对硝基氯化苯等。实现对化学品名称的精确检索和模糊检索,且在模糊检索时,直接从所检索的化学品名称的第一个字符对应的子节点开始查找,不从根节点向子节点遍历查找,效率更高。
[0023]
实施例3如图3所示,一种基于ac自动机的化学品名称抽取方法,包括:获取所有化学品名称,将所有化学品名称转成utf

8的编码格式,生成所有化学品名称对应的名称id并记录;将所有化学品名称逐字依次加入到字典树中形成化学品名称字典树,建立化学品名称字典树中每个非叶子节点的失败指针,所述失败指针用于当遍历过程中出现匹配失败的情况时,化学品名称字典树马上可以进入新的状态而不至于回到根节点重新开始匹配;所述失败指针的构造方法包括:当失败非叶子节点为任一非叶子节点,则失败指针指向根节点;获取一段包含化学品名称的长文本,根据化学品名称字典树抽取所述一段包含化学品名称的长文本中的包含的名称id。
[0024]
在实施例3中,获取所有化学品名称,将所有化学品名称转成utf

8的编码格式,生成所有化学品名称对应的名称id并记录;将所有化学品名称逐字依次加入到字典树中形成化学品名称字典树,建立化学品名称字典树中每个非叶子节点的失败指针,所述失败指针用于当遍历过程中出现匹配失败的情况时,化学品名称字典树马上可以回到根节点重新开始匹配;所述失败指针的构造方法包括:当失败非叶子节点为任一非叶子节点,则失败指针指向根节点;如图2所示,当失败非叶子节点指向甲、乙、醇和醛任意一个子节点,则失败指针指向根节点,每个子节点均有对应的子节点id,获取一段包含化学品名称的长文本,例如,甲醇和乙醇有什么区别,从化学品名称字典树的根节点,从甲醇和乙醇有什么区别的甲字开始顺序遍历查找,当查找到id为1的子节点甲,从id为1的子节点甲向下遍历查找醇,当查找到id为2的子节点醇,从id为2的子节点醇向下遍历查找和,无法查找到和的子节点id,此时回到化学品名称字典树的根节点,继续查找乙的子节点id,当查找到id为4的子节点乙,从id为4的子节点乙继续查找醇的子节点id,当查找到id为5的子节点醇,从id为5的子节点醇继续查找有的子节点id,无法查找到有的子节点id,时回到化学品名称字典树的根节点,按照上述方法继续查找,直至最后一个字别被查找结束,在甲醇和乙醇有什么区别文本中化学品名称的抽取过程中,无法查找到和的子节点id时,id为2的子节点醇可以作为叶子节点,每一个叶子节点会有一个输出,因此从id为2的子节点醇的叶子节点返回输出甲醇的名称id,同样,无法查找到有的子节点id时,id为5的子节点醇以作为叶子节点,因此从id为5的子节点醇返回输出乙醇的名称id,最后抽取得到甲醇和乙醇有什么区别文本中包含化学品名称的名称id,由于数据库里已经存储了所有化学品名称的名称id,将抽取的名称id匹配后,最后得到所抽取的化学品名称为甲醇和乙醇,然后可进一步查询数据库得到甲醇和乙醇的详细信息。失败指针用于当遍历过程中出现匹配失败的情况时,化学品名称字典树马上于回到根节点重新开始匹配,实现对一段文本中包含的化学品名称的精确检索。
[0025]
实施例4所述失败指针的构造方法包括:当失败非叶子节点为根节点的子节点,则失败指针指向根节点;当失败非叶子节点为其他非叶子节点:
则查找所述其他非叶子节点的上层子节点的失败子节点,从失败子节点的子节点中查找与所述其他节点相同的子节点,若查找到与所述其他节点相同的子节点,则失败指针指向与所述其他节点相同的子节点;若查找不到与所述其他节点相同的子节点,则重复上述步骤,直至失败指针指向根节点。
[0026]
如图4所示,失败指针用虚线表示,对于id为1的子节点甲和id为10的子节点苯,他们的失败指针直接指向根节点,失败指针在遍历过程中出现匹配失败的情况时,化学品名称字典树马上从根节点重新开始查找;求id为11的子节点甲的失败指针时,先查找id为10的子节点苯的失败子节点,此时,id为10的子节点苯的失败子节点为根节点,则从根节点的子节点中查找与id为11的子节点甲相同的子节点,查找到与id为11的子节点甲相同的子节点为id为1的子节点甲,则失败指针指向id为1的子节点甲,如果查找不到相同的子节点,则重复上述步骤,若一直查找不到,则失败指针指向根节点。本实施例中,失败指针用于当遍历过程中出现匹配失败的情况时,化学品名称字典树马上可以进入新的状态而不至于必须回到根节点重新开始匹配,提高抽取的效率。
[0027]
实施例5一种基于ac自动机的化学品名称检索装置,包括:处理器,所述处理器与存储器耦合;所述存储器用于存储指令;所述处理器用于执行所述存储器中存储的存储指令,以使所述装执行以上所述的基于ac自动机的化学品名称检索方法。
[0028]
实施例6一种基于ac自动机的化学品名称抽取装置括:处理器,所述处理器与存储器耦合;所述存储器用于存储指令;所述处理器用于执行所述存储器中存储的存储指令,以使所述装执行如以上所述的基于ac自动机的化学品名称抽取方法。
[0029]
实施例7如图5所示,一种电子设备,包括存储器501和处理器502,所述存储器501用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器502执行以实现上述的一种空间性域名的处理方法。
[0030]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0031]
一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现如上述的一种空间性域名的处理方法。
[0032]
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器501中,并由处理器502执行,并由输入接口505和输出接口506完成数据的i/o接口传输,以完成本发明,一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机设备中的执行过程。
[0033]
计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可包括,但不仅限于,存储器501、处理器502,本领域技术人员可以理解,本实施例
仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入器507、网络接入设备、总线等。
[0034]
处理器502可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器502、数字信号处理器502(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field

program503mablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器502可以是微处理器502或者该处理器502也可以是任何常规的处理器502等。
[0035]
存储器501可以是计算机设备的内部存储单元,例如计算机设备的硬盘或内存。存储器501也可以是计算机设备的外部存储设备,例如计算机设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等,进一步地,存储器501还可以既包括计算机设备的内部存储单元也包括外部存储设备,存储器501用于存储计算机程序以及计算机设备所需的其他程序和数据,存储器501还可以用于暂时地存储在输出器508,而前述的存储介质包括u盘、移动硬盘、只读存储器rom503、随机存储器ram504、碟盘或光盘等各种可以存储程序代码的介质。
[0036]
以上所述仅为本发明的具体实施例,但本发明的技术特征并不局限于此,任何本领域的技术人员在本发明的领域内,所作的变化或修饰皆涵盖在本发明的专利范围之中。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜