CN110472031A - 一种正则表达式获得方法、装置、电子设备及存储介质 - Google Patents
一种正则表达式获得方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110472031A CN110472031A CN201910746640.XA CN201910746640A CN110472031A CN 110472031 A CN110472031 A CN 110472031A CN 201910746640 A CN201910746640 A CN 201910746640A CN 110472031 A CN110472031 A CN 110472031A
- Authority
- CN
- China
- Prior art keywords
- sequence
- obtains
- cluster
- regular
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种正则表达式获得方法、装置、电子设备及存储介质,用于改善很难从非自然语言序列提取正则表达式的问题。该方法包括:对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量;对多个序列向量进行聚类分析,获得多个聚类结果,多个聚类结果中的每个聚类结果包括多个序列向量;将多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,获得多个合并序列;从多个合并序列的每个合并序列中提取正则表达式,获得多个正则表达式。通过向量化处理和聚类处理使得提取正则表达式的数据范围从自然语言文本语料到非自然语言文本语料,从而改善了目前很难从非自然语言序列提取正则表达式的问题。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种正则表达式获得方法、装置、电子设备及存储介质。
背景技术
目前的提取正则表达式的方法,通常是先获取语料样本,再根据分词技术对语料样本进行分词,得到语料样本中包含的样本分词以及对应的样本分词词性;然后根据自然语言的语法规则分析样本分词,从样本分词中提取样本关键分词;最后根据样本关键分词和样本分词词性撰写语料样本对应的正则表达式。
在实践中发现,上述的方法仅适用于能够提取到关键词的自然语言序列,而对于无法提取关键词的非自然语言序列则不适用,也就是说,现有方法很难从非自然语言序列提取正则表达式。
发明内容
本申请实施例的目的在于提供一种正则表达式获得方法、装置、电子设备及存储介质,用于改善很难从非自然语言序列提取正则表达式的问题。
本申请实施例提供了一种正则表达式获得方法,包括:对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量;对所述多个序列向量进行聚类分析,获得多个聚类结果,所述多个聚类结果中的每个聚类结果包括多个序列向量;将所述多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,获得多个合并序列;从所述多个合并序列的每个合并序列中提取正则表达式,获得多个正则表达式。在上述的实现过程中,对获得的多个有规律的字符序列进行向量化处理和聚类处理,最后对聚类处理获得的多个序列向量进行合并获得多个合并序列,通过向量化处理和聚类处理使得提取正则表达式的数据范围从自然语言文本语料到非自然语言文本语料,从而改善了目前很难从非自然语言序列提取正则表达式的问题。
可选地,在本申请实施例中,所述对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量,包括:对所述多个有规律的字符序列进行分词,获得多个词语;对所述多个词语统计词语的频率,获得多个频率;根据所述多个频率对多个词语进行向量化处理,获得多个序列向量。在上述的实现过程中,根据统计方法计算词频,可以将相似字符序列中的相同部分表示为高频,差异部分表示为低频,有效地减小了在聚类处理时造成的不良影响。
可选地,在本申请实施例中,在所述对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量之后,在所述对所述多个序列向量进行聚类分析,获得多个聚类结果,该多个聚类结果中的每个聚类结果包括多个序列向量之前,还包括:减少所述多个序列向量中的每个序列向量的维度,获得维度减少后的多个序列向量。在上述的实现过程中,通过对减少序列向量的维度,能够有效地减少后续处理的运算量,从而节约了计算资源。
可选地,在本申请实施例中,所述对所述多个序列向量进行聚类分析,获得多个聚类结果,包括:对所述多个序列向量进行聚类分析,获得多个未筛选的聚类;对所述多个未筛选的聚类进行评估,获得评估结果;根据所述评估结果对所述多个未筛选的聚类进行筛选,获得所述多个聚类结果。在上述的实现过程中,通过对聚类结果进行评估,根据评估结果筛选聚类结果,从而减少了聚类错误导致无法合并的概率。
可选地,在本申请实施例中,所述将所述多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,包括:根据最长公共子序列算法对所述多个序列向量中的任意两个序列向量计算公共矩阵;根据所述公共矩阵合并所述多个序列向量中的任意两个序列向量对应的字符序列,获得合并后的序列;根据合并后的序列对所述多个序列向量中的剩余序列向量对应的字符序列进行合并。在上述的实现过程中,对聚类结果中能够合并的序列向量进行合并,从而有效地减少提取正则表达式的计算量。
本申请实施例还提供了一种正则表达式获得装置,包括:第一处理模块,用于对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量;第一分析模块,用于对所述多个序列向量进行聚类分析,获得多个聚类结果,所述多个聚类结果中的每个聚类结果包括多个序列向量;第一合并模块,用于将所述多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,获得多个合并序列;第一提取模块,用于从所述多个合并序列的每个合并序列中提取正则表达式,获得多个正则表达式。在上述的实现过程中,对获得的多个有规律的字符序列进行向量化处理和聚类处理,最后对聚类处理获得的多个序列向量进行合并获得多个合并序列,通过向量化处理和聚类处理使得提取正则表达式的数据范围从自然语言文本语料到非自然语言文本语料,从而改善了目前很难从非自然语言序列提取正则表达式的问题。
可选地,在本申请实施例中,所述第一处理模块包括:第一获得模块,用于对所述多个有规律的字符序列进行分词,获得多个词语;对所述多个词语统计词语的频率,获得多个频率;第二处理模块,用于根据所述多个频率对多个词语进行向量化处理,获得多个序列向量。
可选地,在本申请实施例中,还包括:第二获得模块,用于减少所述多个序列向量中的每个序列向量的维度,获得维度减少后的多个序列向量。
可选地,在本申请实施例中,所述第一分析模块包括:聚类分析模块,用一个对所述多个序列向量进行聚类分析,获得多个未筛选的聚类;聚类评估模块,用于对所述多个未筛选的聚类进行评估,获得评估结果;聚类筛选模块,用于根据所述评估结果对所述多个未筛选的聚类进行筛选,获得所述多个聚类结果。
可选地,在本申请实施例中,所述第一合并模块包括:矩阵计算模块,用于根据最长公共子序列算法对所述多个序列向量中的任意两个序列向量计算公共矩阵;序列获得模块,用于根据所述公共矩阵合并所述多个序列向量中的任意两个序列向量对应的字符序列,获得合并后的序列;序列合并模块,用于根据合并后的序列对所述多个序列向量中的剩余序列向量对应的字符序列进行合并。
本申请实施例还提供了一种电子设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如上所述的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上所述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出的本申请实施例提供的正则表达式获得方法流程示意图;
图2示出的本申请实施例提供的字符序列的其中一种数据流向示意图;
图3示出的本申请实施例提供的分词和词频分析的方法流程示意图;
图4示出的本申请实施例提供的聚类分析的方法流程示意图;
图5示出的本申请实施例提供的合并处理中的公共矩阵示意图;
图6示出的本申请实施例提供的正则表达式获得装置结构示意图;
图7示出了本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
第一实施例
请参见图1示出的本申请实施例提供的正则表达式获得方法流程示意图;需要说明的是,该方法可以由电子设备来执行,这里的电子设备可以是指具有执行计算机程序功能的设备终端,设备终端例如:个人电脑、网络交换机、网络路由器或台式主机等;当然这里的电子设备也可以是服务器,该服务器是指通过网络提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型机、小型机和UNIX服务器。本申请实施例提供了一种正则表达式获得方法,该方法可以包括如下步骤:
步骤S110:对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量。
请参见图2示出的本申请实施例提供的字符序列的其中一种数据流向示意图;图中的字符序列,是指被人类可识别的字符串和其他不可见、不可读的字符序列(CharacterSequence),被人类可识别的字符串例如:“热烈欢迎学生以及学生家长前来学生食堂就餐”,其他不可见的字符例如:换行符、分页符、分段符等等。有规律的字符序列是指具有一定的模式或图式(Pattern)的字符序列或者字符串,例如:邮箱地址为abc@abc.com,那么可以总结出邮箱地址的模式或者图式为:有限个字符后接“@”符号,再接一到二十个字符加后缀,常见的后缀例如:“.com”、“.cn”或“.org”等等。
在本申请实施例中,多个有规律的字符序列的获得方式有两种方式,第一种方式是在上述的电子设备中预先存储的多个有规律的字符序列,例如:提前人工拷贝在该电子设备中;第二种方式是由其它电子设备发送,例如:接收其它电子设备发送的多个有规律的字符序列,并对该多个有规律的字符序列进行存储,这里的其它电子设备和上面描述的电子设备一致,其它电子设备可以是指设备终端,也可以是指服务器。
向量化(Vectorization)处理,可以是指对上述的多个有规律的字符序列使用向量表示,即把字符序列转化为向量形式;当然在具体的实施过程中,可以对字符序列进行向量化表示,也可以先对多个有规律的字符序列分词(Tokenization),获得多个词语,针对多个词语使用向量表示,获得多个词向量(Word Vector),按照句子使用词向量表示时,则获得多个句子向量(Sentence Vector)。
序列向量,是指对字符序列进行向量化表示获得的向量,当然,在对字符序列进行向量化表示之前,可以先对多个有规律的字符序列分词,再使用向量表示获得多个词向量,再使用词向量表示句子的向量,则获得序列向量。在本申请实施例中,为了便于理解和说明,下面均以对字符序列分词,再使用向量表示获得序列向量为例进行说明,对字符序列进行向量化表示的过程可以包括如下的步骤:
步骤S111:对多个有规律的字符序列进行分词,获得多个词语。
其中,多个有规律的字符序列中的每个有规律的字符序列中均可以被分词为多个词语,例如:有5个有规律的字符序列,其中,5个有规律的字符序列中的每个有规律的字符序列均可以被分词为5个词语,那么获得的词语的个数为5*5=25个。
分词(Tokenization),是指将连续的字序列按照一定的规范重新组合成词序列的过程,以自然语言处理(Natural Language Processing,NLP)领域为例,常见的分词分为英文分词和中文分词,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符。虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。
在具体的实施过程中,分词的方法有很多种,例如:第一类是基于语法和规则的分词法:基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来进行词性标注,以解决分词歧义现象。第二类是机械式分词法(即基于词典):机械分词的原理是将文档中的字符串与词典中的词条进行逐一匹配,如果词典中找到某个字符串,则匹配成功,可以切分,否则不予切分,机械式分词法例如:以词典为依据的正向最大匹配法、逆向最大匹配法和最少切分法。第三类是基于统计的方法:基于统计的分词法的基本原理是根据字符串在语料库中出现的统计频率来决定其是否构成词。词是字的组合,相邻的字同时出现的次数越多,就越有可能构成一个词,基于统计的方法例如:隐马尔可夫模型(HiddenMarkov Model,HMM)方法、N元模型(N-gram)方法和条件随机场方法等等;其中,条件随机场是一个基于统计的序列标记和分割的方法,属于基于统计的分词方法范畴。
请参见图3示出的本申请实施例提供的分词和词频分析的方法流程示意图;上面的多个有规律的字符序列中的其中一个有规律的字符序列进行分词为例说明,其中,这里的分词可以是中文分词,也可以是其它语言的分词,因此,这里分词的语言种类不应理解为对本申请实施例的限制。这里以中文分词为例进行说明,句子“热烈欢迎学生以及学生家长前来学生食堂就餐”按照语义进行分词,获得的多个词语分别为“热烈欢迎学生以及学生家长前来学生食堂就餐”。
步骤S112:对多个词语统计词语的频率,获得多个频率。
请见图3,继续以上面的例子进行说明,统计上面描述的多个词语“热烈欢迎学生以及学生家长前来学生食堂就餐”的出现频率,这些词语“热烈欢迎学生以及家长前来食堂就餐”分别出现的次数为“1 1 3 1 1 1 1 1”,因此,可以根据每个词语出现的次数,统计每个词语的频率,例如:上面的词语个数一共为10个,那么这些词语“热烈欢迎以及家长前来食堂就餐”的频率均为0.1,而词语“学生”的频率为0.7。
步骤S113:根据多个频率对多个词语进行向量化处理,获得多个序列向量。
其中,如上面描述的,多个有规律的字符序列中的每个有规律的字符序列进行分词后均可获得多个词语,多个词语例如使用下表字母进行表示,表中第一列为字符序列的序号,一共有五个字符序列,其中,五个字符序列中的每个字符序列均包括多个词语(这里以五个词语为例进行说明)。下面的每个字母均代表一个词语,例如:A代表词语学生,当然,在具体的实施过程中也可以代表一个单词,代表的单词例如student,多个有规律的字符序列中的每个有规律的字符序列进行分词后均可获得多个词语表示为如下表:
可以理解的是,根据多个频率对多个词语进行向量化处理的具体实施方式有多种方式,例如:统计频次和频率方法、词频反转文件频率(term frequency–inverse documentfrequency,TF-IDF)方法和独热(one-hot)编码向量化方法等等。这里采用向量化算法的原则是能够把字符序列中的高频和低频的部分区分开,例如:可以直接将单词替换为统计词频然后再对得到的句子向量做傅里叶变换得到等长句子向量。这里为了便于理解和说明,以统计频次和频率方法进行说明,当然在具体的实施过程中,可以根据实际情况进行选择,使用统计频次和频率对上面表中的词语进行向量化处理表示为如下表:
序号 | A | B | C | D | E | O | P | Q | R | 总和 |
次数 | 5 | 2 | 4 | 6 | 2 | 1 | 1 | 1 | 3 | 25 |
1 | 0.2 | 0.08 | 0.16 | 0.24 | 0.08 | 0 | 0 | 0 | 0 | 0.76 |
2 | 0.2 | 0 | 0.16 | 0.24 | 0.08 | 0 | 0 | 0 | 0 | 0.68 |
3 | 0 | 0 | 0 | 0.24 | 0 | 0.04 | 0.04 | 0.04 | 0 | 0.36 |
4 | 0.2 | 0 | 0.16 | 0 | 0 | 0 | 0 | 0 | 0.12 | 0.48 |
5 | 0.2 | 0.08 | 0.16 | 0.24 | 0 | 0 | 0 | 0 | 0 | 0.68 |
如上表所示,前一行为列名,前一行的字母分别代表下面行都是与该字母有关的数据,上面已经描述过,每个字母均代表一个词语,这里就不再对这一点赘述。最后的列为总和,表示前面列的总和,例如:最后一列的第二行表示字母出现的总次数,第二行的前面几列为每个字母出现的次数。第三行除首尾列的数据为第一字符序列“A B C D E”的序列向量,该序列向量为“0.2 0.08 0.16 0.24 0.08 0 0 0 0”,第三行首列的数据为第一字符序列的序号为1,第三行尾列的数据为第一字符序列的所有字母的频率之和,下面的四行依次类推,因此这里不再赘述,通过上面的分析过程即可获得多个字符序列的序列向量。
在上述的实现过程中,根据统计方法计算词频,可以将相似字符序列中的相同部分表示为高频,差异部分表示为低频,有效地减小了在聚类处理时造成的不良影响。
在步骤S110之后,执行步骤S120:对该多个序列向量进行聚类分析,获得多个聚类结果,多个聚类结果中的每个聚类结果包括多个序列向量。
聚类(Clustering),是指按照一个或多个维度将多个字符序列分成由类似的字符序列组成的多个类的过程。也就是说,由聚类所生成的簇类是一组数据对象的集合,这些对象与同一个簇类中的对象彼此相似,与其他簇类中的对象相异,即人们常说的“物以类聚,人以群分”。
请参见图4示出的本申请实施例提供的聚类分析的方法流程示意图;如上描述的,多个字符序列是可以按照一个或多个维度被分为由类似的字符序列组成的多个类的,这里为了便于理解和说明,以按照两个维度被分为由类似的字符序列组成的四个类为例进行说明。图中的横坐标为第一维度,纵坐标为第二维度,在具体的实施过程中,这里的第一维度和第二维度均是一种维度,这种维度的种类有很多种,例如:词性、感情色彩和组成词语的个数等等。
步骤S121:对该多个序列向量进行聚类分析,获得多个未筛选的聚类。
当然,在具体的实施过程中,聚类分析可以采用的方法有很多种,聚类分析方法例如:谱聚类(Spectral Clustering)方法、K均值聚类算法(K-means clusteringalgorithm,有时简称K-means)、基于密度的聚类算法(Density-Based SpatialClustering of Applications,DBSCAN)等无监督聚类算法。
步骤S122:对该多个未筛选的聚类进行评估,获得评估结果。
其中,对多个未筛选的聚类进行评估,是指通过评估算法使类内的距离尽可能小,且类间的距离尽可能大的评估算法。如上面描述的,对多个序列向量进行聚类分析后,可以获得多个未筛选的聚类,然而获得的多个聚类结果不一定可以直接拿来使用,因此,在获得多个聚类结果后,需要对获得的多个聚类结果进行评估和筛选,通过对聚类结果进行评估,根据评估结果筛选聚类结果,以减少聚类错误导致无法合并的情况。
步骤S123:根据该评估结果对多个未筛选的聚类进行筛选,获得多个聚类结果。
如上描述的,可以在获得多个聚类结果后,对获得的多个聚类结果进行评估和筛选,例如:聚类分析后获得10个聚类结果,然而在实践的过程中发现,这10个聚类结果中有2个聚类结果的字符序列的个数均只有一个,意思是将一个字符序列划分为一类,这显然是不合适的,在具体的实施过程中,可以将这种聚类获得的类剔除掉,只剩下8个聚类结果继续下面的步骤。因此,需要对获得的多个聚类结果进行评估和筛选,这里的对聚类结果评估的方法也有很多种,可以通过计算聚类结果中的分类质量的评估指数来评估,这些评估指数例如:轮廓系数(Silhouette Coefficient)、基于分数的互信息(Mutual Informationbased scores)和调整兰德系数(Adjusted Rand index)。在上述的实现过程中,通过对聚类结果进行评估,根据评估结果筛选聚类结果,从而减少了聚类错误导致无法合并的概率。
可选地,在本申请实施例中,在步骤S110之后,在步骤S120之前,还可以对序列向量进行降维,该步骤为:减少多个序列向量中的每个序列向量的维度,获得维度减少后的多个序列向量。
在具体的实施过程中,减少多个序列向量中的每个序列向量的维度的方法有很多种,例如:主成分分析(Principal Component Analysis,PCA)方法、缺失值比率(MissingValues Ratio)方法、低方差滤波(Low Variance Filter)方法、高相关滤波(HighCorrelation Filter)方法、前向特征构造(Forward Feature Construction)方法、随机森林(Random Forests)方法和反向特征消除(Backward Feature Elimination)方法等等。在上述的实现过程中,通过对减少序列向量的维度,能够有效地减少后续处理的运算量,从而节约了计算资源。
在步骤S120之后,执行步骤S130:将该多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,获得多个合并序列。
合并(merge),是指将多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列(即多个聚类结果中的每个聚类结果中的多个字符序列)进行合并,当然,这里的每个聚类结果中的多个字符序列中有些字符序列是可以合并的,有些字符序列是不能合并的,这里的合并是指将能够合并的字符序列进行合并,直到不能再合并序列为止。
可以理解的是,经过上述的合并操作后,多个合并序列的数量是大于或者等于多个聚类结果的数量的,因为上述的每个聚类结果中的多个字符序列中有些字符序列是可以合并的,有些字符序列是不能合并的,具体地例如:有3个聚类结果,3个聚类结果中的每个聚类结果均有2个字符序列,其中,3个聚类结果中的两个聚类结果都可以合并,只有一个聚类结果不能合并,因此,获得的合并序列个数为:两个合并序列加两个不能合并的字符序列,即四个合并序列;若上述的3个聚类结果中的每个聚类结果均可以合并,那么获得的合并序列个数为三个合并序列。
当然,在具体的实施过程中,上述的合并操作有很多种算法,例如:动态规划算法和基于容器的合并算法等等,其中,动态规划算法具体的例如最长公共子序列(LongestCommon Subsequence,LCS)算法。LCS算法,是指通过两个或多个已知序列的子序列,计算最长公共子序列,该最长公共子序列是所有子序列中最长的算法;例如:对于第一序列"aabcd",有顺序且相互相邻的“aabc”是第一序列的子序列,有顺序但是不相邻的abc也是第一序列的公共子序列;那么只要得出序列中各个元素属于所给出的数列,就是子序列,再和第二序列“12abcabcd”进行对比,才可以得出最长公共子序列为“abcd”。
在本申请实施例中,为了便于理解和说明,这里以最长公共子序列算法进行说明,那么步骤S130中的合并过程可以包括如下步骤:
步骤S131:根据最长公共子序列算法对多个序列向量中的任意两个序列向量计算公共矩阵。
其中,为了便于理解和说明,上述的最长公共子序列算法对多个序列向量中的任意两个序列向量,仅举例两个序列进行说明,第一序列为“Mon Feb 4 22:28:31”,第二序列为“Tue Feb 5 15:45:29”。根据上述的根据最长公共子序列算法对第一序列和第二序列计算公共矩阵(即最长公共子序列算法中的中间结果矩阵),获得的公共矩阵,请参见图5示出的本申请实施例提供的合并处理中的公共矩阵示意图;图中的公共矩阵为一个整数矩阵,即矩阵中的所有元素均为整数。
步骤S132:根据该公共矩阵合并多个序列向量中的任意两个序列向量对应的字符序列,获得合并后的序列。
其中,为了便于理解和说明,上述的多个序列向量中的任意两个序列向量,以上面的两个序列向量为例进行说明,通过倒序回溯上述的公共矩阵,获得第一序列和第二序列的匹配路径,并提取出相同和相异的部分,将该相同和相异的部分输出为子序列,例如:根据公共矩阵、第一序列和第二序列,获得的第一子序列为“Mon,,,F,,e,,b,,,,,4,,22,:,28,:,31”,获得的第二子序列为“Tue,,,F,,e,,b,,,,,5,,15,:,45,:,29”;然后将第一子序列和第二子序列使用分割符将相异的部分进行合并,相同的部分进行保留。分割符是指字符序列中用以分割有一定规律或关系的符号,通常这样的符号在原字符序列中是不存在的,若在原字符序列中存在,则可能需要对原字符序列使用转义符进行转义,转义是指将与分割符重复的部分更改为不重复;当然也可以根据具体实际情况改变分割符或转义符。
步骤S133:根据合并后的序列对多个序列向量中的剩余序列向量对应的字符序列进行合并。
当然,在具体的实施过程中,上述分割符可以根据具体的实际情况进行选择,例如:“||”、“&&”或“!!”等等。为了便于理解和说明,这里的分割符以“||”进行说明,将第一子序列和第二子序列使用分割符将相异的部分进行合并,相同的部分进行保留后,获得的合并后的序列为“Mon||Tue,,F,e,b,,,4||5,,22||15,:,28||45,:,31||29”。
在步骤S130之后,执行步骤S140:从多个合并序列的每个合并序列中提取正则表达式,获得多个正则表达式。
正则表达式(regular expression),有时又称规则表达式,在代码中常简写为regex、regexp或RE,计算机科学的一个概念,正则表达式通常被用来检索、替换那些符合某个模式(pattern)的文本。正则表达式描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
其中,为了便于理解和说明,这里仅列举一个合并序列代表上述的多个合并序列的每个合并序列,并从该合并序列中提取正则表达式为例进行说明,该合并序列例如“Mon,Tue,Wed,Thu,Fri,Sat,Sun”。将该合并序列拆分为多个字符串,求拆分后中的每个字符串的长度的最大值和最小值;其中,若最小值等于最大值,则将长度表示记为最小值;若最小值较小且最大值和最小值相差太大(比如最小值小于3且最小值与最大值的比例小于0.1),则使用通配符“*?”或“+?”作为正则模式的量词。将上述步骤中的每个字符映射为相应的正则表达式标志(Flag),并合并为一个哈希集合图。若上述步骤中的获得的集合中正则表达式标志的种类数大于预设阈值,该预设阈值比如4,则使用通配符“.”来标识正则模式的字符集。若上述步骤中的获得的集合中正则表达式标志的种类数小于或等于第一预设阈值,将每种正则表达式标志得到的字符集依字母顺序拼接,其中,每种正则表达式标志所得字符集的方法例如:若某种正则表达式标志对应的字符集的大小超过第二预设阈值,该第二预设阈值比如5,则使用该正则表达式标志对应的固有正则表达式模式;否则将上述集合中的字符依字母顺序进行全排列;最后,将所得结果标识和长度标识拼接得到最终结果,例如“[abc]{1,3}”或“[0-9A-Fa-f]{24}”。因此,上述的合并序列“Mon,Tue,Wed,Thu,Fri,Sat,Sun”经过上述的提取正则表达式过程后,获得的正则表达式为“[FMSTWa-z]{3}”。
当然,在具体的实施过程中,正则表达式的提取方法中,也可以不将上述字符映射为相应的正则表达式标志,可以理解的是,这里将上述字符映射为相应的正则表达式标志可以使后续的步骤的计算量和复杂度均降低。
在上述的实现过程中,对聚类结果中能够合并的序列向量进行合并,从而有效地减少提取正则表达式的计算量,同时也减少获得的正则表达式的长度。
在步骤S140之后,执行步骤S150:根据多个正则表达式中的每个正则表达式对大量的字符序列进行匹配,获得匹配出的有规律的字符序列。
其中,大量的字符序列中包括:无规律的字符序列和有规律的字符序列;这里的大量的字符序列例如“23145673451,Mon,……,41654ter6,Tue”,使用上述获得的正则表达式“[FMSTWa-z]{3}”进行匹配,则可以获得有规律的字符序列为“Mon”和“Tue”。
在上述的实现过程中,对获得的多个有规律的字符序列进行向量化处理和聚类处理,最后对聚类处理获得的多个序列向量进行合并获得多个合并序列,通过向量化处理和聚类处理使得提取正则表达式的数据范围从自然语言文本语料到非自然语言文本语料,从而改善了目前很难从非自然语言序列提取正则表达式的问题。
第二实施例
请参见图6示出的本申请实施例提供的正则表达式获得装置结构示意图,本申请实施例提供了一种正则表达式获得装置100,包括:
第一处理模块110,用于对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量。
第一分析模块120,用于对多个序列向量进行聚类分析,获得多个聚类结果,多个聚类结果中的每个聚类结果包括多个序列向量。
第一合并模块130,用于将多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,获得多个合并序列。
第一提取模块140,用于从多个合并序列的每个合并序列中提取正则表达式,获得多个正则表达式。
可选地,在本申请实施例中,第一处理模块包括:
第一获得模块,用于对多个有规律的字符序列进行分词,获得多个词语。
对多个词语统计词语的频率,获得多个频率。
第二处理模块,用于根据多个频率对多个词语进行向量化处理,获得多个序列向量。
可选地,在本申请实施例中,还包括:
第二获得模块,用于减少多个序列向量中的每个序列向量的维度,获得维度减少后的多个序列向量。
可选地,在本申请实施例中,第一分析模块包括:
聚类分析模块,用一个对多个序列向量进行聚类分析,获得多个未筛选的聚类。
聚类评估模块,用于对多个未筛选的聚类进行评估,获得评估结果。
聚类筛选模块,用于根据评估结果对多个未筛选的聚类进行筛选,获得多个聚类结果。
可选地,在本申请实施例中,第一合并模块包括:
矩阵计算模块,用于根据最长公共子序列算法对多个序列向量中的任意两个序列向量计算公共矩阵。
序列获得模块,用于根据公共矩阵合并多个序列向量中的任意两个序列向量对应的字符序列,获得合并后的序列。
序列合并模块,用于根据合并后的序列对多个序列向量中的剩余序列向量对应的字符序列进行合并。
应理解的是,该装置与上述的方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
请参见图7,图7示出了本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备101,包括:处理器102和存储器103,存储器103存储有处理器102可执行的机器可读指令,机器可读指令被处理器102执行时执行如上的方法。
本申请实施例还提供了一种存储介质104,该存储介质104上存储有计算机程序,该计算机程序被处理器102运行时执行如上的方法。
其中,存储介质104可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
再者,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
Claims (10)
1.一种正则表达式获得方法,其特征在于,包括:
对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量;
对所述多个序列向量进行聚类分析,获得多个聚类结果,所述多个聚类结果中的每个聚类结果包括多个序列向量;
将所述多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,获得多个合并序列;
从所述多个合并序列的每个合并序列中提取正则表达式,获得多个正则表达式。
2.根据权利要求1所述的方法,其特征在于,所述对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量,包括:
对所述多个有规律的字符序列进行分词,获得多个词语;
对所述多个词语统计词语的频率,获得多个频率;
根据所述多个频率对多个词语进行向量化处理,获得多个序列向量。
3.根据权利要求1所述的方法,其特征在于,在所述对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量之后,在所述对所述多个序列向量进行聚类分析,获得多个聚类结果,该多个聚类结果中的每个聚类结果包括多个序列向量之前,还包括:
减少所述多个序列向量中的每个序列向量的维度,获得维度减少后的多个序列向量。
4.根据权利要求1所述的方法,其特征在于,所述对所述多个序列向量进行聚类分析,获得多个聚类结果,包括:
对所述多个序列向量进行聚类分析,获得多个未筛选的聚类;
对所述多个未筛选的聚类进行评估,获得评估结果;
根据所述评估结果对所述多个未筛选的聚类进行筛选,获得所述多个聚类结果。
5.根据权利要求1所述的方法,其特征在于,所述将所述多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,包括:
根据最长公共子序列算法对所述多个序列向量中的任意两个序列向量计算公共矩阵;
根据所述公共矩阵合并所述多个序列向量中的任意两个序列向量对应的字符序列,获得合并后的序列;
根据合并后的序列对所述多个序列向量中的剩余序列向量对应的字符序列进行合并。
6.一种正则表达式获得装置,其特征在于,包括:
第一处理模块,用于对获得的多个有规律的字符序列进行向量化处理,获得多个序列向量;
第一分析模块,用于对所述多个序列向量进行聚类分析,获得多个聚类结果,所述多个聚类结果中的每个聚类结果包括多个序列向量;
第一合并模块,用于将所述多个聚类结果中的每个聚类结果中的多个序列向量对应的字符序列进行合并,获得多个合并序列;
第一提取模块,用于从所述多个合并序列的每个合并序列中提取正则表达式,获得多个正则表达式。
7.根据权利要求6所述的装置,其特征在于,所述第一处理模块包括:
第一获得模块,用于对所述多个有规律的字符序列进行分词,获得多个词语;
对所述多个词语统计词语的频率,获得多个频率;
第二处理模块,用于根据所述多个频率对多个词语进行向量化处理,获得多个序列向量。
8.根据权利要求6所述的装置,其特征在于,还包括:
第二获得模块,用于减少所述多个序列向量中的每个序列向量的维度,获得维度减少后的多个序列向量。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1-5任一所述的方法。
10.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910746640.XA CN110472031A (zh) | 2019-08-13 | 2019-08-13 | 一种正则表达式获得方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910746640.XA CN110472031A (zh) | 2019-08-13 | 2019-08-13 | 一种正则表达式获得方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110472031A true CN110472031A (zh) | 2019-11-19 |
Family
ID=68511183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910746640.XA Pending CN110472031A (zh) | 2019-08-13 | 2019-08-13 | 一种正则表达式获得方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110472031A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112307288A (zh) * | 2020-11-11 | 2021-02-02 | 上海昌投网络科技有限公司 | 一种用于多渠道的用户聚类方法 |
CN115130023A (zh) * | 2022-07-08 | 2022-09-30 | 阿里巴巴(中国)有限公司 | 正则表达式生成方法、装置、设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008063974A2 (en) * | 2006-11-13 | 2008-05-29 | Exegy Incorporated | Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors |
CN101605126A (zh) * | 2008-06-11 | 2009-12-16 | 中国科学院计算技术研究所 | 一种多协议数据分类识别的方法和系统 |
CN103716394A (zh) * | 2013-12-26 | 2014-04-09 | 北京奇虎科技有限公司 | 下载文件的管理方法及装置 |
CN103746982A (zh) * | 2013-12-30 | 2014-04-23 | 中国科学院计算技术研究所 | 一种http网络特征码自动生成方法及其系统 |
CN105574156A (zh) * | 2015-12-16 | 2016-05-11 | 华为技术有限公司 | 文本聚类方法、装置及计算设备 |
CN106776556A (zh) * | 2016-12-12 | 2017-05-31 | 北京蓝海讯通科技股份有限公司 | 一种文本模式生成方法、装置和计算设备 |
CN108319853A (zh) * | 2017-01-18 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 病毒特征码处理方法及装置 |
CN108717461A (zh) * | 2018-05-25 | 2018-10-30 | 平安科技(深圳)有限公司 | 海量数据结构化方法、装置、计算机设备及存储介质 |
CN109800430A (zh) * | 2019-01-18 | 2019-05-24 | 广东小天才科技有限公司 | 一种语义理解方法及系统 |
-
2019
- 2019-08-13 CN CN201910746640.XA patent/CN110472031A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008063974A2 (en) * | 2006-11-13 | 2008-05-29 | Exegy Incorporated | Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors |
CN101605126A (zh) * | 2008-06-11 | 2009-12-16 | 中国科学院计算技术研究所 | 一种多协议数据分类识别的方法和系统 |
CN103716394A (zh) * | 2013-12-26 | 2014-04-09 | 北京奇虎科技有限公司 | 下载文件的管理方法及装置 |
CN103746982A (zh) * | 2013-12-30 | 2014-04-23 | 中国科学院计算技术研究所 | 一种http网络特征码自动生成方法及其系统 |
CN105574156A (zh) * | 2015-12-16 | 2016-05-11 | 华为技术有限公司 | 文本聚类方法、装置及计算设备 |
CN106776556A (zh) * | 2016-12-12 | 2017-05-31 | 北京蓝海讯通科技股份有限公司 | 一种文本模式生成方法、装置和计算设备 |
CN108319853A (zh) * | 2017-01-18 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 病毒特征码处理方法及装置 |
CN108717461A (zh) * | 2018-05-25 | 2018-10-30 | 平安科技(深圳)有限公司 | 海量数据结构化方法、装置、计算机设备及存储介质 |
CN109800430A (zh) * | 2019-01-18 | 2019-05-24 | 广东小天才科技有限公司 | 一种语义理解方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112307288A (zh) * | 2020-11-11 | 2021-02-02 | 上海昌投网络科技有限公司 | 一种用于多渠道的用户聚类方法 |
CN115130023A (zh) * | 2022-07-08 | 2022-09-30 | 阿里巴巴(中国)有限公司 | 正则表达式生成方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020192401A1 (en) | System and method for generating answer based on clustering and sentence similarity | |
Wiegand et al. | Convolution kernels for opinion holder extraction | |
US9626353B2 (en) | Arc filtering in a syntactic graph | |
JP2005158010A (ja) | 分類評価装置・方法及びプログラム | |
US11568142B2 (en) | Extraction of tokens and relationship between tokens from documents to form an entity relationship map | |
CN111950263B (zh) | 一种日志解析方法、系统及电子设备 | |
US11170169B2 (en) | System and method for language-independent contextual embedding | |
CN109063184B (zh) | 多语言新闻文本聚类方法、存储介质及终端设备 | |
CN113032253B (zh) | 测试数据特征提取方法、测试方法及相关装置 | |
CN111177375A (zh) | 一种电子文档分类方法及装置 | |
CN110472031A (zh) | 一种正则表达式获得方法、装置、电子设备及存储介质 | |
CN113282717B (zh) | 文本中实体关系的抽取方法、装置、电子设备及存储介质 | |
US11361565B2 (en) | Natural language processing (NLP) pipeline for automated attribute extraction | |
CN110705285B (zh) | 一种政务文本主题词库构建方法、装置、服务器及可读存储介质 | |
Köper et al. | Applying multi-sense embeddings for german verbs to determine semantic relatedness and to detect non-literal language | |
Howard et al. | Phonetic spelling algorithm implementations for R | |
US20210073258A1 (en) | Information processing apparatus and non-transitory computer readable medium | |
Theeramunkong et al. | Pattern-based features vs. statistical-based features in decision trees for word segmentation | |
Moon et al. | Unsupervised morphological segmentation and clustering with document boundaries | |
CN111625579A (zh) | 一种信息处理方法、装置及系统 | |
Flender et al. | Sentiment Analysis of a German Twitter-Corpus. | |
AU2019203783B2 (en) | Extraction of tokens and relationship between tokens from documents to form an entity relationship map | |
JP7326637B2 (ja) | チャンキング実行システム、チャンキング実行方法、及びプログラム | |
Khankasikam et al. | Thai word segmentation a lexical semantic approach | |
Lembersky et al. | Morphological disambiguation of Hebrew: a case study in classifier combination |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191119 |
|
RJ01 | Rejection of invention patent application after publication |