CN111459977B - 自然语言查询的转换 - Google Patents

自然语言查询的转换 Download PDF

Info

Publication number
CN111459977B
CN111459977B CN201910108419.1A CN201910108419A CN111459977B CN 111459977 B CN111459977 B CN 111459977B CN 201910108419 A CN201910108419 A CN 201910108419A CN 111459977 B CN111459977 B CN 111459977B
Authority
CN
China
Prior art keywords
natural language
word
language query
sequence
query
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.)
Active
Application number
CN201910108419.1A
Other languages
English (en)
Other versions
CN111459977A (zh
Inventor
陈蓓
楼建光
高妍
张冬梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to CN201910108419.1A priority Critical patent/CN111459977B/zh
Priority to US17/417,559 priority patent/US11514034B2/en
Priority to PCT/US2019/065314 priority patent/WO2020149959A1/en
Publication of CN111459977A publication Critical patent/CN111459977A/zh
Application granted granted Critical
Publication of CN111459977B publication Critical patent/CN111459977B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2425Iterative querying; Query formulation based on the results of a preceding query
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/243Natural language query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis

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)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

根据本公开的实现,提出了一种用于转换自然语言查询的方案。在该方案中,针对一个或多个数据表的第一自然语言查询和第二自然语言查询被接收,其中第二自然语言查询的语义依赖于第一自然语言查询。基于第一自然语言查询和第二自然语言查询来生成针对一个或多个数据表的第三自然语言查询,其中第三自然语言查询的语义与第二自然语言查询的语义相同,并且不依赖于第一自然语言查询。以此方式,该方案能够将依赖于上下文的自然语言查询转换成上下文无关的自然语言查询,从而能够与实现从自然语言查询到计算机可执行查询的转换的任何语义解析器对接,以实现针对一个或多个数据表的查询操作。

Description

自然语言查询的转换
背景技术
数据库的自然语言接口(NLIDB)允许用户使用自然语言来查询数据库,从而减轻了用户学习数据库查询语言的负担。与使用结构化查询语言(SQL)进行数据库查询的传统方法相比,这提供了更好的交互体验。通过使用语义解析技术,自然语言查询能够被自动地转换为计算机可执行的查询(例如,SQL查询),以从数据库中检索答案。当前,针对NLIDB的技术方案通常假设自然语言查询是上下文无关的。然而,与NLIDB的多轮交互可能涉及语义上存在依赖关系的多个查询。在此情况下,需要结合上下文信息才能正确地理解用户的查询意图。
发明内容
根据本公开的实现,提出了一种用于转换自然语言查询的方案。在该方案中,针对一个或多个数据表的第一自然语言查询和第二自然语言查询被接收,其中第二自然语言查询的语义依赖于第一自然语言查询。基于第一自然语言查询和第二自然语言查询来生成针对一个或多个数据表的第三自然语言查询,其中第三自然语言查询的语义与第二自然语言查询的语义相同,并且不依赖于第一自然语言查询。以此方式,该方案能够将依赖于上下文的自然语言查询转换成上下文无关的自然语言查询,从而能够与实现从自然语言查询到计算机可执行查询的转换的任何语义解析器对接,以实现针对一个或多个数据表的查询操作。
提供发明内容部分是为了简化的形式来介绍对概念的选择,其在下文的具体实施方式中将被进一步描述。发明内容部分无意标识要求保护的主题的关键特征或主要特征,也无意限制要求保护的主题的范围。
附图说明
图1示出了能够实施本公开的多个实现的计算设备的框图;
图2示出了根据本公开的实现的用于转换自然语言查询的转换模块的框图;
图3示出了根据本公开的实现的将依赖于上下文的自然语言查询转换为不依赖于上下文的自然语言查询的过程的示意图;
图4A和4B示出了根据本公开的实现的针对冲突的分词对执行融合操作的示意图;
图5示出了根据本公开的实现的针对冲突的分词对执行融合操作的示意图;以及
图6示出了根据本公开的实现的用于转换自然语言查询的方法的流程图。
这些附图中,相同或相似参考符号用于表示相同或相似元素。
具体实施方式
现在将参照若干示例实现来论述本公开。应当理解,论述了这些实现仅是为了使得本领域普通技术人员能够更好地理解且因此实现本公开,而不是暗示对本公开的范围的任何限制。
如本文所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实现”和“一种实现”要被解读为“至少一个实现”。术语“另一个实现”要被解读为“至少一个其他实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如本文所使用的,术语“自然语言”指的是人类用于书面交流或口头交流的日常语言。自然语言的示例包括中文、英文、德文、西班牙文、法文等等。在以下描述中,将以英文作为自然语言的示例。然而应当理解,这仅仅出于示例的目的,而无意于限制本公开的范围。本公开的实施例可以适用于各种不同的自然语言。
如以上提及的,NLIDB允许用户使用自然语言来查询数据库,从而减轻了用户学习数据库查询语言的负担。通过使用语义解析技术,自然语言查询能够被自动地转换为计算机可执行的查询(例如,SQL查询),以从数据库中检索答案。
然而,与NLIDB的多轮交互可能涉及语义上存在依赖关系的多个查询。也即,在与NLIDB的多轮交互中用户发起的当前查询可能基于某个先前查询。例如,用户可能已经发起过查询“Show the sales in 2017(显示2017年的销售额)”,然后用户发起省略的查询“Howabout 2018(2018年如何)?”。在此情况下,需要结合上下文信息才能正确地理解用户的查询意图。
出于简化描述的目的,以下将以两轮查询为例来讨论上述多轮查询的情况。在此所述的两轮查询包括与上下文无关的先前自然语言查询(本文中也称为“第一自然语言查询”、“第一查询”或“先前查询”)和语义依赖于先前自然语言查询的后续自然语言查询(本文中也称为“第二自然语言查询”、“第二查询”或“后续查询”)。应当理解,在此所述的先前查询和后续查询不一定是连续的两个查询,而仅仅指代语义上存在依赖关系的两个查询。
一些传统方案基于在特定领域(例如,航空领域)中的特定数据集来对在语义上依赖于先前查询的后续查询进行分析,以生成与后续查询相对应的SQL查询。然而,这些方法往往仅限于在特定领域中使用,并且难以适用于不同的数据集。一些传统方案对所针对的后续查询的场景进行限制,例如要求后续查询的结果必须是先前查询的结果的子集。此外,这些传统方案通常是将在语义上依赖于先前查询的后续自然语言查询直接解析成与之对应的SQL查询,因此依赖于将自然语言查询解析为SQL查询的具体语义解析器的实现,从而增加了处理和/或运算开销。
以上讨论了在目前针对后续自然语言查询的分析方案中存在的一些问题。根据本公开的实现,提出了一种用于转换自然语言查询的方案,旨在解决上述问题以及其他潜在问题中的一个或多个。在该方案中,针对一个或多个数据表的第一自然语言查询和第二自然语言查询被接收,其中第二自然语言查询的语义依赖于第一自然语言查询。基于第一自然语言查询和第二自然语言查询来生成针对一个或多个数据表的第三自然语言查询,其中第三自然语言查询的语义与第二自然语言查询的语义相同,并且不依赖于第一自然语言查询。
以此方式,该方案能够将依赖于上下文的自然语言查询转换成上下文无关的自然语言查询。此外,该方案对于所适用的领域、数据集、查询场景、自然语言的种类、后续对接的语义解析器的类型、以及所针对的数据表或数据库的数目等没有任何限制,从而具有很高的灵活性。由于不依赖于具体语义解析器的实现,该方案能够有效降低处理和/或运算开销,从而实现较高的系统性能。
以下进一步结合附图来详细描述该方案的各种示例实现。
示例环境
图1示出了能够实施本公开的多个实现的计算设备100的框图。应当理解,图1所示出的计算设备100仅仅是示例性的,而不应当构成对本公开所描述的实现的功能和范围的任何限制。如图1所示,计算设备100包括通用计算设备形式的计算设备100。计算设备100的组件可以包括但不限于一个或多个处理器或处理单元110、存储器120、存储设备130、一个或多个通信单元140、一个或多个输入设备150以及一个或多个输出设备160。
在一些实现中,计算设备100可以被实现为具有计算能力的各种用户终端或服务终端。服务终端可以是各种服务提供方提供的服务器、大型计算设备等。用户终端诸如是任意类型的移动终端、固定终端或便携式终端,包括移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(PCS)设备、个人导航设备、个人数字助理(PDA)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,计算设备100能够支持任意类型的针对用户的接口(诸如“可佩戴”电路等)。
处理单元110可以是实际或虚拟处理器并且能够根据存储器120中存储的程序来执行各种处理。在多处理器系统中,多个处理单元并行执行计算机可执行指令,以提高计算设备100的并行处理能力。处理单元110也可以被称为中央处理单元(CPU)、微处理器、控制器、微控制器。
计算设备100通常包括多个计算机存储介质。这样的介质可以是计算设备100可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器120可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(RAM))、非易失性存储器(例如,只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存)或其某种组合。存储器120可以包括转换模块122,这些程序模块被配置为执行本文所描述的各种实现的功能。转换模块122可以由处理单元110访问和运行,以实现相应功能。
存储设备130可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,其能够用于存储信息和/或数据并且可以在计算设备100内被访问。计算设备100可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图1中示出,可以提供用于从可拆卸、非易失性磁盘进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。
通信单元140实现通过通信介质与另外的计算设备进行通信。附加地,计算设备100的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通信连接进行通信。因此,计算设备100可以使用与一个或多个其他服务器、个人计算机(PC)或者另一个一般网络节点的逻辑连接来在联网环境中进行操作。
输入设备150可以是一个或多个各种输入设备,例如鼠标、键盘、追踪球、语音输入设备等。输出设备160可以是一个或多个输出设备,例如显示器、扬声器、打印机等。计算设备100还可以根据需要通过通信单元140与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与计算设备100交互的设备进行通信,或者与使得计算设备100与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口(未示出)来执行。
在一些实现中,除了被集成在单个设备上之外,计算设备100的各个部件中的一些或所有部件还可以以云计算架构的形式被设置。在云计算架构中,这些部件可以被远程布置,并且可以一起工作以实现本公开所描述的功能。在一些实现中,云计算提供计算、软件、数据访问和存储服务,它们不需要终端用户知晓提供这些服务的系统或硬件的物理位置或配置。在各种实现中,云计算使用适当的协议通过广域网(诸如因特网)提供服务。例如,云计算提供商通过广域网提供应用,并且它们可以通过web浏览器或任何其他计算组件被访问。云计算架构的软件或组件以及相应的数据可以被存储在远程位置处的服务器上。云计算环境中的计算资源可以在远程数据中心位置处被合并或者它们可以被分散。云计算基础设施可以通过共享数据中心提供服务,即使它们表现为针对用户的单一访问点。因此,可以使用云计算架构从远程位置处的服务提供商提供本文所描述的组件和功能。备选地,它们也可以从常规服务器被提供,或者它们可以直接或以其他方式被安装在客户端设备上。
计算设备100可以根据本公开的多种实现来将依赖于上下文的自然语言查询转换成上下文无关的自然语言查询。如图1所示,计算设备100可以通过输入设备150接收针对数据表132的自然语言查询170-1和170-2,其中自然语言查询170-2的语义依赖于自然语言查询170-1。在图1的示例中,自然语言查询170-1例如为“Show the sum of sales by brandin the year 2018(显示2018年按品牌划分的总销售额)”,并且自然语言查询170-2例如为“How about the average(平均值呢)?”。如图1所示,数据表132例如可以包括表名称“Brand Sales(品牌销量)”,多个列名称“Brand(品牌)”、“Sales(销量)”和“Year(年份)”以及由行和列限定的数据项等。
自然语言查询170-1和170-2被输入给存储器120中的转换模块122。转换模块122可以将语义依赖于自然语言查询170-1的自然语言查询170-2转换成与其语义相对应的自然语言查询180,其中自然语言查询180的语义不依赖于自然语言查询170-1。在图1的示例中,自然语言查询180例如为“Show the average of sales by brand in the year 2018(显示2018年按品牌划分的平均销售额)”。
应当理解,图1中的自然语言查询170-1、170-2和180以及数据表132仅出于示例的目的而被示出,而无意于限制本公开的范围。自然语言查询170-1、170-2和180可能涉及各种场景,包括但不限于分析、比较、计算和统计、求极值、过滤、分组、排序、搜索等。例如,表1示出了根据本公开的实现的自然语言查询可以涉及的示例场景及其对应的示例。
表1:自然语言查询的示例场景
此外,虽然以英文作为自然语言的示例,然而应当理解,本公开的实现可以适用于各种不同的自然语言。此外,尽管图1中所示的自然语言查询是针对一个数据表132,然而应当理解,本公开的实现也可以适用于针对多个数据表的自然语言查询。
工作原理
根据本公开的实现,提出了一种用于转换自然语言查询的方案。在该方案中,针对一个或多个数据表的第一自然语言查询和第二自然语言查询被接收,其中第二自然语言查询的语义依赖于第一自然语言查询。基于第一自然语言查询和第二自然语言查询来生成针对一个或多个数据表的第三自然语言查询,其中第三自然语言查询的语义与第二自然语言查询的语义相同,并且不依赖于第一自然语言查询。以此方式,该方案能够将依赖于上下文的自然语言查询转换成上下文无关的自然语言查询,从而能够与实现从自然语言查询到计算机可执行查询的转换的任何语义解析器对接,以实现针对一个或多个数据表的查询操作。
图2示出了根据本公开的实现的用于转换自然语言查询的转换模块122的框图。问答模块122可以被实现在图1的计算设备100中。如图所示,转换模块122包括数据抽象模块210、语义分析模块220和融合模块230。
数据抽象
数据抽象模块210可以接收针对一个或多个数据表的自然语言查询170-1和170-2,其中自然语言查询170-2的语义依赖于自然语言查询170-1。如图2所示,自然语言查询170-1也被表示为x,并且自然语言查询170-2也被表示为y。自然语言查询170-1和170-2中的每一个可以被认为是一个基于自然语言的语句,其包括多个词。取决于自然语言查询所采用的语言,多个词可以是一个或多个自然语言中所包含的词汇。一个或多个数据表中的每一个可以包括表名称、行和/或列名称、以及由行和列限定的数据项。数据表的一个示例例如是图1示出的数据集132。数据表是自然语言查询170-1和170-2的查询对象,即期望从该数据表中获取查询结果。在一些实现中,自然语言查询170-1和170-2所使用的自然语言与呈现数据表的自然语言可以相同。在一些实现中,这两种自然语言可以不同,不同的自然语言仅影响数据抽象过程如何替换符号,这可以通过自然语言互译来实现。
在一些实现中,数据抽象模块210可以执行数据抽象操作。具体地,自然语言查询170-1可以包括第一组词,而自然语音查询170-2可以包括第二组词。数据抽象模块210可以将第一组词和第二组词连结成词序列,并且通过将词序列中的多个词替换成预定符号表中的相应符号,来将该词序列转换成符号序列202,其被表示为w。
在自然语言查询语句中,词语可以分为两种类型:与查询有关的词和修饰词。与查询有关的词例如可以明确地指示查询的参数(例如,SQL子句的参数),而修饰词往往仅用于构成查询语句的句式。如图1所示,在先前查询170-1“Show the sum of sales by brandin the year 2018”中,词语“sum”、“sales”、“brand”、“year”和“2018”等可以被认为是与查询有关的词,而其他词是修饰词。在后续查询170-2“How about the average?”中,词语“average”可以被认为是与查询有关的词,而其他词是修饰词。
表2示出了根据本公开的实现的针对与查询有关的词而预定义的示例符号表。在一些实现中,数据抽象模块210可以在由先前查询170-1和后续查询170-2连结成的词序列中识别与查询有关的词,并且将这些词替换成例如表2中的相应符号,以生成与词序列相对应的符号序列。应当理解,表2仅出于示例的目的而被示出,而不旨在限制本公开的范围。在其他实现中,不同的符号表可以被使用。此外,针对不同自然语言,与符号表中的符号相对应的词可以被相应地替换,这可以通过自然语言的互译来实现。
表2:针对指示查询参数的词的示例符号表
符号 含义 示例
Col 列名称 sale,country
Val 单元值 2018
Agg 聚合 sum,maximum,count
Com 比较 more,later,higher
Dir 排序方向 descending,ascending
Per 人称代词 it,he,them
Pos 物主代词 its,his,their
Dem 指示代词 that,those,other
在表2中,例如,符号Col和Val与数据表相关,而其他符号则与语言相关。对于与数据表相关的符号,可以从每个查询所针对的数据表(例如,图1所示的数据表132)中确定与查询有关的词。应当注意,所有的数字和日期可以属于Val。通过利用Col和Val来替换列名和单元值,使得数据抽象模块210具有跨不同数据表来进行操作的能力。对于与语言相关的符号,符号{Per,Pos,Dem}代表代词,而其他符号则用于不同类型的SQL运算符。例如,符号Agg对应于聚合函数,符号Com代表比较运算符,符号Dir表示ORDERYBY的方向。由于与语言相关的符号的含义被限制在狭窄的空间内,因此可以根据经验来枚举所有最常见的与查询有关的词。例如,符号Pos可以对应于词their、its、his或her等,并且符号Agg可以对应于词average、sum、count、maximum等。
以此方式,例如,针对如图1所示的先前查询170-1“Show the sum of sales bybrand in the year 2018”所生成的符号序列为“Show the Agg of Col by Col in theCol Val”。在下文中,对应于先前查询的符号序列也被表示为针对如图1所示的后续查询170-2“How about the average?”所生成的符号序列为“How about the Agg”。在下文中,对应于后续查询的符号序列也被表示为/>
针对由先前查询170-1和后续查询170-2连结而成的词序列所生成的符号序列如图3中的符号序列202所示。可以看出,符号序列202中的多个预定符号的排列顺序与对应的多个词在由自然语言查询170-1和170-2连结而成的词序列中的排列顺序相同。数据抽象的过程是将词序列中的原始词汇映射到预定符号表中的有限预定符号,这能够降低不同自然语言中的过多词汇的解析难度。
语义分析
返回到图2,符号序列202可以被提供给语义分析模块220。如图2所示,语义分析模块220例如可以包括分词序列生成单元221、意图标记单元222和排名单元223。
在一些实现中,分词序列生成单元221可以接收由数据抽象模块210生成的符号序列202,并且通过向符号序列202应用推演规则集合来将符号序列202转换成多个分词序列204。在下文中,由分词序列生成单元221生成的多个分词序列也被表示为Seg1,Seg2,…,Segn(其中,n为自然数)。每个分词序列可以表示与符号序列202相对应的一种预测语义。
与查询有关的词被替换成的预定符号能够反映该词的内在语义,但是忽略了该词周围的内容。例如,假设已经将先前查询170-1“Show the sum of sales by brand in theyear 2018”解析为SQL语句,尽管词语“brand”和“year”都对应于相同的符号Col,但它们却属于不同的SQL子句。由于词语“year”周围存在对应于符号Val的相邻语“2018”,因此词语“year”实际对应于SQL子句“WHERE year=2018”。由于词语“brand”周围存在像“by”这样的修饰词,因此词语“brand”实际对应于SQL子句“GROUPBY brand”。
在一些实现中,为了捕获修饰词对于与查询有关的词的影响,可以定义多个预定分词(segment),以用于对相邻的预定符号进行组合并且捕获修饰词所施加的影响。例如,可以定义一个或多个推演规则,其中每个推演规则指定相邻预定符号的组合与相应预定分词之间的对应关系。在此所述的“相邻预定符号”意指在两个预定符号之间不存在除了修饰词以外的其他词,并且两个预定符号之间的词语的数目低于预定阈值(例如,4)。如果两个预定符号之间的词语的数目超过预定阈值,则该两个预定符号不能被组合。
表3示出了根据本公开的实现的8种示例类型的分词及其相应的示例推演规则。应当理解,表3仅出于示例的目的而被示出,而不旨在限制本公开的范围。在其他实现中,不同类型的分词和/或推演规则可以被使用。在表3中,“[]”被用来指示可选的符号,W和P分别表示WHERE和代词。
表3:示例分词及其推演规则
分词 推演规则
Select [Agg+[Val]]+Col
Order [Dir]+Col
W1 [Col]+[Com]+Val
W2 Col+Com+Col
Group Col
P1 Per
P2 Pos
P3 Dem+Col
从表3能够看出,如表3所示的推演规则集合中的每个推演规则指定了相邻预定符号的组合与预定分词之间的对应关系。推演规则的设计源自SQL子句。在一些实现中,分词序列生成单元221可以针对例如表3中所示的推演规则集合中的每个推演规则,在符号序列202中识别相邻符号的组合。然后,分词序列生成单元221可以将所识别的相邻符号的组合替换成与之对应的分词,由此生成与符号序列202相对应的分词序列。
由于存在组合符号的多种方式,因此分词序列生成单元221可以将符号序列202转换成多个分词序列204,其中每个分词序列指示符号序列202的一种预测语义。
图3示出了符号序列202被转换而成的多个分词序列204的示例。如图3所示,先前查询170-1中的“sum of sales”(对应于符号序列202中的符号组合“Agg of Col”)与表3中的分词“Select”相对应,其对应于SQL子句“SELECT SUM(sales)”。然而,由于表3中的推演规则存在重叠,因此导致存在多种符号组合方式。例如,先前查询170-1中的“year”(对应于符号序列202中的符号“Col”)可以单独对应于表3中的分词“Select”、“Order”和“Group”。此外,先前查询170-1中的“year”与“2018”的组合(对应于符号序列202中的符号“ColVal”)可以与表3中的分词“W1”相对应。
在一些实现中,为了使得推演规则更加健壮,分词序列生成单元221可以不考虑符号被组合的顺序。例如,符号组合“[Dir]Col”和“Col[Dir]”两者都被认为等同于符号组合“[Dir]+Col”,并因此对应于分词“Order”。
在一些实现中,由于先前查询通常具有完整的句式结构,因此可以直接向其应用如表3所示的推演规则集合中的每个推演规则。然而,由于后续查询中通常存在某种程度的省略,因此在向后续查询应用推演规则时,表3中的前5个推演规则中的所有符号都变为可选的。以此方式,后续查询170-2中的“average”可以对应于表3中的分词“Select”,即使不存在与“average”所对应的符号“Agg”相组合的符号“Col”。此外,先前查询中的符号无法与后续查询中的符号进行组合。以此方式,分词序列生成单元221可以生成与符号序列202相对应的12个分词序列,如图3中的204所示。
返回到图2,多个分词序列204可以被提供给意图标记单元222。意图标记单元222可以确定后续查询的一个或多个可能意图。在一些实施例中,意图标记单元222可以基于后续查询的句式来确定后续查询的可能意图。句式可以由后续查询中首个与查询有关的词之前的多个修饰词来决定。后续查询的可能意图可以例如但不限于:改变先前查询的某个查询参数、和/或与先前查询的查询结果进行比较。在一些实施例中,如果在后续查询中首个与查询有关的词之前不存在任何修饰词,则后续查询的可能意图可以被确定为改变先前查询的某个查询参数。备选地,在一些实施例中,后续查询的可能意图可以包括改变先前查询的某个查询参数和与先前查询的查询结果进行比较两者。
意图标记单元222可以进一步利用表示一个或多个可能意图中的每个可能意图的对应标签对多个分词序列204中的每个分词序列进行标记,从而生成反映该可能意图的标记分词序列(以下也称为“标签序列”)。也即,意图标记单元222可以针对多个分词序列204中的每个分词序列生成反映一个或多个可能意图的一个或多个标记分词序列。以此方式,意图标记单元222能够生成针对多个分词序列204的多个标记分词序列206,也被表示为s1,s2,…,sK(其中,K为自然数)。例如,每个标记分词序列表示与符号序列202相对应的一种预测语义,同时反映一种相应的查询意图。
在一些实现中,为了简单起见,在生成标记分词序列时,分词{W1,W2}可以被统一表示为W,并且分词{P1,P2,P3}可以被统一表示为P。可以利用附加分词O来表示先前查询中不对应于表3中的任何分词的那些词。此外,在代词不明确的情况下,诸如“that”被用作连词时,符号{Per,Pos,Dem}也可以被推演为分词O。
附加地或者备选地,在一些实现中,可以利用B(Beginning)和I(Inside)标签来对每个分词进行标记。例如,以与查询170-1“Show the sum of sales by brand in theyear 2018”相对应的分词序列“Show the Select by Select in the Group W1How aboutthe Select”为例,对应于“sum of sales”的分词“Select”可以被转换成分词组合“SelectB SelectI SelectI”,其中经标记的分词“SelectB”与词语“sum”相对应以指示对应于分词“Select”的初始词,随后的两个经标记的分词“SelectI”分别与词语“of”和“sales”相对应以指示对应于分词“Select”的后续词。此外,针对与后续查询170-2“How about theaverage”相对应的分词序列“How about the Select”,其中“How about the”可以被转换成标记分词组合“RefineB RefineI RefineI”以指示改变先前查询170-1的某个查询参数的意图,或者标记分词组合“AppendB AppendI AppendI”以指示与先前查询170-1的查询结果进行比较的意图。以此方式,意图标记单元222可以生成与多个分词序列204相对应的、被标记有相应查询意图的多个标记分词序列,如图3中的206所示。
返回到图2,多个标记分词序列206可以被提供给排名单元223。排名单元223可以从多个标记分词序列206中选择与后续查询170-2的语义和意图最匹配的一个标记分词序列208,也被表示为s*(其选自标记分词序列集合{s1,s2,…,sK})。在一些实现中,可以利用经训练的排名模型来从多个标记分词序列206中选择与后续查询170-2的语义和查询意图最为匹配的标记分词序列,例如如图3中的208所示。例如,该排名模型可以基于弱监督学习方法而被训练。关于模型训练的细节将在下文中进一步详细地讨论。
融合
如图2所示,所选择的标记分词序列208可以被提供给融合模块230。融合模块230可以基于标记分词序列208来生成与后续查询170-2相对应的自然语言查询180,也被表示为z。自然语言查询180也被称为“融合查询”,其在语义上不依赖于自然语言查询170-1。
在一些实现中,融合模块230可以基于标记分词序列208来确定后续查询170-2的实际意图。例如,如图3所示,标记分词序列208为“O O SelectB SelectI SelectI OSelectB O O WB WI RefineB RefineI RefineI SelectB”,其所指示的查询意图为改变先前查询170-1的某个查询参数。此外,融合模块230可以从多个分词序列204中确定与标记分词序列208相对应的分词序列,并且基于所确定的实际意图和分词序列来生成融合查询180。例如,多个分词序列204中与标记分词序列208为“O O SelectB SelectI SelectI O GroupBO O WB WI RefineB RefineI RefineI SelectB”相对应的分词序列为“Show the Select byGroup in the W1How about the Select”。为了生成融合查询180,融合模块230可以将上述分词序列划分成对应于先前查询170-1的第一子序列“Show the Select by Select inthe W1”和对应于后续查询170-2的第二子序列“How about the Select”。融合模块230可以确定第一子序列和第二子序列中存在冲突的分词对。然后,融合模块230可以基于所确定的后续查询170-2的实际意图,通过针对冲突的分词对执行融合操作来生成融合查询180。
冲突的分词对指示该分词对中的两个分词具有相同或者不兼容的语义。在一些实现中,具有相同类型的分词彼此冲突。例如,两个Select分词彼此冲突。但是,也存在某些特殊的情况。在一些实现中,例如对于两个分词W1而言,仅当它们的内部符号Val位于数据表(例如,图1所示的数据表132)中的相同列时,这两个分词W1才彼此冲突。附加地或备选地,例如为了适应针对多个数据表的查询的情况,在一些实现中,可以通过计算两个分词所涉及的符号相似度、和/或两个分词所涉及的查询上下文的语义相似度来确定这两个分词的相似度。当两个分词的相似度超过阈值相似度时,这两个分词可以被认为是彼此冲突。
图4A和4B示出了根据本公开的实现的针对冲突的分词对执行融合操作的示意图。图4A示出了先前查询410“In 1995,is there any network named CBC”和后续查询420“Any TSN”。如图4A所示,查询420中的词语“TSN”所对应的分词W1与查询410中的词语“CBC”所对应的分词W1构成彼此冲突的分词对,因为“TSN”和“CBC”处于数据表的同一列中(例如,“network(网络)”列)。在一些实现中,对于与代词有关的分词P1、P2和P3而言,融合模块230例如可以基于如下语义冲突规则来确定冲突的分词对:P3(对应于符号组合Dem+Col)与描述数据表中的相同列的分词W1冲突。图4B示出了先前查询410“In 1995,is there anynetwork named CBC(在1995年,存在任何名叫CBC的网络吗)”和后续查询430“Show allnetworks in that year(显示那一年的所有网络)”。如图4B所示,查询430中的词语“thatyear”所对应的分词P3与查询410中的词语“1995”所对应的分词W1构成彼此冲突的分词对,因为“that year”和“1995”针对数据表的同一列(例如,“year(年份)”列)。
在此假设融合模块230所确定的冲突分词对包括来自对应于先前查询的第一子序列的第一分词和来自对应于后续查询的第二子序列的第二分词,并且第一分词可以对应于先前查询中的第一词,而第二分词可以对应于后续查询中的第二词。在一些实现中,针对冲突分词对的融合操作可以通过利用第一词和第二词中的一个词来替换另一词被实现。例如,如图4A所示,可以利用后续查询420中的词语“TSN”来替换先前查询410中的词语“CBC”,从而生成融合查询411“In 1995,is there any network named TSN”。如图4B所示,可以利用先前查询410中的词语“1995”来替换后续查询430中的词语“that year”,从而生成融合查询431“Show all networks in 1995”。可以利用后续查询430中的词语“networks”来替换先前查询410中的词语“network”,从而生成融合查询412“In 1995,is there anynetworks named CBC”。在如图4B所示的示例中,融合模块230可以最终选择融合查询431来作为输出的融合查询z,其是对应于后续查询430的上下文无关的自然语言查询。
在一些实现中,当对应于冲突分词对的一对词语中不存在代词时,上述词语替换可以是基于符号的。图5示出了根据本公开的实现的针对冲突的分词对执行融合操作的示意图。如图5所示,例如,融合模块230将所确定的分词序列“Show the Select by Group inthe W1 How about the Select”划分成对应于先前查询170-1的第一子序列410(即,“Showthe Select by Select in the W1”)和对应于后续查询170-2的第二子序列420(即,“Howabout the Select”)。先前查询170-1中的“sum of sales”(对应于符号序列202中的符号组合“Agg of Col”)与分词Select相对应,并且后续查询170-2中的“average”(对应于符号序列202中的符号“Agg”)也与分词Select相对应。由于两者都是分词Select,因此可以确定两者是互相冲突的分词对。由于融合模块230确定后续查询170-2的实际意图为改变先前查询170-1的某个查询参数,因此融合模块230可以将先前查询170-1中对应于符号“Agg”的词语“sum”替换为后续查询170-2中也与符号“Agg”相对应的词语“average”,由此生成融合查询180,即“Show the average of sales by brand in the year 2018”。
如上所述,融合模块230可以基于所选择的标记分词序列来确定后续查询的实际意图。在一些实现中,当融合模块230确定后续查询的实际意图为与先前查询的查询结果进行比较时,针对冲突分词对的融合操作可以通过将后续查询中的第二词附加到先前查询中的第一词处来被实现。例如,假设先前查询为“How much money has Smith earned(Smith已经赚了多少钱)”并且后续查询为“Compared with Bill Collins(与Bill Collins相比)”。由于融合模块230确定后续查询的实际意图为与先前查询的查询结果进行比较,因此融合模块230可以通过将词语“Bill Collins”附加到词语“Smith”处来生成融合查询,例如为“How much money has Smith and Bill Collins earned”。备选地,在一些实现中,当融合模块230确定后续查询的实际意图为与先前查询的查询结果进行比较时,针对冲突分词对的融合操作可以通过将先前查询中的第一词附加到后续查询中的第二词处来被实现。例如,针对上述示例,融合模块230也可以通过将词语“Smith”附加到词语“Bill Collins”处来生成融合查询,例如为“Compare money Smith earned with Bill Collins”。
排名模型
如上所述,在如图2所示的语义分析模块220中,排名单元223可以从多个标记分词序列206中选择与后续查询170-2的语义和意图最匹配的一个标记分词序列208,其被表示为s*。在一些实现中,可以利用经训练的排名模型来从多个标记分词序列206中选择与后续查询170-2的语义和查询意图最为匹配的标记分词序列。以下将详细讨论该排名模型的生成和使用。
在以下讨论中,利用w=(w1,w2,…,wN)来表示由先前查询170-1和后续查询170-2连结而成的词序列所生成的符号序列,其中N表示符号序列中的符号的数目并且N≥1,wi(i∈[1,N])表示符号序列中的符号。利用S={s1,s2,…,sK}来表示由意图标记单元222生成的标记分词序列集合206,其中K表示标记分词序列的数目,并且标记分词序列集合中的一个标记分词序列其中k∈[1,K]。期望得到的最佳标记分词序列s*可以被表示如下:
其中g(·|Θ)是在给定参数集Θ的情况下的得分函数。在一些实现中,可以使用基于弱监督最大间隔学习方法而训练的双向长短期记忆
条件随机场(LSTM-CRF)模型来执行对标记分词序列集合S的排名。
具体地,针对每个wi(i∈[1,N]),双向LSTM-CRF模型计算隐藏状态并且前向隐藏状态被表示为:
其中φ是使用词表征工具Glove(Global Vectors for Word Representation)而初始化的内嵌函数。利用T来表示标签的数目,并且利用fi来表示针对wi的T维网络得分向量,其可以如下被计算:
fi=hiW (3)
其中W为学到的矩阵。利用A来表示CRF层的T×T转移矩阵,并且其中的元素Auv是从标签u转移到标签v的概率。利用θ来表示LSTM中的网络的参数。在给定Θ={A,W,θ}的情况下,针对标记分词序列sk的得分函数被定义为以下两个部分之和:CRF的转换得分和双向LSTM的网络得分,其如下被计算:
其中是符号wi在标记分词序列sk中的对应标签。
以下进一步讨论基于弱监督学习学习方法来训练双向LSTM-CRF模型的过程。在一些实现中,可以基于使用自然语言中的真实融合查询作为监督的弱监督学习方法来训练双向LSTM-CRF模型。
具体地,在一些实现中,针对每个标记分词序列S,可以基于其对应的分词序列和意图进行融合(如之前在“融合”一节中所描述的),并获得自然语言查询zk。利用z*来表示该标记分词序列所对应的真实融合查询,其可以来自预先获得的训练数据。为了比较zk和z*,可以对它们执行数据抽象过程(如之前在“数据抽象”一节中所描述的)以生成相应的符号序列,其中代词可以被忽略。然后,可以检查两个符号序列中的符号。如果两者具有关于相同对应词的相同符号,则可以将它们称为符号一致的并且将sk置于肯定集合P中。否则,如果两者的符号不一致,则sk可以被置于否定集合N中。可以看出,S=P∪N。然而,P中的标签序列并非都是正确的。在融合和数据抽象之后,具有错误标签的序列可能偶然导致符号一致性。S中仅有一个标签序列可能是正确的,而正确的标签序列总是在P中。因为符号一致性是标签上正确性的要求。因此,我们计算S中所有标签序列的得分,并且分别从P和N中选择得分最高的标签序列:
然后,可以利用最大间隔学习方法来鼓励和/>之间至少Δ大小的间隔。考虑到各种输入的不同长度,可以将归一化因子添加到得分,由此得到铰链损失函数:
其中Δ>0是超参数。在一些实现中,可以基于如上述公式(6)所示的损失函数来训练双向LSTM-CRF模型。
应当理解,以上所示的仅是排名单元223能够用于确定最佳标记分词序列的排名模型的一种示例。应当理解,其他模型也可以被使用,而不仅限于以上描述的双向LSTM-CRF模型。本公开的范围在此方面不受限制。
示例过程
图6示出了根据本公开一些实现的用于转换自然语言查询的方法600的流程图。方法600可以由计算设备100来实现,例如可以被实现在计算设备100的存储器120中的转换模块122处。在610处,计算设备100接收针对一个或多个数据表的第一自然语言查询和第二自然语言查询,其中所述第二自然语言查询的语义依赖于所述第一自然语言查询。在620处,计算设备100基于所述第一自然语言查询和所述第二自然语言查询,生成针对所述一个或多个数据表的第三自然语言查询,其中所述第三自然语言查询的语义与所述第二自然语言查询的语义相同,并且不依赖于所述第一自然语言查询。
在一些实现中,所述第一自然语言查询包括第一组词,所述第二自然语言查询包括第二组词,并且生成所述第三自然语言查询包括:将所述第一组词和所述第二组词包括在词序列中;通过将所述词序列中的一个或多个词替换成预定符号表中的相应符号,将所述词序列转换成符号序列;通过向所述符号序列应用推演规则集合,将所述符号序列转换成多个分词序列,其中的一个分词序列表示所述符号序列的一种预测语义;以及基于所述多个分词序列之一来生成所述第三自然语言查询。
在一些实现中,将所述词序列转换成所述符号序列包括:在所述词序列中识别与查询有关的词;从所述预定符号表中确定表示所述词的语义的符号;以及将所述词序列中的所述词替换成所述符号。
在一些实现中,所述推演规则集合中的一个推演规则指定相邻预定符号的组合与预定分词之间的对应关系,并且将所述符号序列转换成所述多个分词序列包括:针对所述推演规则集合中的所述推演规则,在所述符号序列中识别所述相邻预定符号的组合;以及将所述符号序列中的所述相邻预定符号的组合替换成所述预定分词。
在一些实现中,基于所述多个分词序列之一来生成所述第三自然语言查询包括:基于所述第二自然语言查询的句式,来确定所述第二自然语言查询的一个或多个可能意图;针对所述多个分词序列中的一个分词序列,利用表示所述一个或多个可能意图的相应标签来分别标记该分词序列,以得到反映所述一个或多个可能意图的一个或多个标记分词序列;从通过对所述多个分词序列进行标记而得到的多个标记分词序列中,选择与所述第二自然语言查询的语义的匹配度超过阈值匹配度的标记分词序列;以及基于所选择的所述标记分词序列来生成所述第三自然语言查询。
在一些实现中,所述第二自然语言查询的所述一个或多个可能意图包括以下至少一种:改变所述第一自然语言查询的查询参数;或者与所述第一自然语言查询的查询结果进行比较。
在一些实现中,从所述多个标记分词序列中选择所述标记分词序列包括:利用经训练的排名模型来从所述多个标记分词序列中选择与所述第二自然语言查询的语义的匹配度最高的所述标记分词序列,其中所述排名模型基于弱监督学习方法而被训练。
在一些实现中,基于所选择的所述标记分词序列来生成所述第三自然语言查询包括:基于所选择的所述标记分词序列,来确定所述第二自然语言查询的实际意图;从所述多个分词序列中确定与所选择的所述标记分词序列相对应的分词序列;以及基于确定的所述实际意图和所述分词序列,来生成所述第三自然语言查询。
在一些实现中,基于确定的所述实际意图和所述分词序列来生成所述第三自然语言查询包括:将确定的所述分词序列划分为对应于所述第一自然语言查询的第一子序列和对应于所述第二自然语言查询的第二子序列;确定所述第一子序列和所述第二子序列之间存在冲突的分词对;以及基于所述实际意图,通过针对所述分词对执行融合操作来生成所述第三自然语言查询。
在一些实现中,所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:响应于所述第二自然语言查询的所述实际意图为改变所述第一自然语言查询的查询参数,利用所述第一自然语言查询中的所述第一词来替换所述第二自然语言查询中的所述第二词,或者利用所述第二自然语言查询中的所述第二词来替换所述第一自然语言查询中的所述第一词;以及基于经替换的所述第一自然语言查询或者经替换的所述第二自然语言查询,来生成所述第三自然语言查询。
在一些实现中,所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:响应于所述第二自然语言查询的所述实际意图为与所述第一自然语言查询的查询结果进行比较,将所述第二自然语言查询中的所述第二词附加到所述第一自然语言查询中的所述第一词处,或者将所述第一自然语言查询中的所述第一词附加到所述第二自然语言查询中的所述第二词处;以及基于被附加有所述第二词的所述第一自然语言查询或者被附加有所述第一词的所述第二自然语言查询,来生成所述第三自然语言查询。
基于以上描述能够看出,根据本公开的实现的用于转换自然语言查询的方案能够将依赖于上下文的自然语言查询转换成上下文无关的自然语言查询。此外,该方案对于所适用的领域、数据集、查询场景、自然语言的种类、后续对接的语义解析器的类型、以及所针对的数据表或数据库的数目等没有任何限制,从而具有很高的灵活性。由于不依赖于具体语义解析器的实现,该方案能够有效降低处理和/或运算开销,从而实现较高的系统性能。
示例实现方式
以下列出了本公开的一些示例实现方式。
在一方面,本公开提供了一种计算机实现的方法。所述方法包括:接收针对一个或多个数据表的第一自然语言查询和第二自然语言查询,其中所述第二自然语言查询的语义依赖于所述第一自然语言查询;以及基于所述第一自然语言查询和所述第二自然语言查询,生成针对所述一个或多个数据表的第三自然语言查询,其中所述第三自然语言查询的语义与所述第二自然语言查询的语义相同,并且不依赖于所述第一自然语言查询。
在一些实现中,所述第一自然语言查询包括第一组词,所述第二自然语言查询包括第二组词,并且生成所述第三自然语言查询包括:将所述第一组词和所述第二组词包括在词序列中;通过将所述词序列中的一个或多个词替换成预定符号表中的相应符号,将所述词序列转换成符号序列;通过向所述符号序列应用推演规则集合,将所述符号序列转换成多个分词序列,其中的一个分词序列表示所述符号序列的一种预测语义;以及基于所述多个分词序列之一来生成所述第三自然语言查询。
在一些实现中,将所述词序列转换成所述符号序列包括:在所述词序列中识别与查询有关的词;从所述预定符号表中确定表示所述词的语义的符号;以及将所述词序列中的所述词替换成所述符号。
在一些实现中,所述推演规则集合中的一个推演规则指定相邻预定符号的组合与预定分词之间的对应关系,并且将所述符号序列转换成所述多个分词序列包括:针对所述推演规则集合中的所述推演规则,在所述符号序列中识别所述相邻预定符号的组合;以及将所述符号序列中的所述相邻预定符号的组合替换成所述预定分词。
在一些实现中,基于所述多个分词序列之一来生成所述第三自然语言查询包括:基于所述第二自然语言查询的句式,来确定所述第二自然语言查询的一个或多个可能意图;针对所述多个分词序列中的一个分词序列,利用表示所述一个或多个可能意图的相应标签来分别标记该分词序列,以得到反映所述一个或多个可能意图的一个或多个标记分词序列;从通过对所述多个分词序列进行标记而得到的多个标记分词序列中,选择与所述第二自然语言查询的语义的匹配度超过阈值匹配度的标记分词序列;以及基于所选择的所述标记分词序列来生成所述第三自然语言查询。
在一些实现中,所述第二自然语言查询的所述一个或多个可能意图包括以下至少一种:改变所述第一自然语言查询的查询参数;或者与所述第一自然语言查询的查询结果进行比较。
在一些实现中,从所述多个标记分词序列中选择所述标记分词序列包括:利用经训练的排名模型来从所述多个标记分词序列中选择与所述第二自然语言查询的语义的匹配度最高的所述标记分词序列,其中所述排名模型基于弱监督学习方法而被训练。
在一些实现中,基于所选择的所述标记分词序列来生成所述第三自然语言查询包括:基于所选择的所述标记分词序列,来确定所述第二自然语言查询的实际意图;从所述多个分词序列中确定与所选择的所述标记分词序列相对应的分词序列;以及基于确定的所述实际意图和所述分词序列,来生成所述第三自然语言查询。
在一些实现中,基于确定的所述实际意图和所述分词序列来生成所述第三自然语言查询包括:将确定的所述分词序列划分为对应于所述第一自然语言查询的第一子序列和对应于所述第二自然语言查询的第二子序列;确定所述第一子序列和所述第二子序列之间存在冲突的分词对;以及基于所述实际意图,通过针对所述分词对执行融合操作来生成所述第三自然语言查询。
在一些实现中,所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:响应于所述第二自然语言查询的所述实际意图为改变所述第一自然语言查询的查询参数,利用所述第一自然语言查询中的所述第一词来替换所述第二自然语言查询中的所述第二词,或者利用所述第二自然语言查询中的所述第二词来替换所述第一自然语言查询中的所述第一词;以及基于经替换的所述第一自然语言查询或者经替换的所述第二自然语言查询,来生成所述第三自然语言查询。
在一些实现中,所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:响应于所述第二自然语言查询的所述实际意图为与所述第一自然语言查询的查询结果进行比较,将所述第二自然语言查询中的所述第二词附加到所述第一自然语言查询中的所述第一词处,或者将所述第一自然语言查询中的所述第一词附加到所述第二自然语言查询中的所述第二词处;以及基于被附加有所述第二词的所述第一自然语言查询或者被附加有所述第一词的所述第二自然语言查询,来生成所述第三自然语言查询。
在另一方面,本公开提供了一种电子设备。所述电子设备包括:处理单元;以及存储器,耦合至所述处理单元并且包含存储于其上的指令,所述指令在由所述处理单元执行时,使得所述设备执行动作,所述动作包括:接收针对一个或多个数据表的第一自然语言查询和第二自然语言查询,其中所述第二自然语言查询的语义依赖于所述第一自然语言查询;以及基于所述第一自然语言查询和所述第二自然语言查询,生成针对所述一个或多个数据表的第三自然语言查询,其中所述第三自然语言查询的语义与所述第二自然语言查询的语义相同,并且不依赖于所述第一自然语言查询。
在一些实现中,所述第一自然语言查询包括第一组词,所述第二自然语言查询包括第二组词,并且生成所述第三自然语言查询包括:将所述第一组词和所述第二组词包括在词序列中;通过将所述词序列中的一个或多个词替换成预定符号表中的相应符号,将所述词序列转换成符号序列;通过向所述符号序列应用推演规则集合,将所述符号序列转换成多个分词序列,其中的一个分词序列表示所述符号序列的一种预测语义;以及基于所述多个分词序列之一来生成所述第三自然语言查询。
在一些实现中,将所述词序列转换成所述符号序列包括:在所述词序列中识别与查询有关的词;从所述预定符号表中确定表示所述词的语义的符号;以及将所述词序列中的所述词替换成所述符号。
在一些实现中,所述推演规则集合中的一个推演规则指定相邻预定符号的组合与预定分词之间的对应关系,并且将所述符号序列转换成所述多个分词序列包括:针对所述推演规则集合中的所述推演规则,在所述符号序列中识别所述相邻预定符号的组合;以及将所述符号序列中的所述相邻预定符号的组合替换成所述预定分词。
在一些实现中,基于所述多个分词序列之一来生成所述第三自然语言查询包括:基于所述第二自然语言查询的句式,来确定所述第二自然语言查询的一个或多个可能意图;针对所述多个分词序列中的一个分词序列,利用表示所述一个或多个可能意图的相应标签来分别标记该分词序列,以得到反映所述一个或多个可能意图的一个或多个标记分词序列;从通过对所述多个分词序列进行标记而得到的多个标记分词序列中,选择与所述第二自然语言查询的语义的匹配度超过阈值匹配度的标记分词序列;以及基于所选择的所述标记分词序列来生成所述第三自然语言查询。
在一些实现中,所述第二自然语言查询的所述一个或多个可能意图包括以下至少一种:改变所述第一自然语言查询的查询参数;或者与所述第一自然语言查询的查询结果进行比较。
在一些实现中,从所述多个标记分词序列中选择所述标记分词序列包括:利用经训练的排名模型来从所述多个标记分词序列中选择与所述第二自然语言查询的语义的匹配度最高的所述标记分词序列,其中所述排名模型基于弱监督学习方法而被训练。
在一些实现中,基于所选择的所述标记分词序列来生成所述第三自然语言查询包括:基于所选择的所述标记分词序列,来确定所述第二自然语言查询的实际意图;从所述多个分词序列中确定与所选择的所述标记分词序列相对应的分词序列;以及基于确定的所述实际意图和所述分词序列,来生成所述第三自然语言查询。
在一些实现中,基于确定的所述实际意图和所述分词序列来生成所述第三自然语言查询包括:将确定的所述分词序列划分为对应于所述第一自然语言查询的第一子序列和对应于所述第二自然语言查询的第二子序列;确定所述第一子序列和所述第二子序列之间存在冲突的分词对;以及基于所述实际意图,通过针对所述分词对执行融合操作来生成所述第三自然语言查询。
在一些实现中,所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:响应于所述第二自然语言查询的所述实际意图为改变所述第一自然语言查询的查询参数,利用所述第一自然语言查询中的所述第一词来替换所述第二自然语言查询中的所述第二词,或者利用所述第二自然语言查询中的所述第二词来替换所述第一自然语言查询中的所述第一词;以及基于经替换的所述第一自然语言查询或者经替换的所述第二自然语言查询,来生成所述第三自然语言查询。
在一些实现中,所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:响应于所述第二自然语言查询的所述实际意图为与所述第一自然语言查询的查询结果进行比较,将所述第二自然语言查询中的所述第二词附加到所述第一自然语言查询中的所述第一词处,或者将所述第一自然语言查询中的所述第一词附加到所述第二自然语言查询中的所述第二词处;以及基于被附加有所述第二词的所述第一自然语言查询或者被附加有所述第一词的所述第二自然语言查询,来生成所述第三自然语言查询。
在又一方面,本公开提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令,机器可执行指令在由设备执行时使设备执行上述方面的方法。
在又一方面,本公开提供了一种计算机可读介质,其上存储有机器可执行指令,机器可执行指令在由设备执行时使设备执行上述方面的方法。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实现的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (18)

1.一种计算机实现的方法,包括:
接收针对一个或多个数据表的第一自然语言查询和第二自然语言查询,其中所述第二自然语言查询的语义依赖于所述第一自然语言查询;以及
基于所述第一自然语言查询和所述第二自然语言查询,生成针对所述一个或多个数据表的第三自然语言查询,其中所述第一自然语言查询包括第一组词,所述第二自然语言查询包括第二组词,并且生成所述第三自然语言查询包括:
将所述第一组词和所述第二组词包括在词序列中;
通过将所述词序列中的一个或多个词替换成预定符号表中的相应符号,将所述词序列转换成符号序列;
通过向所述符号序列应用推演规则集合,将所述符号序列转换成多个分词序列,其中的一个分词序列表示所述符号序列的一种预测语义;以及
基于所述多个分词序列之一来生成所述第三自然语言查询。
2.根据权利要求1所述的方法,其中将所述词序列转换成所述符号序列包括:
在所述词序列中识别与查询有关的词;
从所述预定符号表中确定表示所述词的语义的符号;以及
将所述词序列中的所述词替换成所述符号。
3.根据权利要求1所述的方法,其中所述推演规则集合中的一个推演规则指定相邻预定符号的组合与预定分词之间的对应关系,并且将所述符号序列转换成所述多个分词序列包括:
针对所述推演规则集合中的所述推演规则,
在所述符号序列中识别所述相邻预定符号的组合;以及
将所述符号序列中的所述相邻预定符号的组合替换成所述预定分词。
4.根据权利要求1所述的方法,其中基于所述多个分词序列之一来生成所述第三自然语言查询包括:
基于所述第二自然语言查询的句式,来确定所述第二自然语言查询的一个或多个可能意图;
针对所述多个分词序列中的一个分词序列,利用表示所述一个或多个可能意图的相应标签来分别标记该分词序列,以得到反映所述一个或多个可能意图的一个或多个标记分词序列;
从通过对所述多个分词序列进行标记而得到的多个标记分词序列中,选择与所述第二自然语言查询的语义的匹配度超过阈值匹配度的标记分词序列;以及
基于所选择的所述标记分词序列来生成所述第三自然语言查询。
5.根据权利要求4所述的方法,其中所述第二自然语言查询的所述一个或多个可能意图包括以下至少一种:
改变所述第一自然语言查询的查询参数;或者
与所述第一自然语言查询的查询结果进行比较。
6.根据权利要求4所述的方法,其中从所述多个标记分词序列中选择所述标记分词序列包括:
利用经训练的排名模型来从所述多个标记分词序列中选择与所述第二自然语言查询的语义的匹配度最高的所述标记分词序列,
其中所述排名模型基于弱监督学习方法而被训练。
7.根据权利要求4所述的方法,其中基于所选择的所述标记分词序列来生成所述第三自然语言查询包括:
基于所选择的所述标记分词序列,来确定所述第二自然语言查询的实际意图;
从所述多个分词序列中确定与所选择的所述标记分词序列相对应的分词序列;以及
基于确定的所述实际意图和所述分词序列,来生成所述第三自然语言查询。
8.根据权利要求7所述的方法,其中基于确定的所述实际意图和所述分词序列来生成所述第三自然语言查询包括:
将确定的所述分词序列划分为对应于所述第一自然语言查询的第一子序列和对应于所述第二自然语言查询的第二子序列;
确定所述第一子序列和所述第二子序列之间存在冲突的分词对;以及
基于所述实际意图,通过针对所述分词对执行融合操作来生成所述第三自然语言查询。
9.根据权利要求8所述的方法,其中所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:
响应于所述第二自然语言查询的所述实际意图为改变所述第一自然语言查询的查询参数,
利用所述第一自然语言查询中的所述第一词来替换所述第二自然语言查询中的所述第二词,或者
利用所述第二自然语言查询中的所述第二词来替换所述第一自然语言查询中的所述第一词;以及
基于经替换的所述第一自然语言查询或者经替换的所述第二自然语言查询,来生成所述第三自然语言查询。
10.根据权利要求8所述的方法,其中所述分词对包括来自所述第一子序列的第一分词和来自所述第二子序列的第二分词,所述第一分词与所述第一自然语言查询中的第一词相关联并且所述第二分词与所述第二自然语言查询中的第二词相关联,并且通过针对所述分词对执行所述融合操作来生成所述第三自然语言查询包括:
响应于所述第二自然语言查询的所述实际意图为与所述第一自然语言查询的查询结果进行比较,
将所述第二自然语言查询中的所述第二词附加到所述第一自然语言查询中的所述第一词处,或者
将所述第一自然语言查询中的所述第一词附加到所述第二自然语言查询中的所述第二词处;以及
基于被附加有所述第二词的所述第一自然语言查询或者被附加有所述第一词的所述第二自然语言查询,来生成所述第三自然语言查询。
11.一种电子设备,包括:
处理单元;以及
存储器,耦合至所述处理单元并且包含存储于其上的指令,所述指令在由所述处理单元执行时,使得所述设备执行动作,所述动作包括:
接收针对一个或多个数据表的第一自然语言查询和第二自然语言查询,其中所述第二自然语言查询的语义依赖于所述第一自然语言查询;以及
基于所述第一自然语言查询和所述第二自然语言查询,生成针对所述一个或多个数据表的第三自然语言查询,其中所述第一自然语言查询包括第一组词,所述第二自然语言查询包括第二组词,并且生成所述第三自然语言查询包括:
将所述第一组词和所述第二组词包括在词序列中;
通过将所述词序列中的一个或多个词替换成预定符号表中的相应符号,将所述词序列转换成符号序列;
通过向所述符号序列应用推演规则集合,将所述符号序列转换成多个分词序列,其中的一个分词序列表示所述符号序列的一种预测语义;以及
基于所述多个分词序列之一来生成所述第三自然语言查询。
12.根据权利要求11所述的设备,其中将所述词序列转换成所述符号序列包括:
在所述词序列中识别与查询有关的词;
从所述预定符号表中确定表示所述词的语义的符号;以及
将所述词序列中的所述词替换成所述符号。
13.根据权利要求11所述的设备,其中所述推演规则集合中的一个推演规则指定相邻预定符号的组合与预定分词之间的对应关系,并且将所述符号序列转换成所述多个分词序列包括:
针对所述推演规则集合中的所述推演规则,
在所述符号序列中识别所述相邻预定符号的组合;以及
将所述符号序列中的所述相邻预定符号的组合替换成所述预定分词。
14.根据权利要求11所述的设备,基于所述多个分词序列之一来生成所述第三自然语言查询包括:
基于所述第二自然语言查询的句式,来确定所述第二自然语言查询的一个或多个可能意图;
针对所述多个分词序列中的一个分词序列,利用表示所述一个或多个可能意图的相应标签来分别标记该分词序列,以得到反映所述一个或多个可能意图的一个或多个标记分词序列;
从通过对所述多个分词序列进行标记而得到的多个标记分词序列中,选择与所述第二自然语言查询的语义的匹配度超过阈值匹配度的标记分词序列;以及
基于所选择的所述标记分词序列来生成所述第三自然语言查询。
15.根据权利要求14所述的设备,其中所述第二自然语言查询的所述一个或多个可能意图包括以下至少一种:
改变所述第一自然语言查询的查询参数;或者
与所述第一自然语言查询的查询结果进行比较。
16.根据权利要求14所述的设备,其中基于所选择的所述标记分词序列来生成所述第三自然语言查询包括:
基于所选择的所述标记分词序列,来确定所述第二自然语言查询的实际意图;
从所述多个分词序列中确定与所选择的所述标记分词序列相对应的分词序列;以及
基于确定的所述实际意图和所述分词序列,来生成所述第三自然语言查询。
17.根据权利要求16所述的设备,其中基于确定的所述实际意图和所述分词序列来生成所述第三自然语言查询包括:
将确定的所述分词序列划分为对应于所述第一自然语言查询的第一子序列和对应于所述第二自然语言查询的第二子序列;
确定所述第一子序列和所述第二子序列之间存在冲突的分词对;以及
基于所述实际意图,通过针对所述分词对执行融合操作来生成所述第三自然语言查询。
18.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行动作,所述动作包括:
接收针对一个或多个数据表的第一自然语言查询和第二自然语言查询,其中所述第二自然语言查询的语义依赖于所述第一自然语言查询;以及
基于所述第一自然语言查询和所述第二自然语言查询,生成针对所述一个或多个数据表的第三自然语言查询,其中所述第一自然语言查询包括第一组词,所述第二自然语言查询包括第二组词,并且生成所述第三自然语言查询包括:
将所述第一组词和所述第二组词包括在词序列中;
通过将所述词序列中的一个或多个词替换成预定符号表中的相应符号,将所述词序列转换成符号序列;
通过向所述符号序列应用推演规则集合,将所述符号序列转换成多个分词序列,其中的一个分词序列表示所述符号序列的一种预测语义;以及
基于所述多个分词序列之一来生成所述第三自然语言查询。
CN201910108419.1A 2019-01-18 2019-01-18 自然语言查询的转换 Active CN111459977B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910108419.1A CN111459977B (zh) 2019-01-18 2019-01-18 自然语言查询的转换
US17/417,559 US11514034B2 (en) 2019-01-18 2019-12-10 Conversion of natural language query
PCT/US2019/065314 WO2020149959A1 (en) 2019-01-18 2019-12-10 Conversion of natural language query

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910108419.1A CN111459977B (zh) 2019-01-18 2019-01-18 自然语言查询的转换

Publications (2)

Publication Number Publication Date
CN111459977A CN111459977A (zh) 2020-07-28
CN111459977B true CN111459977B (zh) 2023-10-24

Family

ID=69104843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910108419.1A Active CN111459977B (zh) 2019-01-18 2019-01-18 自然语言查询的转换

Country Status (3)

Country Link
US (1) US11514034B2 (zh)
CN (1) CN111459977B (zh)
WO (1) WO2020149959A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783921A (zh) * 2021-01-26 2021-05-11 中国银联股份有限公司 一种数据库操作方法及装置
CN112860866B (zh) * 2021-02-09 2023-09-19 北京百度网讯科技有限公司 语义检索方法、装置、设备以及存储介质
US12001783B2 (en) * 2021-09-24 2024-06-04 Google Llc Autonomous spreadsheet creation
US12001782B2 (en) * 2021-09-24 2024-06-04 Google Llc Personalized autonomous spreadsheets
CN114579606B (zh) * 2022-05-05 2022-07-29 阿里巴巴达摩院(杭州)科技有限公司 预训练模型数据处理方法、电子设备及计算机存储介质
WO2024120610A1 (en) * 2022-12-06 2024-06-13 Huawei Technologies Co., Ltd. Devices and methods for generating an sql query based on a natural language query

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170357635A1 (en) * 2016-06-08 2017-12-14 Rovi Guides, Inc. Systems and methods for determining context switching in conversation
CN107533542A (zh) * 2015-01-23 2018-01-02 微软技术许可有限责任公司 用于理解不完整的自然语言查询的方法
CN108446286A (zh) * 2017-02-16 2018-08-24 阿里巴巴集团控股有限公司 一种自然语言问句答案的生成方法、装置及服务器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515154B2 (en) 2014-03-12 2019-12-24 Sap Se Systems and methods for natural language processing using machine-oriented inference rules
CN110727839B (zh) 2018-06-29 2024-04-26 微软技术许可有限责任公司 自然语言查询的语义解析

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107533542A (zh) * 2015-01-23 2018-01-02 微软技术许可有限责任公司 用于理解不完整的自然语言查询的方法
US20170357635A1 (en) * 2016-06-08 2017-12-14 Rovi Guides, Inc. Systems and methods for determining context switching in conversation
CN108446286A (zh) * 2017-02-16 2018-08-24 阿里巴巴集团控股有限公司 一种自然语言问句答案的生成方法、装置及服务器

Also Published As

Publication number Publication date
WO2020149959A1 (en) 2020-07-23
US11514034B2 (en) 2022-11-29
US20220058191A1 (en) 2022-02-24
CN111459977A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
CN111459977B (zh) 自然语言查询的转换
JP7223785B2 (ja) 時系列ナレッジグラフ生成方法、装置、デバイス及び媒体
CN108829893B (zh) 确定视频标签的方法、装置、存储介质和终端设备
US8577882B2 (en) Method and system for searching multilingual documents
US20130060769A1 (en) System and method for identifying social media interactions
US20220277005A1 (en) Semantic parsing of natural language query
CN110727839A (zh) 自然语言查询的语义解析
US11790174B2 (en) Entity recognition method and apparatus
US11429792B2 (en) Creating and interacting with data records having semantic vectors and natural language expressions produced by a machine-trained model
US20210350090A1 (en) Text to visualization
US20210342376A1 (en) Method and apparatus for information query and storage medium
CN111414122A (zh) 一种智能文本处理方法、装置、电子设备及存储介质
CN111767738A (zh) 一种标签校验方法、装置、设备和存储介质
CN112926308B (zh) 匹配正文的方法、装置、设备、存储介质以及程序产品
CN111026320A (zh) 多模态智能文本处理方法、装置、电子设备及存储介质
WO2024114681A1 (zh) 一种搜索结果展示方法、装置、计算机设备及存储介质
CN112541109B (zh) 答案摘要抽取方法及装置、电子设备、可读介质、产品
CN111142728B (zh) 车载环境智能文本处理方法、装置、电子设备及存储介质
CN111090668B (zh) 数据检索方法及装置、电子设备和计算机可读存储介质
CN112632956A (zh) 文本匹配方法、装置、终端和存储介质
CN112836057A (zh) 知识图谱的生成方法、装置、终端以及存储介质
WO2019231635A1 (en) Method and apparatus for generating digest for broadcasting
CN114970541A (zh) 文本语义理解方法、装置、设备及存储介质
CN112749256A (zh) 文本处理方法、装置、设备及存储介质
CN114118072A (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
GR01 Patent grant
GR01 Patent grant