CN114676155A - 代码提示信息的确定方法、数据集的确定方法及电子设备 - Google Patents
代码提示信息的确定方法、数据集的确定方法及电子设备 Download PDFInfo
- Publication number
- CN114676155A CN114676155A CN202210314942.1A CN202210314942A CN114676155A CN 114676155 A CN114676155 A CN 114676155A CN 202210314942 A CN202210314942 A CN 202210314942A CN 114676155 A CN114676155 A CN 114676155A
- Authority
- CN
- China
- Prior art keywords
- node
- determining
- sql statement
- information
- data set
- 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
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供的代码提示信息的确定方法、数据集的确定方法及电子设备,涉及数据库技术,包括:获取待补全的SQL语句和预设的特征数据集;特征数据集中包括补全提示项以及与补全提示项对应的预设特征,补全提示项包括节点类型和节点的值;在SQL语句中确定待编辑的当前节点,并根据SQL语句确定当前节点的节点特征;根据节点特征和预设特征,确定用于补全当前节点的补全提示项,并显示补全提示项包括的节点类型和节点的值。本公开提供的方案,可以结合预设的特征数据集和待补全的SQL语句的内容,确定并显示SQL语句的待补全提示项,从而能够确定出较为准确的待补全提示项,以提高用户的编程效率。
Description
技术领域
本公开涉及数据库技术,尤其涉及一种代码提示信息的确定方法、数据集的确定方法及电子设备。
背景技术
SQL(Structured Query Language,结构化查询语言)是一种用于进行数据库查询和程序设计语言,具体可以存取数据以及查询、更新和管理关系数据库***。
在利用SQL语言编程时,通常需要用户在编程软件中逐字输入代码,因此编程效率较低。
发明内容
本公开提供一种代码提示信息的确定方法、数据集的确定方法及电子设备,以提示SQL语言的编程效率。
本公开的第一个方面是提供一种代码提示信息的确定方法,包括:
获取待补全的SQL语句和预设的特征数据集;所述特征数据集中包括补全提示项以及与所述补全提示项对应的预设特征,所述补全提示项包括节点类型和节点的值;
在所述SQL语句中确定待编辑的当前节点,并根据所述SQL语句确定所述当前节点的节点特征;
根据所述节点特征和所述预设特征,确定用于补全所述当前节点的补全提示项,并显示所述补全提示项包括的节点类型和节点的值。
本公开的第二个方面是提供一种特征数据集的确定方法,包括:
获取包括SQL语句的文档;
在所述SQL语句中确定多个节点,并根据所述SQL语句确定所述节点的节点特征;
根据所述节点确定补全提示项,并根据所述补全提示项和所述节点的节点特征,生成所述特征数据集;其中,所述特征数据集包括补全提示项以及与所述补全提示项对应的节点特征。
本公开的第三个方面是提供一种代码提示信息的确定装置,包括:
获取单元,用于获取待补全的SQL语句和预设的特征数据集;所述特征数据集中包括补全提示项以及与所述补全提示项对应的预设特征,所述补全提示项包括节点类型和节点的值;
确定单元,用于在所述SQL语句中确定待编辑的当前节点,并根据所述SQL语句确定所述当前节点的节点特征;
提示单元,用于根据所述节点特征和所述预设特征,确定用于补全所述当前节点的补全提示项,并显示所述补全提示项包括的节点类型和节点的值。
本公开的第四个方面是提供一种特征数据集的确定装置,包括:
文档获取单元,用于获取包括SQL语句的文档;
特征提取单元,用于在所述SQL语句中确定多个节点,并根据所述SQL语句确定所述节点的节点特征;
集合生成单元,用于根据所述节点确定补全提示项,并根据所述补全提示项和所述节点的节点特征,生成所述特征数据集;其中,所述特征数据集包括补全提示项以及与所述补全提示项对应的节点特征。
本公开的第四个方面是提供一种电子设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如上述第一方面所述的代码提示信息的确定方法或第二方面所述的特征数据集的确定方法。
本公开的又一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面所述的代码提示信息的确定方法或第二方面所述的特征数据集的确定方法。
本公开的又一个方面是提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上述第一方面所述的代码提示信息的确定方法或第二方面所述的特征数据集的确定方法。
本公开提供的代码提示信息的确定方法、数据集的确定方法及电子设备,包括:获取待补全的SQL语句和预设的特征数据集;特征数据集中包括补全提示项以及与补全提示项对应的预设特征,补全提示项包括节点类型和节点的值;在SQL语句中确定待编辑的当前节点,并根据SQL语句确定当前节点的节点特征;根据节点特征和预设特征,确定用于补全当前节点的补全提示项,并显示补全提示项包括的节点类型和节点的值。本公开提供的代码提示信息的确定方法、数据集的确定方法及电子设备,可以结合预设的特征数据集和待补全的SQL语句的内容,确定并显示SQL语句的待补全提示项,从而能够确定出较为准确的待补全提示项,以提高用户的编程效率。
附图说明
图1为本公开一示例性实施例示出的代码提示信息的确定方法的流程图;
图2为本公开一示例性实施例示出的界面示意图;
图3为本公开另一示例性实施例示出的代码提示信息的确定方法的流程图;
图4为本公开一示例性实施例示出的特征数据集的确定方法的流程图;
图5为本公开另一示例性实施例示出的特征数据集的确定方法的流程图;
图6为一示例性实施例示出的抽象语法树的结构示意图;
图7为本公开一示例性实施例示出的代码提示信息的确定装置的结构图;
图8为本公开另一示例性实施例示出的代码提示信息的确定装置的结构图;
图9为本公开一示例性实施例示出的特征数据集的确定装置的结构图;
图10为本公开另一示例性实施例示出的特征数据集的确定装置的结构图;
图11为本公开一示例性实施例示出的电子设备的结构图。
具体实施方式
SQL(Structured Query Language,结构化查询语言)是一种用于进行数据库查询和程序设计语言,具体可以存取数据以及查询、更新和管理关系数据库***。
在很多应用场景中,都需要利用SQL语言进行编程,尤其需要管理数据库时,SQL语音更是被频繁使用的编程语言。用户在编程时,需要逐字输入代码内容,为了提高编程效率,可以结合代码的上下文内容以及SQL语法规则预测接下来用户需要的代码内容,并展示这些内容,以实现代码自动补全。
但是,代码语言的上下文具有较强的逻辑性,仅结合代码的上下文内容以及SQL语法规则,无法准确的预测出用户需要输入的代码内容。为了解决这一技术问题,本公开提供的方法中,利用已有的大量的SQL代码提取出特征数据集,特征数据集中包括的数据是基于真实的SQL代码提取得到,能够体现出SQL代码之间的上下文逻辑,因此,基于该特征数据集预测用户需要输入的代码内容,以提升代码补全的准确性。
图1为本公开一示例性实施例示出的代码提示信息的确定方法的流程图。
如图1所示,本实施例提供的代码提示信息的确定方法包括:
步骤101,获取待补全的SQL语句和预设的特征数据集;特征数据集中包括补全提示项以及与补全提示项对应的预设特征,补全提示项包括节点类型和节点的值。
其中,本公开提供的方法可以由具备计算能力的电子设备执行,该电子设备例如可以是服务器,也可以是用户终端。
具体的,用户可以在用户终端中编写SQL代码,用户终端可以基于本公开提供的方法确定代码提示信息,也可以将用户正在编写的SQL代码上传至服务器,由服务器基于本公开提供的方法确定代码提示信息。
进一步的,电子设备可以获取待补全的SQL语句和预设的特征数据集。
其中,SQL语句是指SQL代码文件中的一条语句,比如在SQL文件中两个分号之间的内容,为一条SQL语句。待补全的SQL语句是指没有编写完毕的SQL语句,比如,当用户输入了分号之后,可以认为该条SQL语句编写完毕,若用户正在输入字符,则可以认为用户正在编写一条SQL语句,该SQL语句为待补全的SQL语句。基于本公开提供的方案,能够预测在待补全的SQL语句的尾部用户希望输入的内容,进而可以显示这些内容,以供用户选择。
具体的,预设的特征数据集可以是对已有的完整的SQL语句进行处理得到的。比如,可以预先准备大量的SQL代码文件,这些文件可以是不同的人员编写的,可以对这些SQL代码文件中包括的各SQL语句进行特征提取,从而得到特征数据集。针对每条SQL语句,都可以提取出若干个特征,再将其放到特征数据集中。
进一步的,一条SQL语句中包括多个节点,具体可以根据SQL语句构建抽象语法树,进而确定SQL语句中的各节点。可以预先提取每个节点的特征,再将该节点作为补全提示项存储到特征数据集中,同时,将节点的特征作为补全提示项的预设特征。
实际应用时,一个节点的内容包括节点类型和节点的值,相应的,与节点对应的补全提示项也具有相应的节点类型和节点的值。比如,节点类型可能是关键词、函数、变量、字符串、数字等,节点的值是与节点类型对应的值,比如,节点类型是变量时,节点的值可以是具体变量值。
步骤102,在SQL语句中确定待编辑的当前节点,并根据SQL语句确定当前节点的节点特征。
其中,针对待补全的SQL语句,电子设备可以在其中确定待编辑的当前节点,当前节点是指没有编辑完毕的节点,可以是编辑了一部分的节点,也可以是完全没有被编辑的节点,比如可以是用户正在输入字符的位置对应的节点,也可以是用户输入完毕的字符之后的位置对应的节点。
一种可选的实现方式中,可以根据SQL语句构建抽象语法树,再在抽象语法树中确定待编辑的当前节点。具体可以在抽象语法树中确定与正在编辑或者待编辑的内容所对应的叶子节点,将该叶子节点作为当前节点。
例如,输入SQL语句时,用户希望输入的字符为“ABC”,则在用户输入了“A”时,该节点为待编辑的当前节点。再例如,用户在输入了“ABC”之后,还希望输入其他字符,则“ABC”的下一个位置为待编辑的当前节点。
具体的,一个节点包括的字符可以是SQL语言中的最小组成单元,例如可以是lingdao_test_table。
进一步的,电子设备可以结合待补全的SQL语句,确定待编辑的当前节点的节点特征。具体可以根据当前节点在SQL语句中的位置、以及待补全SQL语句中已有的内容,确定当前节点的节点特征。
实际应用时,可以根据待补全的SQL语句中的字符顺序,确定当前节点之前的一个节点,从而基于该前一个节点确定当前节点的特征。比如,在待补全的SQL语句中当前节点之前的内容是“ABC”,则可以根据“A BC”确定当前节点的特征。
再例如,还可以根据待补全的SQL语句构建抽象语法树,再根据抽象语法树中当前节点的父节点,确定当前节点的特征。
步骤103,根据节点特征和预设特征,确定用于补全当前节点的补全提示项,并显示补全提示项包括的节点类型和节点的值。
其中,本公开提供的方法不仅基于SQL语句本身确定SQL语句的补全提示项,还基于预设的特征数据集确定SQL语句的补全提示项,预设的特征数据集又是从已有的完整的SQL语句中提取的,因此,能够利用已有的完整的SQL语句确定当前的补全提示项,以提升确定出的补全提示项的准确性。
具体的,预设的特征数据集中包括补全提示项以及与补全提示项对应的预设特征,可以比对当前节点的节点特征与预设的特征数据集中的各预设特征,从而确定出K个与节点特征比较相似的预设特征。K是正整数,比如可以是5、10等。
进一步的,可以将与预设特征对应的补全提示项确定为当前节点的补全提示项。比如,根据当前节点的节点特征在预设特征数据集中确定出相似的5个预设特征1、特征2、特征3、特征4、特征5。预设的特征数据集中与预设特征1对应的是提示项1,与预设特征2对应的是提示项2,与预设特征3对应的是提示项3,与预设特征4对应的是提示项4,与预设特征5对应的是提示项5,则可以将提示项1、提示项2、提示项3、提示项4、提示项5确定为当前节点的补全提示项。
实际应用时,电子设备还可以在代码编辑界面中显示当前节点的补全提示项,具体可以显示补全提示项包括的节点类型和节点的值。比如,补全提示项的节点类型是表格,值是table,则可以显示“表格”“table”。
一种可选的实现方式中,节点类型可以显示为对应的图标。
图2为本公开一示例性实施例示出的界面示意图。
如图2所示,用户可以在界面中输入SQL代码,在待编辑的节点的位置,可以显示提示框21,在提示框21中显示电子设备确定出的补全提示项。具体可以显示与节点类型对应的图标211,还可以显示节点的值212。
可选的,用户可以点击任一个节点的值,电子设备可以将该值显示在当前节点的位置,从而提升用户的编程速度。
本公开提供的代码提示信息的确定方法,包括:获取待补全的SQL语句和预设的特征数据集;特征数据集中包括补全提示项以及与补全提示项对应的预设特征,补全提示项包括节点类型和节点的值;在SQL语句中确定待编辑的当前节点,并根据SQL语句确定当前节点的节点特征;根据节点特征和预设特征,确定用于补全当前节点的补全提示项,并显示补全提示项包括的节点类型和节点的值。本公开提供的方法可以结合预设的特征数据集和待补全的SQL语句的内容,确定并显示SQL语句的待补全提示项,从而能够确定出较为准确的待补全提示项,以提高用户的编程效率。
图3为本公开另一示例性实施例示出的代码提示信息的确定方法的流程图。
如图3所示,本公开提供的代码提示信息的确定方法,包括:
步骤301,获取待补全的SQL语句和预设的特征数据集;特征数据集中包括补全提示项以及与补全提示项对应的预设特征,补全提示项包括节点类型和节点的值。
步骤301与步骤101的实现方式类似,不再赘述。
步骤302,生成与SQL语句对应的抽象语法树。
AST(Abstract Syntax Tree,抽象语法树),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。通过抽象语法树能够确定出SQL语句中各节点之间的关联关系,从而可以利用抽象语法树提取到更全面、更准确的节点特征。
其中,生成抽象语法树的方式可以采用现有技术中已有的方案。
步骤303,在SQL语句中确定待编辑的当前节点。
步骤303与步骤102中确定当前节点的方式类似,不再赘述。
步骤304,根据SQL语句的抽象语法树,确定当前节点的节点特征。
具体的,抽象语法树中包括多个节点,这些节点中包括当前节点。由于当前节点是指没有编辑完毕的节点,因此,在抽象语法树中的当前节点的内容可以是空,也可以是编辑了一部分的内容。
进一步的,抽象语法树中的各节点具有父子关系,可以根据当前节点的父节点提取当前节点的特征,还可以根据该父节点的父节点提取当前节点的特征。
实际应用时,电子设备可以根据SQL语句的抽象语法树,确定当前节点的父节点的第一信息;和/或,根据SQL语句的抽象语法树,确定与父节点并列的并列节点的第二信息;和/或,确定SQL语句的抽象语法树的根节点的第三信息。
其中,当前节点的节点特征,包括以下至少一项:
第一信息、第二信息、第三信息。
具体的,通过抽象语法树能够确定出当前节点的父节点,还能够确定出父节点的父节点。本公开提供的方案中,可以利用抽象语法树中的父节点推断子节点,当子节点是当前节点时,则可以利用当前节点的父节点预测出该当前节点的内容。
一种可选的实现方式中,电子设备可以根据SQL语句的抽象语法树,确定当前节点的父节点的第一信息。从而可以利用父节点的信息预测当前节点的内容。
第一信息可以包括以下至少一项:当前节点的父节点的类型;当前节点在父节点的排序;父节点在其父节点中的排序。
例如,存在当前节点Token i,其具有父节点Token j,则可以将Token j的类型作为Token j的第一信息,还可以将Token i在Token j中的排序作为Token j的第一信息,若父节点Token j还具有父节点Token k,则还可以将Token j在Token k中的排序确定为Token j的第一信息。
一种可选的实现方式中,电子设备还可以根据SQL语句的抽象语法树,确定与父节点并列的并列节点的第二信息。从而可以利用与父节点并列的并列节点的信息预测当前节点的内容。
第二信息包括以下至少一项:与父节点并列的左节点的类型;与父节点并列的左节点的值;与父节点并列的右节点的类型;与父节点并列的右节点的值。
抽象语法树中可以包括并列的节点,属于同一个父节点的子节点为并列节点。比如,节点A具有两个子节点A1和A2,则A1和A2为并列的节点。通过提取并列节点的信息,能够利用与当前节点的父节点所并列的节点的信息,预测出当前节点的内容。
例如,存在当前节点Token i,其具有父节点Token j,父节点Token j具有并列的左节点Token left,还具有Token right,则可以分别确定Token left和Token right的信息,将其作为与父节点并列的并列节点的第二信息。
一种可选的实现方式中,电子设备还可以确定SQL语句的抽象语法树的根节点的第三信息。
实际应用时,抽象语法树中包括多个节点,一颗抽象语法树中具有一个根节点,比如可以在抽象语法树中逐个遍历节点的父节点,最终确定出不具有父节点的根节点。
其中,第三信息包括根节点的类型和/或根节点的值。通过提取根节点的信息,能够利用当前节点的根节点的信息,预测出当前节点的内容。
具体的,本公开提供的方案可以获取第一信息、第二信息、第三信息,从而利用与当前节点有比较紧密关联关系的各节点的信息,准确的确定当前节点的节点特征。
步骤305,根据SQL语句,确定当前节点的前一个节点的节点类型,和当前节点的前一个节点的值;其中,当前节点的节点特征包括前一个节点的节点类型,和前一个节点的值。
实际应用时,SQL语句中包括多个节点,各个节点之间具有前后关系。比如,在SQL语句“select*from table t where t.p_code='A'”中,包括多个字符串,各个字符串之间具有前后关系,因此,还可以根据当前节点之前的其他节点的内容,确定当前节点的节点特征。
其中,这种方式提取的节点特征可以包括前一个节点的节点类型,和前一个节点的值。例如,当前节点的前一个节点的类型可以是表格,值可以是table。
需要说明的是,当前节点的父节点是基于抽象语法树确定的,当前节点的前一个节点是根据待补全的SQL语句中字符串的先后顺序确定的,同一个当前节点的前一个节点与父节点不一定相同。
步骤304与步骤305可以同时执行,二者执行顺序不做限制。
步骤306,在特征数据集中确定与节点特征相近的K个预设特征。
进一步的,特征数据集中包括补全提示项及其预设特征,电子设备可以比对当前节点的节点特征与特征数据集中的预设特征,并确定出与节点特征最接近的K个预设特征。
实际应用时,可以计算节点特征与每个预设特征之间的相似度,从而筛选出相似度最高的K个预设特征。
例如,提取的当前节点的节点特征可以是一个N维的向量,相应的,在特征数据集中的预设特征也是N维的向量。可以基于KNN(K-NearestNeighbor,K最邻近)算法确定节点特征与每个预设特征之间的相似度,进而可以筛选出与节点特征相似的K个预设特征。
步骤307,将与K个预设特征对应的补全提示项,确定为用于补全当前节点的补全提示项,并显示当前节点的补全提示项包括的节点类型和节点的值。
其中,特征数据集中的补全提示项与预设特征具有对应关系,在筛选出K个预设特征之后,电子设备可以将与这些预设特征对应的补全提示项确定为当前节点的补全提示项。
具体的,筛选出的预设特征与节点特征之间比较接近,因此,可以认为预设特征对应的补全提示项的内容,与用户希望输入的当前节点的内容也比较接近,因此,可以将与筛选出的预设特征对应的补全提示项作为当前节点的补全提示项。
进一步的,可以显示当前节点的补全提示项包括的节点类型和节点的值,以便于用户在其中选择出任一个补全提示项,使得电子设备能够将该补全提示项包括的值显示在界面中,以提高用户的编程效率。
图4为本公开一示例性实施例示出的特征数据集的确定方法的流程图。
如图4所示,本公开提供的特征数据集的确定方法,包括:
步骤401,获取包括SQL语句的文档。
可以整合已有的SQL文件,得到包括大量SQL语句的文档,再对包括大量SQL语句的文档进行处理,提取各SQL语句的特征,从而得到特征数据集。
其中,这些SQL文件可以是不同的人员编写的,针对每条SQL语句,都可以提取出若干个特征,再将其放到特征数据集中。
步骤402,在SQL语句中确定多个节点,并根据SQL语句确定节点的节点特征。
文档中的SQL语句是完整的语句,每条SQL语句中都包括多个节点。
比如,可以根据SQL语句构建抽象语法树,进而确定SQL语句中的各节点。可以根据SQL语句提取每个节点的特征,具体可以提取SQL语句中各叶子节点的特征。
例如,可以根据一个节点之前的其他节点,确定该节点的节点特征,再例如,可以根据抽象语法树中该节点的父节点,确定该节点的节点特征。
步骤403,根据节点确定补全提示项,并根据补全提示项和节点的节点特征,生成特征数据集;其中,特征数据集包括补全提示项以及与补全提示项对应的节点特征。
实际应用时,可以将节点的内容作为补全提示项,相应的,将该节点的节点特征作为与补全提示项对应的特征。
一个节点的内容包括节点类型和节点的值,相应的,与节点对应的补全提示项也具有相应的节点类型和节点的值。比如,节点类型可能是关键词、函数、变量、字符串、数字等,节点的值是与节点类型对应的值,比如,节点类型是变量时,节点的值可以是具体变量值。
节点具有节点特征,相应的,补全提示项也可以具有该节点特征。因此,通过这种方式能够构建出包括补全提示项及其特征的特征数据集。
一种可选的实现方式中,可以将通过本公开确定出的特征数据集,应用在如图1-3所示的方案中,从而在用户基于SQL语言编程时提供补全提示信息,以提高用户的编程效率。
图5为本公开另一示例性实施例示出的特征数据集的确定方法的流程图。
如图5所示,本公开提供的特征数据集的确定方法,包括:
步骤501,获取包括SQL语句的文档。
步骤501与步骤401的实现方式类似,不再赘述。
步骤502,生成与SQL语句对应的抽象语法树。
AST(Abstract Syntax Tree,抽象语法树),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。通过抽象语法树能够确定出SQL语句中各节点之间的关联关系,从而可以利用抽象语法树提取到更全面、更准确的节点特征。
其中,生成抽象语法树的方式可以采用现有技术中已有的方案。
步骤503,在SQL语句的抽象语法树中确定多个叶子节点。
AST中包括多个节点,这些节点中包括叶子节点。叶子节点能够表征出SQL语句中***作的具体的变量,因此,可以确定抽象语法树中的叶子节点的节点特征。
叶子节点是指抽象语法树中每个分叉的末端的节点,抽象语法树中的各节点具有父子关系,而叶子节点不具有子节点。
图6为一示例性实施例示出的抽象语法树的结构示意图。
如图6所示,在抽象语法树中包括多个分支,每个分支末端的节点为叶子节点,比如节点61、62、63为叶子节点。
可以逐个的遍历抽象语法树中的叶子节点,从而提取每个叶子节点的节点特征。比如,可以在AST中随机获取一个节点,并确定该节点的子节点,并继续确定子节点,直到确定出不具有子节点的叶子节点。
针对AST中的每个叶子节点,都可以确定出相应的节点特征。
步骤504,根据SQL语句的抽象语法树,确定叶子节点的节点特征。
进一步的,抽象语法树中的各节点具有父子关系,可以根据叶子节点的父节点提取叶子节点的特征,还可以根据该父节点的父节点提取叶子节点的特征。
可选的,可以根据SQL语句的抽象语法树,确定叶子节点的父节点的第一信息;和/或,根据SQL语句的抽象语法树,确定与父节点并列的并列节点的第二信息;和/或,确定SQL语句的抽象语法树的根节点的第三信息。
其中,叶子节点的节点特征,包括以下任一项:
第一信息、第二信息、第三信息。
具体的,通过抽象语法树能够确定出一个叶子节点的父节点,还能够确定出父节点的父节点。本公开提供的方案中,可以利用抽象语法树中一个叶子节点的父节点,确定该叶子节点的节点特征。
一种可选的实现方式中,电子设备可以根据SQL语句的抽象语法树,确定一个叶子节点的父节点的第一信息。从而可以利用父节点的内容确定叶子节点的特征。
可选的,第一信息包括以下至少一项:叶子节点的父节点的类型;叶子节点在父节点的排序;该父节点在其父节点中的排序。
例如,抽象语法树中存在一个叶子节点Token i,其具有父节点Token j,则可以将Token j的类型作为Token j的第一信息,还可以将Token i在Token j中的排序作为Tokenj的第一信息,若父节点Token j还具有父节点Token k,则还可以将Token j在Token k中的排序确定为Token j的第一信息。
可选地,电子设备还可以根据SQL语句的抽象语法树,确定与叶子节点的父节点所并列的并列节点的第二信息。从而可以利用与父节点并列的并列节点确定叶子节点的特征。
第二信息包括以下至少一项:与父节点并列的左节点的类型;与父节点并列的左节点的值;与父节点并列的右节点的类型;与父节点并列的右节点的值。
抽象语法树中可以包括并列的节点,属于同一个父节点的子节点为并列节点。比如,节点A具有两个子节点A1和A2,则A1和A2为并列的节点。通过与叶子节点的父节点并列的节点,能够确定出该叶子节点的节点特征。
例如,抽象语法树中存在一个节点Token i,其具有父节点Token j,父节点Tokenj具有并列的左节点Token left,还具有Token right,则可以分别确定Token left和Tokenright的信息,将其作为与父节点并列的并列节点的第二信息。
可选地,还可以确定SQL语句的抽象语法树的根节点的第三信息。
实际应用时,抽象语法树中包括多个节点,一颗抽象语法树中具有一个根节点,比如可以在抽象语法树中逐个遍历节点的父节点,最终确定出不具有父节点的根节点。
其中,第三信息包括根节点的类型和/或根节点的值。通过叶子节点的根节点,能够确定出该节点的特征。
具体的,本公开提供的方案可以获取第一信息、第二信息、第三信息,从而利用与叶子节点有比较紧密关联关系的各节点,确定出抽象语法树中叶子节点的节点特征。
步骤505,根据SQL语句中的字符顺序,确定叶子节点的前一个节点的节点类型,和叶子节点的前一个叶子节点的值;其中,叶子节点的节点特征包括前一个叶子节点的节点类型,和前一个叶子节点的值。
另一种实现方式中,还可以根据SQL语句中包括的字符串,确定叶子节点的节点特征。
SQL语句中包括多个节点,各个节点之间具有前后的位置关系。比如,在SQL语句“select*from table t where t.p_code='A'”中,包括多个字符串,各个字符串之间具有前后关系,因此,还可以根据叶子节点在SQL语句中的位置,确定该叶子节点之前的其他叶子节点的内容,确定该叶子节点的节点特征。
一种可选的实现方式中,可以在AST中确定叶子节点,还可以根据SQL语句中的字符顺序,确定该叶子节点之前的字符内容在AST中所对应的叶子节点,进而得到一个叶子节点之前的另一个叶子节点。
其中,这种方式提取的节点特征可以包括前一个叶子节点的节点类型,和前一个叶子节点的值。例如,一个叶子节点的前一个叶子节点的类型可以是表格,值可以是table。
需要说明的是,叶子节点的父节点是基于抽象语法树中节点间的父子关系确定的,叶子节点的前一个节点是根据SQL语句中字符的先后顺序确定的,同一个节点的前一个节点与父节点不一定相同。
步骤504与步骤505可以同时执行,二者执行顺序不做限制。
步骤506,将节点的类型和值,确定为补全提示项。
步骤507,根据补全提示项和节点的节点特征,生成特征数据集;其中,特征数据集包括补全提示项以及补全提示项的节点特征。
其中,提取到节点的特征之后,可以将该节点的类型和值确定为补全提示项,并将该节点的节点特征作为与补全提示项对应的预设特征,还可以将补全提示项对应及其预设特征存储到特征数据集中。
通过这种实现方式,能够得到包括补全提示项以及补全提示项的节点特征的特征数据集。
图7为本公开一示例性实施例示出的代码提示信息的确定装置的结构图。
如图7所示,本实施例提供的代码提示信息的确定装置700,包括:
获取单元710,用于获取待补全的SQL语句和预设的特征数据集;所述特征数据集中包括补全提示项以及与所述补全提示项对应的预设特征,所述补全提示项包括节点类型和节点的值;
确定单元720,用于在所述SQL语句中确定待编辑的当前节点,并根据所述SQL语句确定所述当前节点的节点特征;
提示单元730,用于根据所述节点特征和所述预设特征,确定用于补全所述当前节点的补全提示项,并显示所述补全提示项包括的节点类型和节点的值。
本公开提供的代码提示信息的确定装置,可以结合预设的特征数据集和待补全的SQL语句的内容,确定并显示SQL语句的待补全提示项,从而能够确定出较为准确的待补全提示项,以提高用户的编程效率。
图8为本公开另一示例性实施例示出的代码提示信息的确定装置的结构图。
如图8所示,本实施例提供的代码提示信息的确定装置800中,还包括树生成单元740,用于生成与所述SQL语句对应的抽象语法树;
所述确定单元720,包括:
第一确定模块721,用于根据所述SQL语句的所述抽象语法树,确定所述当前节点的节点特征。
可选的,所述确定单元720,包括:
第二确定模块722,用于根据所述SQL语句,确定所述当前节点的前一个节点的节点类型,和所述当前节点的前一个节点的值;其中,所述当前节点的节点特征包括前一个节点的节点类型,和前一个节点的值。
可选的,所述第一确定模块721具体用于:
根据所述SQL语句的所述抽象语法树,确定所述当前节点的父节点的第一信息;
和/或,根据所述SQL语句的所述抽象语法树,确定与所述父节点并列的并列节点的第二信息;
和/或,确定所述SQL语句的所述抽象语法树的根节点的第三信息;
其中,所述当前节点的节点特征,包括以下至少一项:
第一信息、第二信息、第三信息。
可选的,所述第一信息包括以下至少一项:
所述当前节点的父节点的类型;
所述当前节点在所述父节点的排序;
所述父节点在其父节点中的排序;
所述第二信息包括以下至少一项:
与所述父节点并列的左节点的类型;
与所述父节点并列的左节点的值;
与所述父节点并列的右节点的类型;
与所述父节点并列的右节点的值;
所述第三信息包括所述根节点的类型和/或所述根节点的值。
可选的,所述提示单元730包括:
筛选模块731,用于在所述特征数据集中确定与所述节点特征相近的K个预设特征;
提示模块732,用于将与所述K个预设特征对应的补全提示项,确定为用于补全所述当前节点的补全提示项。
图9为本公开一示例性实施例示出的特征数据集的确定装置的结构图。
如图9所示,本实施例提供的代码提示信息的确定装置900,包括:
文档获取单元910,用于获取包括SQL语句的文档;
特征提取单元920,用于在所述SQL语句中确定多个节点,并根据所述SQL语句确定所述节点的节点特征;
集合生成单元930,用于根据所述节点确定补全提示项,并根据所述补全提示项和所述节点的节点特征,生成所述特征数据集;其中,所述特征数据集包括补全提示项以及与所述补全提示项对应的节点特征。
图10为本公开另一示例性实施例示出的特征数据集的确定装置的结构图。
如图10所示,本实施例提供的代码提示信息的确定装置1000,所述节点为叶子节点;
所述装置还包括树生成单元940,用于:
生成与所述SQL语句对应的抽象语法树;
所述特征提取单元920,包括:
节点确定模块921,用于在所述SQL语句的抽象语法树中确定多个叶子节点;
第一特征提取模块922,用于根据所述SQL语句的所述抽象语法树,确定所述叶子节点的节点特征。
可选的,所述节点包括与所述SQL语句对应的抽象语法树中的叶子节点;
所述特征提取单元920,包括第二特征提取模块923:
根据所述SQL语句中的字符顺序,确定所述叶子节点的前一个叶子节点的节点类型,和所述叶子节点的前一个叶子节点的值;其中,所述叶子节点的节点特征包括前一个叶子节点的节点类型,和前一个叶子节点的值。
可选的第一特征提取模块922具体用于:
根据所述SQL语句的所述抽象语法树,确定所述叶子节点的父节点的第一信息;
和/或,根据所述SQL语句的所述抽象语法树,确定与所述父节点并列的并列节点的第二信息;
和/或,确定所述SQL语句的所述抽象语法树的根节点的第三信息;
其中,所述叶子节点的节点特征,包括以下任一项:
第一信息、第二信息、第三信息。
可选的,所述第一信息包括以下至少一项:
所述叶子节点的父节点的类型;
所述叶子节点在所述父节点的排序;
所述父节点在其父节点中的排序;
所述第二信息包括以下至少一项:
与所述父节点并列的左节点的类型;
与所述父节点并列的左节点的值;
与所述父节点并列的右节点的类型;
与所述父节点并列的右节点的值;
所述第三信息包括所述根节点的类型和/或所述根节点的值。
可选的,所述集合生成单元930具体用于将所述节点的类型和值,确定为所述补全提示项的内容。
图11为本公开一示例性实施例示出的电子设备的结构图。
如图11所示,本实施例提供的电子设备包括:
存储器111;
处理器112;以及
计算机程序;
其中,所述计算机程序存储在所述存储器111中,并配置为由所述处理器112执行以实现如上所述的任一种代码提示信息的确定方法或特征数据集的确定方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如上所述的任一种代码提示信息的确定方法或特征数据集的确定方法。
本实施例还提供一种计算机程序,包括程序代码,当计算机运行所述计算机程序时,所述程序代码执行如上所述的任一种代码提示信息的确定方法或特征数据集的确定方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
Claims (14)
1.一种代码提示信息的确定方法,其特征在于,包括:
获取待补全的SQL语句和预设的特征数据集;所述特征数据集中包括补全提示项以及与所述补全提示项对应的预设特征,所述补全提示项包括节点类型和节点的值;
在所述SQL语句中确定待编辑的当前节点,并根据所述SQL语句确定所述当前节点的节点特征;
根据所述节点特征和所述预设特征,确定用于补全所述当前节点的补全提示项,并显示所述补全提示项包括的节点类型和节点的值。
2.根据权利要求1所述的方法,其特征在于,还包括:
生成与所述SQL语句对应的抽象语法树;
所述根据所述SQL语句确定所述当前节点的节点特征,包括:
根据所述SQL语句的所述抽象语法树,确定所述当前节点的节点特征。
3.根据权利要求1所述的方法,其特征在于,所述根据所述SQL语句确定所述当前节点的节点特征,包括:
根据所述SQL语句,确定所述当前节点的前一个节点的节点类型,和所述当前节点的前一个节点的值;其中,所述当前节点的节点特征包括前一个节点的节点类型,和前一个节点的值。
4.根据权利要求2所述的方法,其特征在于,所述根据所述SQL语句的所述抽象语法树,确定所述当前节点的节点特征,包括:
根据所述SQL语句的所述抽象语法树,确定所述当前节点的父节点的第一信息;
和/或,根据所述SQL语句的所述抽象语法树,确定与所述父节点并列的并列节点的第二信息;
和/或,确定所述SQL语句的所述抽象语法树的根节点的第三信息;
其中,所述当前节点的节点特征,包括以下至少一项:
第一信息、第二信息、第三信息。
5.根据权利要求4所述的方法,其特征在于,
所述第一信息包括以下至少一项:
所述当前节点的父节点的类型;
所述当前节点在所述父节点的排序;
所述父节点在其父节点中的排序;
所述第二信息包括以下至少一项:
与所述父节点并列的左节点的类型;
与所述父节点并列的左节点的值;
与所述父节点并列的右节点的类型;
与所述父节点并列的右节点的值;
所述第三信息包括所述根节点的类型和/或所述根节点的值。
6.根据权利要求1、2、4、5任一项所述的方法,其特征在于,所述根据所述节点特征和所述预设特征,确定用于补全所述当前节点的补全提示项,包括:
在所述特征数据集中确定与所述节点特征相近的K个预设特征;
将与所述K个预设特征对应的补全提示项,确定为用于补全所述当前节点的补全提示项。
7.一种特征数据集的确定方法,其特征在于,包括:
获取包括SQL语句的文档;
在所述SQL语句中确定多个节点,并根据所述SQL语句确定所述节点的节点特征;
根据所述节点确定补全提示项,并根据所述补全提示项和所述节点的节点特征,生成所述特征数据集;其中,所述特征数据集包括补全提示项以及与所述补全提示项对应的节点特征。
8.根据权利要求7所述的方法,其特征在于,所述节点为叶子节点;
所述方法还包括:
生成与所述SQL语句对应的抽象语法树;
所述在所述SQL语句中确定多个节点,并根据所述SQL语句确定每个所述节点的节点特征,包括:
在所述SQL语句的抽象语法树中确定多个叶子节点;
根据所述SQL语句的所述抽象语法树,确定所述叶子节点的节点特征。
9.根据权利要求7所述的方法,其特征在于,所述节点包括与所述SQL语句对应的抽象语法树中的叶子节点;
所述根据所述SQL语句确定每个所述节点的节点特征,包括:
根据所述SQL语句中的字符顺序,确定所述叶子节点的前一个叶子节点的节点类型,和所述叶子节点的前一个叶子节点的值;其中,所述叶子节点的节点特征包括前一个叶子节点的节点类型,和前一个叶子节点的值。
10.根据权利要求8所述的方法,其特征在于,所述根据所述SQL语句的所述抽象语法树,确定所述叶子节点的节点特征,包括:
根据所述SQL语句的所述抽象语法树,确定所述叶子节点的父节点的第一信息;
和/或,根据所述SQL语句的所述抽象语法树,确定与所述父节点并列的并列节点的第二信息;
和/或,确定所述SQL语句的所述抽象语法树的根节点的第三信息;
其中,所述叶子节点的节点特征,包括以下任一项:
第一信息、第二信息、第三信息。
11.根据权利要求10所述的方法,其特征在于,所述第一信息包括以下至少一项:
所述叶子节点的父节点的类型;
所述叶子节点在所述父节点的排序;
所述父节点在其父节点中的排序;
所述第二信息包括以下至少一项:
与所述父节点并列的左节点的类型;
与所述父节点并列的左节点的值;
与所述父节点并列的右节点的类型;
与所述父节点并列的右节点的值;
所述第三信息包括所述根节点的类型和/或所述根节点的值。
12.一种代码提示信息的确定装置,其特征在于,包括:
获取单元,用于获取待补全的SQL语句和预设的特征数据集;所述特征数据集中包括补全提示项以及与所述补全提示项对应的预设特征,所述补全提示项包括节点类型和节点的值;
确定单元,用于在所述SQL语句中确定待编辑的当前节点,并根据所述SQL语句确定所述当前节点的节点特征;
提示单元,用于根据所述节点特征和所述预设特征,确定用于补全所述当前节点的补全提示项,并显示所述补全提示项包括的节点类型和节点的值。
13.一种特征数据集的确定装置,其特征在于,包括:
文档获取单元,用于获取包括SQL语句的文档;
特征提取单元,用于在所述SQL语句中确定多个节点,并根据所述SQL语句确定所述节点的节点特征;
集合生成单元,用于根据所述节点确定补全提示项,并根据所述补全提示项和所述节点的节点特征,生成所述特征数据集;其中,所述特征数据集包括补全提示项以及与所述补全提示项对应的节点特征。
14.一种电子设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如权利要求1-11任一种所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210314942.1A CN114676155A (zh) | 2022-03-28 | 2022-03-28 | 代码提示信息的确定方法、数据集的确定方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210314942.1A CN114676155A (zh) | 2022-03-28 | 2022-03-28 | 代码提示信息的确定方法、数据集的确定方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676155A true CN114676155A (zh) | 2022-06-28 |
Family
ID=82076656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210314942.1A Pending CN114676155A (zh) | 2022-03-28 | 2022-03-28 | 代码提示信息的确定方法、数据集的确定方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676155A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117632106A (zh) * | 2023-11-21 | 2024-03-01 | 广州致远电子股份有限公司 | 代码补全方法、装置、设备以及存储介质 |
-
2022
- 2022-03-28 CN CN202210314942.1A patent/CN114676155A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117632106A (zh) * | 2023-11-21 | 2024-03-01 | 广州致远电子股份有限公司 | 代码补全方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558754B2 (en) | Method and system for automating training of named entity recognition in natural language processing | |
US9971967B2 (en) | Generating a superset of question/answer action paths based on dynamically generated type sets | |
JP2005537532A (ja) | 自然言語理解アプリケーションを構築するための総合開発ツール | |
US11301643B2 (en) | String extraction and translation service | |
CN117389541B (zh) | 基于对话检索生成模板的配置***及设备 | |
CN111562920A (zh) | 小程序代码相似度确定方法、装置、服务器及存储介质 | |
US8122431B2 (en) | Device for processing formally defined data | |
CN111191429A (zh) | 数据表格自动填充的***和方法 | |
Leonandya et al. | A semi-supervised algorithm for Indonesian named entity recognition | |
CN113419721B (zh) | 基于web的表达式编辑方法、装置、设备和存储介质 | |
CN114676155A (zh) | 代码提示信息的确定方法、数据集的确定方法及电子设备 | |
CN113297251A (zh) | 多源数据检索方法、装置、设备及存储介质 | |
US11036478B2 (en) | Automated determination of transformation objects | |
JP2013029891A (ja) | 抽出プログラム、抽出方法及び抽出装置 | |
JP5447368B2 (ja) | 新規事例生成装置、新規事例生成方法及び新規事例生成用プログラム | |
KR101835994B1 (ko) | 키워드 맵을 이용한 전자책 검색 서비스 제공 방법 및 장치 | |
CN115098365A (zh) | Sql代码的调试方法、装置、电子设备及可读存储介质 | |
CN112698831B (zh) | 一种代码自动生成质量评估方法 | |
CN109739835A (zh) | 一种数据版本保存方法及装置 | |
JP6361472B2 (ja) | 対応情報生成プログラム、対応情報生成装置及び対応情報生成方法 | |
CN109710844A (zh) | 基于搜索引擎的快速准确定位文件的方法和设备 | |
US20240086640A1 (en) | Method, system, and computer readable storage media for transcript analysis | |
JP6703698B1 (ja) | 情報提供システム | |
MARGARIDO | HANDLING CHANGE IN A PRODUCTION TASKBOT | |
CN118193733A (zh) | 生成报告的方法、装置、电子设备和存储介质 |
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 |