语句处理方法、装置、设备和介质与流程

文档序号:33647568发布日期:2023-03-29 05:19阅读:52来源:国知局
语句处理方法、装置、设备和介质与流程

1.本发明涉及数据处理技术领域,具体而言,涉及一种语句处理方法、装置、设备和介质。


背景技术:

2.搜索语法解析处理是一种在网络检索时对用户输入的一串字符串进行拆解,从中获取相关检索关键字、检索值,并进行检索操作的处理方案。鉴于用户的输入通常是不可确定、无规律可循,常用的处理方式是通过不断扩充正则表达式来适配目前所遇到的用户输入值,长此以往,正则表达式将变得难以维护同时语法解析也将变得非常缓慢。因而,现今的搜索语法解析处理有待优化。


技术实现要素:

3.本发明的目的之一包括,例如,提供了一种语句处理方法、装置、设备和介质,以至少部分地优化语句处理方案。
4.本发明的实施例可以这样实现:
5.第一方面,本发明提供一种语句处理方法,包括:
6.响应于语句字符串处理请求,基于预设的词法解析器列表中的正则表达式对语句字符串进行词法解析,得到各词法解析结果;其中,所述词法解析器列表中包括拆解得到的多个正则表达式;
7.按照语意顺序对各所述词法解析结果进行排列组合,得到处理结果数据。
8.在可选的实施方式中,所述方法还包括构建词法解析器列表的步骤,该步骤包括:
9.按照字符类型,将完整的正则表达式进行单元拆解,得到与每种字符类型分别对应的正则表达式,将得到的各所述正则表达式形成词法解析器列表;其中,所述字符类型包括空格符、操作符、操作符和搜索内容分隔符、中英文字符;或者,
10.按照词语定义,将完整的正则表达式进行单元拆解,得到对单个词语进行处理的正则表达式,将得到的各所述正则表达式形成词法解析器列表。
11.在可选的实施方式中,所述基于预设的词法解析器列表中的正则表达式对语句字符串进行词法解析,得到各词法解析结果,包括:
12.从预设的词法解析器列表中确定与语句字符串相关的各目标正则表达式;
13.基于各所述目标正则表达式对所述语句字符串进行词法解析,得到各词法解析结果;或者,
14.基于预设的词法解析器列表中的每个正则表达式,分别对所述语句字符串进行词法解析,得到各词法解析结果。
15.在可选的实施方式中,所述按照语意顺序对各所述词法解析结果进行排列组合,得到处理结果数据,包括:
16.在对所述语句字符串进行词法解析过程中,每得到一个词法解析结果,则对该词
法解析结果进行语意分析,得到语意分析结果;
17.在得到针对所述语句字符串的全部语意分析结果的情况下,将所有所述语意分析结果进行排列组合,得到处理结果数据。
18.在可选的实施方式中,所述响应于语句字符串处理请求,基于预设的词法解析器列表中的正则表达式对语句字符串进行词法解析,得到各词法解析结果,包括:
19.基于chain函数调度中心提供的调用逻辑,将请求处理的语句字符串输入词法解析器;
20.基于所述词法解析器内预设的词法解析器列表中的正则表达式对所述语句字符串进行分析拆解,每拆解出一个完整的词语,将该完整的词语作为词法解析结果进行输出。
21.在可选的实施方式中,所述按照语意顺序对各所述词法解析结果进行排列组合,得到处理结果数据的步骤通过语法解析器实现;
22.所述语法解析器内检索字符串的结构包括:操作分隔符和任意单词;操作符、检索字段和单词;操作符和单词;所述语法解析器用于基于chain函数能够随意组合其他子函数的特性将所定义的语法解析方法进行编排、合并;
23.所述chain函数调度中心用于根据词法解析规则定义词法解析器列表;基于语法解析顺序和规则定义语法解析器;创建chain函数调度中心类,并将定义的语法解析器注册于所述chain函数调度中心类中;将注册的语法解析器实例化,以提供用于解析语句字符串的接口。
24.在可选的实施方式中,所述方法还包括:
25.获取词法解析器列表调整请求;所述词法解析器列表调整请求包括对象新增、对象修改和对象删除;
26.在所述词法解析器列表调整请求为对象新增的情况下,确定所述词法解析器列表中是否存在与请求新增的对象对应的字符类型或词语定义,若是,将请求新增的对象添加至该字符类型或词语定义对应的正则表达式中;若否,创建请求新增的对象对应的字符类型或词语定义,并将请求新增的对象作为创建的字符类型或词语定义对应的正则表达式;
27.在所述词法解析器列表调整请求为对象修改的情况下,从所述词法解析器列表中确定出请求修改的正则表达式,并进行对应修改;
28.在所述词法解析器列表调整请求为对象删除的情况下,从所述词法解析器列表中确定出请求删除的正则表达式,并进行删除。
29.第二方面,本发明实施例提供一种语句处理装置,包括:
30.词法解析模块,响应于语句字符串处理请求,基于预设的词法解析器列表中的正则表达式对语句字符串进行词法解析,得到各词法解析结果;其中,所述词法解析器列表中包括拆解得到的多个正则表达式;
31.数据处理模块,用于按照语意顺序对各所述词法解析结果进行排列组合,得到处理结果数据。
32.第三方面,本发明提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述实施方式任一项所述的语句处理方法。
33.第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质包括
计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在电子设备执行前述实施方式任一项所述的语句处理方法。
34.本发明实施例的有益效果包括,例如:通过预设包括拆解得到的多个正则表达式的词法解析器列表,实现对语句字符串的词法解析,进而得到处理结果数据,提高了语句处理的便捷性和灵活性,实现了语句处理方案的优化。
附图说明
35.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
36.图1示出了本发明实施例提供的一种应用场景示意图。
37.图2示出了本发明实施例提供的一种语句处理方法的流程示意图。
38.图3示出了本发明实施例提供的一种语句处理方法的原理示意图。
39.图4示出了本发明实施例提供的一种语句处理装置的示例性结构框图。
40.图标:100-电子设备;110-存储器;120-处理器;130-通信模块;140-语句处理装置;141-词法解析模块;142-数据处理模块。
具体实施方式
41.现今,常用的搜索语法解析处理主要通过维护一个超大的正则表达式来针对搜索语法字符串进行解析拆解,通过正则表达式将语法串拆解后,再通过若干的分支判断来确定解析结果的归属。
42.经研究发现,采用上述处理方式,存在以下问题:
43.解析用正则表达式异常臃肿,不易维护。当遇到正则表达式无法解析时,需要开发人员根据用户的输入对正则表达式进行扩充和添加新的分支判断。如果是小型业务,低用户量、低搜索的情况下,该种方案比较好实现。但是,一旦搜索范围扩大和搜索并发变大,该种方案将变得非常鸡肋,开发人员需要随时对正则表达式进行维护扩充。长此以往,语法解析的代码将变得难以维护。无法对词法器和语法器进行配置输入,处理逻辑只能内置,缺少灵活性。
44.为了对语法解析处理进行优化,本发明实施例提供一种语句处理方案,在nodejs中基于chain函数编程模式下,通过对语法解析正则表达式进行拆解并排列组合来解析语法字符串,可支持与、或和非多种检索操作,可以按照业务需求进行排列组合调用顺序,提高语句处理的便捷性和灵活性。
45.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在发明过程中做出的贡献。
46.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施
例的组件可以以各种不同的配置来布置和设计。
47.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
49.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
50.需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
51.请参照图1,是本实施例提供的一种电子设备100的方框示意图,本实施例中的电子设备100可以为能够进行数据交互、处理,如提供语句检索分析接口的服务器、处理设备、处理平台等。所述电子设备100包括存储器110、处理器120及通信模块130。所述存储器110、处理器120以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
52.其中,存储器110用于存储程序或者数据。所述存储器110可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
53.处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。
54.通信模块130用于通过所述网络建立所述电子设备100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。
55.应当理解的是,图1所示的结构仅为电子设备100的结构示意图,所述电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
56.请结合参阅图2,为本发明实施例提供的一种语句处理方法的流程示意图,可以由图1所述电子设备100执行,例如可以由电子设备100中的处理器120执行。该语句处理方法包括s110和s120。
57.s110,响应于语句字符串处理请求,基于预设的词法解析器列表中的正则表达式对语句字符串进行词法解析,得到各词法解析结果。
58.其中,所述词法解析器列表中包括拆解得到的多个正则表达式。
59.s120,按照语意顺序对各所述词法解析结果进行排列组合,得到处理结果数据。
60.基于上述方案,通过拆解得到的多个正则表达式对语句字符串进行词法解析,进而得到处理结果数据,确保了语句处理的便捷性和灵活性,实现了语句处理方案的优化。
61.s110中,语句字符串处理请求可以灵活得到,例如,可以为用户输入,如在搜索语
法解析处理场景中,针对用户输入的一串语句字符串生成语句字符串处理请求。
62.词法解析器列表可以通过多种方式得到。例如,可以按照字符类型,将完整的正则表达式进行单元拆解,得到与每种字符类型分别对应的正则表达式,将得到的各所述正则表达式形成词法解析器列表。其中,所述字符类型可以包括空格符、操作符、操作符和搜索内容分隔符、中英文字符等。
63.又例如,可以按照词语定义,将完整的正则表达式进行单元拆解,得到对单个词语进行处理的正则表达式,将得到的各所述正则表达式形成词法解析器列表。
64.通过将完整的正则表达式拆解为多个正则表达式,提高了维护、扩充的便捷性,减小了所需工作量。示例性地,在获取到词法解析器列表调整请求的情况下,可以针对请求调整的正则表达式进行单独处理,而无需牵扯到所有正则表达式。
65.例如,词法解析器列表调整请求可以包括对象新增、对象修改、对象删除等。在所述词法解析器列表调整请求为对象新增的情况下,确定所述词法解析器列表中是否存在与请求新增的对象对应的字符类型或词语定义,若是,将请求新增的对象添加至该字符类型或词语定义对应的正则表达式中。若否,创建请求新增的对象对应的字符类型或词语定义,并将请求新增的对象作为创建的字符类型或词语定义对应的正则表达式。
66.在所述词法解析器列表调整请求为对象修改的情况下,从所述词法解析器列表中确定出请求修改的正则表达式,并进行对应修改。
67.在所述词法解析器列表调整请求为对象删除的情况下,从所述词法解析器列表中确定出请求删除的正则表达式,并进行删除。
68.从而在减小对各正则表达式影响的情况下,完成对词法解析器列表的调整。
69.基于预设的词法解析器列表中的正则表达式对语句字符串进行词法解析,得到各词法解析结果的方式可以灵活设置。
70.例如,可以从预设的词法解析器列表中确定与语句字符串相关的各目标正则表达式,进而基于各所述目标正则表达式对所述语句字符串进行词法解析,得到各词法解析结果。示例性地,可以通过语意分析,确定出与语句字符串相关的各目标正则表达式。
71.又例如,可以基于预设的词法解析器列表中的每个正则表达式,分别对所述语句字符串进行词法解析,得到各词法解析结果。可以理解的是,语句字符串涉及的正则表达式可能仅为词法解析器列表中的一部分,那么,语句字符串涉及到的正则表达式会输出具体解析内容,语句字符串未涉及到的正则表达式输出为空,在后续语意处理时,针对具体解析内容进行处理便可。
72.s120中,按照语意顺序对各所述词法解析结果进行排列组合,得到处理结果数据可以通过多种方式实现。
73.例如,可以在对所述语句字符串进行词法解析过程中,每得到一个词法解析结果,则对该词法解析结果进行语意分析,得到语意分析结果。
74.又例如,可以在对所述语句字符串进行词法解析过程中,每得到设定数量(两个以上)词法解析结果,再对设定数量个词法解析结果进行语意分析,得到语意分析结果。
75.又例如,可以在对所述语句字符串进行词法解析过程中,得到所有词法解析结果之后,再对所有词法解析结果进行语意分析,得到语意分析结果。
76.进而在得到针对所述语句字符串的全部语意分析结果的情况下,将所有所述语意
分析结果进行排列组合,得到处理结果数据。
77.在一种实现方式中,s110可以通过以下方式实现:基于chain函数调度中心提供的调用逻辑,将请求处理的语句字符串输入词法解析器,基于所述词法解析器内预设的词法解析器列表中的正则表达式对所述语句字符串进行分析拆解,每拆解出一个完整的词语,将该完整的词语作为词法解析结果进行输出。
78.相应地,s120可以通过语法解析器实现。所述语法解析器内检索字符串的结构可以包括:操作分隔符和任意单词;操作符、检索字段和单词;操作符和单词。所述语法解析器用于基于chain函数能够随意组合其他子函数的特性将所定义的语法解析方法进行编排、合并。
79.所述chain函数调度中心用于根据词法解析规则定义词法解析器列表;基于语法解析顺序和规则定义语法解析器;创建chain函数调度中心类,并将定义的语法解析器注册于所述chain函数调度中心类中;将注册的语法解析器实例化,以提供用于解析语句字符串的接口。
80.为了更为清楚地阐述本实施例的实现方案,现以下述场景为例,对本实施例的实现原理进行举例说明。
81.如图3所示,电子设备中集成有词法解析器列表、语法解析器函数和chain函数调度中心。词法解析器列表、语法解析器函数和chain函数调度中心可以集成在一个软件模块组件中对外暴露调用方法。
82.其中,词法解析器列表包括若干个词语解析规则。通过将现有技术中超大的正则表达式进行单元拆解,例如,将其中空格符、操作符(与、或和非)、操作符和搜索内容分隔符(如冒号:)、其他类型的字符进行单元拆解。相应地,每个正则表达式对应一类词语,例如:空格、操作符、中英文字符等。
83.基于该种设置,词法解析器列表通过枚举引用,每个引用独立且只处理特定的字符,从而可以任意按照词语分类进行扩充。
84.示例性地,某一词法解析器列表custom lexer list如下:
85.[0086][0087]
通过将正则表达式按照词语定义进行拆解,得到更加独立间接的单个词语处理正则表达式,形成词法解析器列表,可以为后续新增和维护提供便捷。实现需要什么词法解析就应用什么词法解析。图3中以词法解析器1、2、3表征应用到的各正则表达式。
[0088]
语法解析器函数用于针对词法解析器输出的结果,按照搜索语意顺序对词法进行排列组合输出正确的搜索条件块。搜索服务则会通过这些搜索条件块进行结果搜索。
[0089]
语法解析器为词法解析器列表的运行载体,语法解析器通过选择引用词法解析器列表中不同的词法规则来完成语意解析的动作,从而实现不同语意的解析。
[0090]
结合上述词法解析器列表custom lexer list,构建语法解析器如下:
[0091]
[0092]
[0093][0094]
语法解析器的调用逻辑如下:
[0095]
以词法解析器列表为前述custom lexer list,用户需要进行搜索的字段名称为fields,通过词法解析类型名称到词法解析器列表中找到对应的词法解析方法为findlexer为例,在语法解析器中设定三种检索字符串的结构:
[0096]
{操作分隔符}{任意单词}、{操作符}{检索字段}{单词}和{操作符}{单词}。例如::word、+ip:word和+word。实现三种语法解析器isexpr、conditionexpr和prefixexpr。其中+ip:word里面包含了:word结构,所以在conditionexpr中利用chain函数可以随意组合其他子函数的特性,就将isexpr编排到了其中。在root函数里面将所有定义的语法解析器方法利用chain函数可以随意组合其他子函数的特性进行合并,从而完成语法解析器定义。
[0097]
通过语法解析器引用词法解析器来解析语意,实现对单个词语的语意解析,进而通过chain函数调度中心来进行调度实现对整条语句的语意解析。图3中以语法解析器1、2、3表征应用到的各结构的语法解析方式。
[0098]
chain函数调度中心的调度过程如下:
[0099]
确定词法解析规则,定义词法解析器列表。
[0100]
[0101]
[0102][0103]
确定语法解析顺序和规则,基于chain函数定义语法解析函数。
[0104]
[0105]
[0106][0107]
创建chain调度中心类,将上面定义的语法解析函数注册到其中。
[0108]
[0109][0110]
利用chain能组合排列子函数的特性,将注册的语法解析函数合并,并输出一个供外部调用的静态方法。
[0111]
实例化chain调度中心类,使用暴露的静态解析方法来解析检索字符串。
[0112]
本实施例中,chain函数调度中心用于提供语法解析器函数执行的底层调用逻辑,包含先后顺序,结果流向过程中的二次处理(如递归、回调等)和语法解析可以随意插拔替换以应对不同的检索语句等。搜索语句字符串通过chain函数调度中心进入词法解析器,词法解析器内部的词法正则表达式将语句进行分析拆解,每当拆解出一个完整的词语后将结果流向到语法解析器函数中,语法解析器函数对词语进行语意分析,然后输出。全部解析完成后就可以得到一个完整的搜索条件。
[0113]
通过chain函数能随意组合和插拔子函数特性,结合模块化的词法和语法解析器来完成搜索语句字符串的语法解析。相比于现有技术中通过分支判断和一个超大正则表达的处理方案,在代码维护,二次迭代和自由扩展上有很大进步。研发人员可以通过新添加词法和语法来适配新的语意,随意组合和插拔语法解析器来应对不同情况的检索语意。功能上也从单一的处理上发展为通过各种排列组合的多样处理。使用一个超大的正则表达式去解析字符串是非常消耗性能的,但通过本方案中模块化的词法解析,需要解析什么就调用相关词法就可以避免这种问题的产生。
[0114]
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种语句处理装置的实现方式。请参阅图4,图4为本发明实施例提供的一种语句处理装置140的功能模块图,该语句处理装置140可以应用于图1所示电子设备100。需要说明的是,本实施例所提供的语句处理装置140,其基本原理及产生的技术效果和上述方法实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的方法实施例中相应内容。该语句处理装置140包括词法解析模块141和数据处理模块142。
[0115]
其中,词法解析模块141,响应于语句字符串处理请求,基于预设的词法解析器列表中的正则表达式对语句字符串进行词法解析,得到各词法解析结果。
[0116]
其中,所述词法解析器列表中包括拆解得到的多个正则表达式。
[0117]
数据处理模块142用于按照语意顺序对各所述词法解析结果进行排列组合,得到处理结果数据。
[0118]
在上述基础上,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在电子设备执行上述的语句处理方法。
[0119]
采用本发明实施例中的上述方案,将正则表达式按照语法所表达的语意进行分类,通过插拔的形式将多个正则表达排列组合,再将用户输入的搜索语法字符串进行拆解处理。搜索字符串在到达某个正则处理模块时就会从中提取出相应的结果,将所有结果进行包装组合,便能得到解析后的语法结果。从而解决现有技术中正则表达式维护困难和解析效率低下的问题,实现语句处理方案优化。
[0120]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0121]
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0122]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0123]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1