用于文本间匹配的方法技术

技术编号:18497199 阅读:35 留言:0更新日期:2018-07-21 20:13
本发明专利技术涉及一种用于文本间匹配的方法,包括如下各步骤:基于至少一个标识构建待匹配文本;基于感兴趣信息形成目标文本的集合;将待匹配文本按树结构进行解析;其中,树结构的根节点的每一个子节点对应于待匹配文本的至少一个字符;基于树结构来构建存储表;其中,存储表记录每个标识在树结构中所对应的至少一个节点,以及其中每个节点的节点位置以及节点状态;以及、基于存储表与目标文本的集合进行多模式匹配。其能够显著提升匹配运算的效率,并更高效地确定多个许可证所涉及的风险信息或不兼容信息,为开源软件开发企业提供可靠的风险防范措施。

A method for Intertext matching

The invention relates to a method of Intertext matching, including the following steps: building a set of pending texts based on at least one identification; forming a set of target text based on the information of interest; parsing the pending text according to the tree structure; in which each of the sub nodes of the root node of the tree structure corresponds to the matched text. At least one character; building a storage table based on tree structure; in which the storage table records at least one node corresponding to each identification in the tree structure, as well as the node position and node status of each node, and the multi pattern matching based on the set of the storage table and the target text. It can significantly improve the efficiency of the matching operation, and more efficiently determine the risk information or incompatible information involved in multiple licenses, and provide reliable risk prevention measures for the open source software development enterprise.

【技术实现步骤摘要】
用于文本间匹配的方法
本专利技术涉及一种用于文本间匹配的方法。
技术介绍
在字符串模式匹配
,主要的算法有:BM(Boyer-Moore)、Horspool、Sunday、KMP、KR、AC算法等,其中BM、Horspool、Sunday、KMP都为单模式匹配算法。设文本长度为n,集合P中字符串平均长度为k,单模式匹配最快可以做到O(m+k)的复杂度,但是,在多模式匹配的场合下,则需要O(mn+km)的复杂度;对于KR算法而言,最坏情况下需要O(k*m*n)的复杂度。可见,在多模式匹配的场合中,匹配效率存在恶化的趋势。另一方面,随着开源软件的不断发展和完善,其地位日益重要,开源软件的许可证也伴随着开源软件而产生。然而,由于对开源软件的不正确使用,产生了许多法律上的问题,给开源软件的开发企业带来了很大的风险或隐患。同时,许多开源软件都依赖其他的开源软件,而这些彼此依赖的开源软件使用的许可证复杂且不同,而这些许可证之间、及许可条款之间可能又存在各种兼容性问题,这也是使用开源软件的隐患。
技术实现思路
本专利技术的目的在于提供一种用于文本间匹配的方法,其能够提高多模式匹配的效率。为实现上述目的,本专利技术提供一种技术方案如下:一种用于文本间匹配的方法,包括如下各步骤:a)、基于至少一个标识构建待匹配文本;b)、基于感兴趣信息形成目标文本的集合;c)、将待匹配文本按树结构进行解析;其中,树结构的根节点的每一个子节点对应于待匹配文本的至少一个字符;d)、基于树结构来构建存储表;其中,存储表记录每个标识在树结构中所对应的至少一个节点,以及其中每个节点的节点位置以及节点状态;以及e)、基于存储表与目标文本的集合进行多模式匹配。优选地,存储表基于二维数组结构来构建。优选地,步骤c)中:基于Aho-Corasick算法将待匹配文本按树结构进行解析。优选地,存储表包括:每个节点对应的节点字符;每个节点所在的数组位置;每个节点的各子节点所在的数组位置;每个节点的各兄弟节点所在的数组位置;每个节点的输出状态;以及每个节点的FAIL节点所在的数字位置。优选地,树结构按如下方式来定义:根节点的各直接子节点与各标识的首字符一一对应;各标识对应的字符串分别定义为树结构的相应子树。优选地,标识为开源软件的许可证的键,感兴趣信息为开源软件所涉及的风险信息和/或不兼容信息。本专利技术进一步提供一种确定开源软件的许可证是否存在风险或不兼容的方法,其包括:利用如上所述的多模式匹配方法来进行至少一个许可证的键与风险信息和/或不兼容信息之间的匹配。本专利技术还公开一种文本间多模式匹配系统,包括:待匹配文本构建单元,用于基于至少一个标识构建待匹配文本;树结构形成单元,与待匹配文本构建单元耦合,用于将待匹配文本按树结构进行解析;其中,树结构的根节点的每一个子节点对应于待匹配文本的至少一个字符;表存储单元,与树结构形成单元耦合,用于基于树结构来构建存储表;其中,存储表记录每个标识在树结构中所对应的至少一个节点,以及其中每个节点的节点位置以及节点状态;以及多模式匹配单元,与表存储单元耦合,用于基于存储表与目标文本的集合进行多模式匹配。本专利技术各实施例提供的用于文本间匹配的方法以及文本间多模式匹配系统,在多模式匹配的场合下,能够显著提升匹配运算的效率。在将这种匹配方法或系统应用于验证开源软件的许可证的应用中,能够更高效地确定多个许可证所涉及的风险信息或不兼容信息,为开源软件开发企业提供可靠的风险防范措施。附图说明图1示出本专利技术第一实施例提供的用于文本间匹配的方法的流程示意图。图2示出本专利技术第二实施例提供的文本间多模式匹配系统的模块结构示意图。图3示出根据本专利技术一实施例的树结构。图4示出根据本专利技术一实施例的树结构的有限状态机图。具体实施方式在以下描述中提出具体细节,以便提供对本专利技术的透彻理解。然而,本领域的技术人员将清楚地知道,即使没有这些具体细节也可实施本专利技术的实施例。在本专利技术中,可进行具体的数字引用,例如“第一元件”、“第二装置”等。但是,具体数字引用不应当被理解为必须服从于其字面顺序,而是应被理解为“第一元件”与“第二元件”不同。本专利技术所提出的具体细节只是示范性的,具体细节可以变化,但仍然落入本专利技术的精神和范围之内。术语“耦合”定义为表示直接连接到组件或者经由另一个组件而间接连接到组件。以下通过参照附图来描述适于实现本专利技术的方法、系统和装置的优选实施例。虽然各实施例是针对元件的单个组合来描述,但是应理解,本专利技术包括所公开元件的所有可能组合。因此,如果一个实施例包括元件A、B和C,而第二实施例包括元件B和D,则本专利技术也应被认为包括A、B、C或D的其他剩余组合,即使没有明确公开。如图1所示,本专利技术第一实施例提供一种用于文本间匹配的方法,其特别适用于多模式匹配,该方法包括以下各步骤。步骤S10、基于至少一个标识构建待匹配文本。不同的标识通常可以不同的字符串来表征。具体地,可以将多个标识的字符串按照一定的顺序拼接在一起,从而构建出待匹配文本。作为示例,待匹配文本中包括4个字符串元素,其中每个字符串表征一个独特的标识。步骤S12、基于感兴趣信息形成目标文本的集合。在该步骤中,基于感兴趣信息来形成目标文本的集合,该集合中可以包括多个目标文本。在希望获知风险的场合中,感兴趣信息可以从相应的风险信息中提取,在提取过程中,还可以应用查询、分析、检索、组合等信息处理方式。步骤S14、将待匹配文本按树结构进行解析。其中,树结构的根节点的每一个子节点对应于待匹配文本的至少一个字符。需要说明的是,将待匹配文本按树结构进行解析并非意味着按照树结构来存储或进行后续计算,实际上,待匹配文本是在步骤S16中按照基于数组结构的存储表来存储的。应理解,在现有技术中,传统的多模式匹配算法可能需要构建树结构,树结构主要包括基于数组和基于链表两种方式,基于数组的多模式匹配算法在构建树时,由于在每个节点保存所有字符的集合,存在着大量的空间浪费,在运算时对于内存要求过高。而基于链表的树结构虽然避免了空间浪费,但是因为查找中需要多次回溯至根节点,所以增加了查询复杂度,造成匹配效率较低。为克服上述现有技术的缺陷,根据本专利技术上述实施例,将待匹配文本按树结构来解析,但是按照以下步骤S16中提出的存储表来存储及用于运算。优选情况下,基于Aho-Corasick算法(又称为AC自动机算法,简称AC算法)将待匹配文本按树结构进行解析。作为示例,经由解析可形成基于AC算法的树结构,这种树结构具有以下特征:(1)、树结构根节点的各直接子节点与各标识的首字符一一对应。(2)、各标识对应的字符串分别定义为树结构的相应子树。步骤S16、基于树结构来构建存储表。具体来说,存储表记录每个标识在树结构中所对应的至少一个节点,以及其中每个节点的节点位置以及节点状态,存储表可以采用二维数据结构来表征。在基于AC算法的应用场景下,在按照树结构进行解析之后,待匹配文本可以按存储表的形式来存储并参与后续的模式匹配运算。作为示例,在解析形成基于AC算法的树结构的情况下,存储表可以直接包括关于树结构的以下信息:每个节点对应的节点字符;每个节点所在的数组位置;每个节点的各子节点所在的数组位置;每个节点的各兄弟节点所在的数组位置;每个节点的输出状态;以本文档来自技高网...

【技术保护点】
1.一种用于文本间匹配的方法,包括如下各步骤:a)、基于至少一个标识构建待匹配文本;b)、基于感兴趣信息形成目标文本的集合;c)、将所述待匹配文本按树结构进行解析;其中,所述树结构的根节点的每一个子节点对应于所述待匹配文本的至少一个字符;d)、基于所述树结构来构建存储表;其中,所述存储表记录每个所述标识在所述树结构中所对应的至少一个节点,以及其中每个所述节点的节点位置以及节点状态;以及e)、利用所述存储表与所述目标文本的集合进行多模式匹配。

【技术特征摘要】
1.一种用于文本间匹配的方法,包括如下各步骤:a)、基于至少一个标识构建待匹配文本;b)、基于感兴趣信息形成目标文本的集合;c)、将所述待匹配文本按树结构进行解析;其中,所述树结构的根节点的每一个子节点对应于所述待匹配文本的至少一个字符;d)、基于所述树结构来构建存储表;其中,所述存储表记录每个所述标识在所述树结构中所对应的至少一个节点,以及其中每个所述节点的节点位置以及节点状态;以及e)、利用所述存储表与所述目标文本的集合进行多模式匹配。2.根据权利要求1所述的方法,其特征在于,所述存储表基于二维数组结构来构建。3.根据权利要求2所述的方法,其特征在于,所述步骤c)中:基于Aho-Corasick算法将所述待匹配文本按树结构进行解析。4.根据权利要求3所述的方法,其特征在于,所述存储表包括:每个所述节点对应的节点字符;每个所述节点所在的数组位置;每个所述节点的各子节点所在的数组位置;每个所述节点的各兄弟节点所在的数组位置;每个所述节点的输出状态;以及每个所述节点的FAIL节点所在的数字位置。5.根据权利要求3所述的方法,其特征在于,所述树结构按如下方式来定义:所述根节点的各直接子节点与各所述标识的首字符一一对应;各所述标识对应的字符串分别定义为所述树结构的相应子树。6.根据权利要求1至5中任一项所述的方法,其特征在于,所述标识为开源软件的许可证的键,所述感兴趣信息为所述开源软件所涉及的风险信息和/或不兼容信息。7.一种确定开源软件的许可证是否存在...

【专利技术属性】
技术研发人员:王琪何东杰刘为怀蒋丹妮叶家炜宋昊
申请(专利权)人:中国银联股份有限公司
类型:发明
国别省市:上海,31

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

1