【论文阅读】通过组件对齐评估和改进 text-to-SQL 的组合泛化

Measuring and Improving Compositional Generalization in Text-to-SQL via Component Alignment

NAACL 2022| CCF B

Abstract

在 text-to-SQL 任务中,正如在许多 NLP 中一样,组合泛化是一个重大挑战:神经网络在训练和测试分布不同的情况下难以实现组合泛化。然而,最近改进这一点的尝试都是基于单词级合成数据或特定数据集分割来生成组合偏差。在这项工作中,我们提出了一种子句级组合示例生成方法。我们首先将Spider文本转SQL数据集中的句子拆分为子句子,用相应的SQL子句注释每个子句子,从而得到一个新的数据集Spider-SS。然后,我们通过以不同的构成方式组合 Spider-SS 子句,进一步构建一个新的数据集 Spider-CG,以测试模型组合泛化的能力。实验表明,在 Spider-CG 上评估时,现有模型的性能会显着下降,即使每个子句在训练过程中都会出现。为了解决这个问题,我们修改了一些最先进的模型来训练 Spider-SS 的分段数据,并且我们表明这种方法提高了泛化性能。

1 Introduction

监督学习环境中的神经模型在从训练分布中提取的数据上表现出良好的性能。然而,分布外 (OOD,out-of-distribution ) 样本的泛化性能可能较差。即使新样本由已知成分组成,情况也可能如此;例如,在 SCAN 数据集上,许多模型对输入 “jump twice and walk” 给出了错误的预测,即使在训练过程中已经出现了 “jump twice”, “walk”, and “walk twice”。这种(通常缺乏)在训练期间能够观察到各种元素的新组合的泛化能力被称为组合泛化

之前关于 text-to-SQL 的组合泛化的工作主要集中在查询拆分上。例如,Shaw 等人 (2021)提出基于SQL原子和化合物分析的TMCD分割和基于长度的问题分割。 Finegan-Dollak 等人(2018)提出了一种基于查询模板的带有单词替换的分割,这比问题分割更具挑战性。然而,这些分割受到数据集内容的限制,使得很难构建具有挑战性的基准,同时确保每个问题短语(子句)出现在训练集中。

之前的工作通过增强模型的组件意识来提高泛化能力。同样,尹等人(2021) 以及 Herzig 和 Berant (2021) 提出了基于跨度的语义解析器,可以预测话语跨度上的子程序。然而,这些工作都是基于数据集,其中组件对齐相对容易实现;但对于更复杂的文本转SQL,不能直接使用它们的方法。例如,如图所示,为了将子句与子SQL对齐,算法需要知道 ‘youngest’ 对应 ‘age’,‘weigh’ 对应 ‘weight’。对于小型或单域设置,可以通过建立规则来构建这样的对齐算法;然而,目前还没有简单可行的大型复杂跨域文本到 SQL 的对齐方法,例如Spider 基准。
在这里插入图片描述

在本文的工作中,我们首先引入了一个新的数据集 Spider-SS(SS 代表sub-sentences子句),源自 Spider;图 1 对两者进行了比较。为了构建Spider-SS:

  • 我们首先设计一个句子分割算法,将每个Spider句子分割成几个子句子(sub-sentences),直到不可分割。
  • 接下来,我们用每个子句相对应的 SQL 子句对其进行注释。通过使用中间表示语言 NatSQL来降低此任务的难度,该语言更简单,并且在语法上与自然语言 (NL) 更一致。

因此,Spider-SS 为设计具有更好泛化能力的模型提供了新的资源,而无需设计复杂的对齐算法。此外,它还可以作为评估未来对齐算法的基准。据我们所知,这是第一个基于子句的 text-to-SQL 数据集。

带注释的 Spider-SS 为我们提供了与 NatSQL 子句配对的 sub-sentences ( 自然语言子句 ),这些sub-sentences作为我们的元素。基于Spider-SS,我们然后构建进一步的数据集Spider-CG(CG代表组合泛化),通过用其他样本中的sub-sentences替换该样本的 sub-sentences,或者组合两个sub-sentences以形成更复杂的样本。 Spider-CG 包含两个子集;图 2 显示了每种情况的一个示例:

  • 第一个子集包含通过替换子句生成的 23,569 个示例;我们认为该子集中的大多数数据都是分布的 (in-distribution)。
  • 第二个子集包含 22,030 个通过附加子句子生成的示例,与原始样本相比,增加了句子和 SQL 查询的长度和复杂性;我们将此子集视为 OOD (out-of-distribution )。我们证明,当仅在原始 Spider 数据集上训练模型时,即使一些子句已经出现在训练集中,它们在 Spider-CG 的第二个 OOD 子集上的性能也会显着下降。

在这里插入图片描述

为了提高 text-to-SQL 模型的泛化性能,我们修改了几个以前的最先进的模型,以便它们可以被应用在 Spider-SS 数据集上,并逐个使用 sub-sentence 训练模型。这一修改在 Spider-CG 的 OOD 子集上获得了超过 7.8% 的精度提升。

简而言之,我们做出以下贡献:

  • 除了句子拆分算法之外,我们还引入了 Spider-SS,这是一个基于 Spider 基准的人工策划的基于子句的 text-to-SQL 数据集,通过将其 NL 问题拆分为子句。
  • 我们引入了Spider-CG 基准测试来测量文本到SQL 模型的组合泛化性能。
  • 我们证明 text-to-SQL 模型可以适应基于子句子的训练,从而提高其泛化性能。

2 Spider-SS

2.1 Overview

图 1 展示了 Spider 和 Spider-SS 之间的比较。与 Spider 将整个 SQL 查询为整个句子注释不同,Spider-SS 将 SQL 子句注释为子句子 sub-sentence。 Spider-SS 使用 NatSQL 代替 SQL 进行注释,由于 SQL语言的设计规则,有时候直接使用 sub-sentence 对应的 SQL 子句对其进行注释是比较困难的。Spider-SS提供了一种组合算法,收集所有NatSQL子句,然后生成NatSQL查询,其中NatSQL查询可以转换为SQL查询。

构建Spider-SS的目的是获得子句级别的 text-to-SQL 数据,避免需要 基于复杂的大型跨域 text-to-SQL数据集(例如Spider)难以构建的对齐算法。此外,我们可以通过Spider-SS的不同子句组合生成更复杂的例子。与 Spider 一致,Spider-SS 包含 7000 个训练示例和 1034 个开发示例,但 Spider-SS 不包含测试集,因为 Spider 测试集不公开。构建Spider-SS有两个步骤。首先设计句子分割算法,将句子切分成子句,然后手动标注每个子句对应的NatSQL子句。

2.2 Sentence Split Algorithm

我们在 NL 依存解析器 spaCy 上构建句子分割算法,它提供句子的语法结构。基本上,我们将句子分成以下依赖项:prep、relcl、advcl、acl、nsubj、npadvmod、csubj、nsubjpass 和 conj。根据(de Marnee and Manning,2016),这些依赖关系帮助我们区分主句、从句和修饰语。图 3 显示了一个句子的依存结构以及如何将该句子拆分为三个子句子。然而,并不是每个句子都会被分割,因为有一些不可分割的句子,如图 4 中的第三个示例,其注释与 Spider 数据集相同。虽然这种方法在大多数情况下可以很好地分割句子,但由于自然语言的可变性,有些例子无法完美分割。

在这里插入图片描述

在这里插入图片描述

为了解决句子拆分中的剩余问题,我们设计了一些针对 text-to-SQL 应用程序的细化步骤。例如,当模式列或表的阶段意外地分成两个子句时,这两个子句会自动连接起来。此外,当子句中只有一个单词时,也应该撤消相应的拆分。

我们从Spider-SS开发集中抽取了500个样本来人工评估分割结果的可接受性,只有 < 3% 的分割结果不令人满意。例如,在图4中第一个示例的拆分结果中,最后两个子句应组合起来对应于“ORDER BY Customer.Email_Address, Customer.Phone_Number ASC ”。在这个例子中,我们并没有简单地给最后一个子句添加“ORDER BY Customer.Phone_Number ASC”,因为 sub-sentence 中没有提到任何与“ORDER BY”相关的内容。在这里,我们引入了“extra”,这是一个为Spider-SS数据集设计的新NatSQL关键字,表明该 sub-sentence 提到了暂时不适合任何其他NatSQL子句的列。当将 NatSQL 子句组合到最终的 NatSQL 查询中时,组合算法根据前后子句确定 “extra” 列的最终位置。请注意,即使有一小部分分割结果不满意,只要在 Spider-SS 上训练的模型能够根据输入的 sub-sentence 给出正确的输出,sub-sentences 本身的质量不会强烈影响模型效用。

2.3 Data Annotation

当我们得到上一步的分割结果后,我们就可以开始数据标注了。我们根据sub-sentence内容给出精确的注释,例如上一小节讨论的“extra”列注释。此外,如果子句中缺少 schema 列的描述,我们将为 schema 列添加一个“NO MENTIONED”标记。例如,在图 4 的第二个示例中,“按升序”子句没有提及“Farm.Total_Horses”列。因此,我们为其添加“NO MENTIONED”标记。对于那些没有提及任何与查询相关的子句,我们给出“NONE”标记,表示没有 NatSQL 子句。

由于标注是根据 sub-sentence 内容进行的,因此与 sub-sentence 更加一致的等价SQL会优先于原始SQL。同样,如果原来的SQL注释有错误,我们根据内容进行更正。

我们使用 NatSQL 而不是 SQL 来注释 sub-sentence ,其中 NatSQL 是 SQL 的中间表示,仅保留 SQL 中的 SELECT、WHERE 和 ORDER BY 子句。由于某些子句需要使用 GROUP BY 子句进行注释,因此我们选择使用GROUP BY 增强的NatSQL版本。我们没有直接使用 SQL,因为在某些情况下很难注释,例如图 5 中的 SQL 示例。困难在于这个 SQL 查询中有两个 SELECT 子句,但没有一个子句对应于两个 SELECT 子句。另外,考虑到两个WHERE条件对应不同的SELECT子句,基于SQL的标注工作完成起来要困难得多。如图5所示,我们可以使用NatSQL快速完成标注,同时NatSQL可以转换回目标SQL。

在这里插入图片描述

3 Spider-CG

3.1 Overview

Spider-CG是一个合成数据集,是通过重新组合Spider-SS的子句生成的。重组方法有两种。第一种是不同示例之间的子句替换,另一种是将子句附加到另一个句子中。为了方便后续讨论,我们将子句替换方法生成的Spider-CG子集命名为CG-SUB,将另一个命名为CG-APP。

在CG-SUB中,Spider-SS训练集生成了20,686个示例,而开发集生成了2,883个示例。在 CG-APP 中,训练集和开发集生成的示例分别为 18,793 个和 3,237 个。因此,Spider-CG 包含 45,599 个示例,大约是 Spider 数据集的六倍。如果需要更多数据,我们可以进一步在 CG-SUB 示例中附加子句子。

3.2 Generation Algorithm

根据算法1,我们可以根据组成元素生成CG-SUB和CG-APP。每个元素包含一个或多个带有来自 Spider-SS 的相应 NatSQL 子句的 sub-sentence,其中这些 NatSQL 只能是 WHERE 或 ORDER BY 子句。因此,算法1仅替换并附加WHERE和ORDER BY子句,并且不修改SELECT子句。我们通过从头到尾或从尾到头扫描所有 sub-sentences 来收集构成元素的子句,遇到除 WHERE 和 ORDER BY 之外的子句时停止。例如,我们生成一个组合元素,其中包含图 5 中 Spider-SS 示例的最后两个子句子。相反,图 1 中的示例没有提取任何元素。应该注意的是,一个域中的元素不能在另一个域中使用,因为模式项不同。因此,有多少个域,就需要运行算法 1 多少次。
在这里插入图片描述

3.3 Quality Evaluation

我们认为 text-to-SQL 语句的质量由两个标准决定:包含所需信息和合理。 “信息”标准要求一个句子包含导出目标 NatSQL 所需的所有信息。 “合理”的标准要求句子逻辑正确、表达流畅、易于理解。我们从 Spider-CG 数据集中随机抽取了 2000 个样本,其中大约 99% 是可以接受的,即它们满足这两个标准。评估由具有 text-to-SQL 丰富知识的计算机科学毕业生手动进行。然而,这些可接受的例子并不意味着没有语法错误,而且它们可能毫无意义。我们在表1中给出了一个可以接受但不完美的例子,其中这个句子是没有意义的,因为它要查询的内容就是它给出的条件。此外,在这些可接受的示例中,大约有 5% 的 NatSQL 查询无法转换为正确的 SQL。这个问题可以在未来通过设计良好的数据库模式或者更新NatSQL转换函数来解决。

在这里插入图片描述

4 Model

现有的 text-to-SQL 模型输入一个句子并输出相应的SQL查询。因此,考虑使用 Spider-SS 数据集的最简单方法是训练输入子句并输出相应 NatSQL 子句的模型。然而,这种方法并不可行,因为它会丢失一些重要的模式信息。例如,如果只看图1中的第三个子句,你不知道它是查询宠物的体重还是人的体重。

为了考虑Spider-SS的上下文和子句数据,我们提出seq2seq模型可以对整个句子进行编码,但仅对子句进行解码。图 6 展示了对整个句子进行编码但仅解码“who is old than ten”的子句并输出相应的 NatSQL 子句的工作流程。

在这里插入图片描述

基于这样的改进,seq2seq 的 text-to-SQL 模型可以在 Spider-SS 上适用。尽管之前基于跨度的语义解析器可以使用基于 Spider-SS 数据集的对齐注释,但它们都不是为复杂的文本到 SQL 问题而设计的。我们的修改思路与基于span的语义解析器原理上类似,但是我们没有按照基于span的方式改变现有的模型,因为我们的修改思路工作量更小。

一般来说,我们可以通过三个步骤使基于seq2seq的 text-to-SQL模型适应Spider-SS。

  1. 数据预处理。按子句子拆分 Spider-SS 示例。例如,将图6中的示例拆分为图7中所示的两个示例。
  2. 模型修改。经过数据预处理后,模型有两个输入数据。第一个输入是直接进入编码器的整个问题。第二个输入是子句索引,用于选择编码器输出,如图6所示。
  3. 输出组合。由于模型输出可能只是一个子句,而不是完整的 NatSQL 查询,因此我们在模型输出所有 NatSQL 子句后生成最终的 NatSQL 查询。

5 Experiment

5.1 Experimental Setup

**数据集。**我们在 Spider-CG 和 Spider (Yu et al., 2018b) 数据集上评估了之前最先进的模型。因为 Spider 的测试集没有公开,Spider-CG 不包含测试集。正如 3.1 节中所讨论的,我们将 Spider-CG 分为两个子集:CG-SUB 和 CGAPP。因此,有五个评估集:

  • S p i d e r D Spider_D SpiderD:原始 Spider 开发集,包含 1,034 个示例,用于 cross-domain in-distribution text-to-SQL 评估。
  • C G − S U B T CG-SUB_T CGSUBT:CG-SUB 训练集,包含从Spider-SS 训练集中通过替换子句生成的20,686 个示例。 C G − S U B T CG-SUB_T CGSUBT可用于域内 in-domain in-distribution text-to-SQL 评估。
  • C G − S U B D CG-SUB_D CGSUBD:CG-SUB 开发集,包含 2,883 个用于 cross-domain in-distribution text-to-SQL 评估的示例。
  • C G − A P P T CG-APP_T CGAPPT:CG-APP 训练集,包含通过附加子句子从Spider-SS 训练集中生成的18,793 个示例。 C G − A P P T CG-APP_T CGAPPT 可用于 in-domain out-of-distribution text-to-SQL 评估。
  • C G − A P P D CG-APP_D CGAPPD:CG-APP 开发集,包含 3,237 个 cross-domain out-of-distribution text-to-SQL 评估的示例。

我们的评估基于原始 Spider 基准中定义的精确匹配指标。精确匹配度量衡量不带条件值的预测查询的语法树是否与黄金查询的语法树相同。所有模型仅在 7000 个 Spider 或 Spider-SS 训练样本上进行训练。

模型。我们评估了以下在 Spider 上达到竞争性能的开源模型:

  • GNN:使用 GLOVE嵌入的 GNN 模型。
  • RATSQL:使用 GLOVE 嵌入的 RATSQL 模型。
  • R A T S Q L B RATSQL_B RATSQLB:使用 BERT嵌入的 RATSQL 模型。
  • R A T S Q L G RATSQL_G RATSQLG:使用 GAP 嵌入的 RATSQL 模型。
  • ( N ) (_N) (N):该下标表示模型使用 NatSQL 而不是 SQL。
  • ( S ) (_S) (S):该下标表示模型根据第4节进行修改并在Spider-SS上进行训练。此外,因为 Spider-SS 是由 NatSQL 进行标注的,这个下标也意味着模型使用 NatSQL 而不是 SQL。

5.2 Dataset Analysis

Spider-SS。表 2 显示了 Spider 中的 SQL 与 Spider-SS 中 NatSQL 生成的 SQL 之间的差异。我们的评估结果低于原始 NatSQL 数据集,因为 Spider-SS 使用等效的 SQL 并纠正了一些错误,如第 2.3 节所述。某些等效且更正的 SQL 无法在精确匹配指标和执行匹配方面获得积极结果。因此,在 Spider-SS 上训练的模型可能不适合追逐 Spider 基准,尤其是基于精确匹配指标。同样,扩展 NatSQL 的 RATSQLG 在 Spider 测试集的执行匹配中取得了之前的 SOTA 结果,但在精确匹配中得到了比原始结果更差的结果(Gan et al., 2021b)。因此,我们建议使用基于 NatSQL 的数据集来评估在 NatSQL 上训练的模型。

在这里插入图片描述

Spider-CG。表3列出了五个不同评估集的难度分布。难度标准由Spider benchmark定义,包括简单、中等、困难和超困难。实验表明,SQL越难,正确预测就越困难。从表3可以发现, C G − S U B T CG-SUB_T CGSUBT C G − S U B D CG-SUB_D CGSUBD的难度分布与 S p i d e r D Spider_D SpiderD类似。 C G − S U B T CG-SUB_T CGSUBT C G − S U B D CG-SUB_D CGSUBD S p i d e r D Spider_D SpiderD 之间的相似分布支持第 1 节中讨论的观点,即替换方法生成的示例是分布的。

另一方面, C G − A P P T CG-APP_T CGAPPT C G − A P P D CG-APP_D CGAPPD的难度分布与 S p i d e r D Spider_D SpiderD明显不同。由于添加了子句, C G − A P P CG-APP CGAPP 中的NL和SQL变得更加复杂,其中Extra Hard中的SQL比例明显增加,而easy则相反。

在这里插入图片描述

5.3 Sentence Split Algorithm Evaluation

我们根据2.2节中介绍的算法分割的Spider-SS子句的组合生成Spider-CG。我们可以利用该算法对Spider-CG中的句子进行分割,然后将分割结果与SpiderSS子句子进行比较,以评估分割算法的稳定性。我们认为去除结果中一两个token的偏差是可以接受的。例如,在图1中,我们认为将第三个子句的逗号放入第二个子句中不会改变子句的含义,对于移动逗号和“and”一词也是如此。

表4展示了Spider-SS和Spider-CG中子句之间的相似度,这些子句是在一两个词的偏差下通过相同的分割算法生成的。当允许存在两个偏差词时,所有评价集中的相似度超过90%。考虑到在Spider-SS上训练的模型不需要一致的分割结果,如2.2节中讨论的,分割算法的相似度结果足够好。 CG-SUB的相似度高于CG-APP,这意味着句子越复杂,对算法的挑战就越大。虽然算法在训练集上进行了细化,但CG-SUB和CG-APP中的训练和开发相似度接近,表明该算法对于未知领域中的句子表现一致。综上所述,我们认为只要句子不比CG-APP复杂,该算法就可以在其他文本转SQL数据集中稳定使用。

在这里插入图片描述

5.4 Model Results

表 5 显示了五个不同评估集的精确匹配精度。在 C G − A P P T CG-APP_T CGAPPT C G − A P P D CG-APP_D CGAPPD 这两个 OOD 数据集中,所有模型的性能均下降了约 10% 至 30%。然而,在 OOD 数据集上进行评估时,在 Spider-SS 上训练的模型明显优于在 Spider 上训练的模型。在输入带有下标(S)的模型之前,我们使用句子分割算法来分割每个句子。尽管分割的子句与训练时看到的不完全一致,但这并不妨碍带有下标(S)的模型获得良好的性能,即 R A T S Q L G ( S ) RATSQL_{G(S)} RATSQLG(S)在所有评估集上始终优于所有其他模型。这些结果表明基于子句的方法可以提高泛化性能。限制是该方法可能与原始模型不兼容,例如 R A T S Q L B ( S ) RATSQLB_{(S)} RATSQLB(S)中的原始超参数不可行,还有GNN在SpiderD和 C G − S U B D CG-SUB_D CGSUBD上的性能下降。

每个模型在未见过的 S p i d e r D Spider_D SpiderD C G − S U B D CG-SUB_D CGSUBD之间都有接近的结果,这表明从模型的角度来看,合成句子与NL非常相似。因此,我们相信 C G − S U B D CG-SUB_D CGSUBD 的性能可以推广到现实世界。而且,考虑到生成 C G − S U B D CG-SUB_D CGSUBD C G − A P P D CG-APP_D CGAPPD的算法很接近(参见附录A),我们可以进一步推测 C G − A P P D CG-APP_D CGAPPD的合成句子也接近自然语言。

在 Spider-CG 上评估时,使用 NatSQL 的模型明显优于不使用 NatSQL 的模型。原因之一是Spider和Spider-SS的训练数据大约有10%的差异,这导致在Spider上训练的模型在对Spider-SS的NatSQL生成的SQL进行评估时性能下降,反之亦然。另一方面,(Gan et al., 2021b)中的实验表明 NatSQL 提高了 extra hard SQL 中的模型性能。因此, R A T S Q L G ( N ) RATSQL_{G(N)} RATSQLG(N) R A T S Q L B ( N ) RATSQL_{B(N)} RATSQLB(N) C G − A P P T CG-APP_T CGAPPT 和$ CG-APP_D$ 中比 R A T S Q L G RATSQL_G RATSQLG 和$ RATSQL_B$ 遭受更少的性能下降。

在这里插入图片描述

6 Conclusion

我们引入 Spider-SS 和 Spider-CG 来测量文本到 SQL 模型的组合泛化。具体来说,Spider-SS 是一个基于 Spider 基准的人工策划的基于子句的 text-to-SQL 数据集。 Spider-CG是通过替换和附加不同样本的子句子构建的合成文本到SQL数据集,使得训练集和测试集由不同的子句组成。我们发现以前的 text-to-SQ 模型的性能在 Spider-CG OOD 子集上急剧下降,而修改模型以适应 Spider-SS 的分段数据可以提高组合泛化性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 Python3.10 系统入门+进阶(二):Python编程环境搭建

目录 一、Windows安装Python1.1 下载并安装 Python1.2 测试安装是否成功 二、Linux系统安装Python(新手可以跳过)2.1 基于RockyLinux系统安装Python(编译安装)2.2 基于Ubuntu系统安装Python(编译安装) 三、如何运行Python程序&#xff1f;3.1 Python 交互式编程3.2 编写Python源…

GB28181 —— 5、C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

被测试的USB摄像头 效果 源码说明 主要功能模拟设备端&#xff0c;完成注册、注销、心跳等&#xff0c;同时当服务端下发指令播放视频时 设备端实时读取USB摄像头视频并通过OpenCV处理后实时转ps格式后封包rtp进行推送给服务端播放。 源码 /****remark: pes头的封装,里面的具…

开发环境配置本地hosts修改域名

一、找到hosts文件的位置&#xff1a; 方法一&#xff1a;windows系统下&#xff0c;直接 WinR 键输入&#xff1a; C:\WINDOWS\system32\drivers\etc 如图所示&#xff1a;输入完后点击确认 方法二&#xff1a;直接按照路径 C:\WINDOWS\system32\drivers\etc 去找 如图所示…

Opencv | 图像基础知识

目录 一. 图像基础知识1. 颜色空间1.1 RGB颜色空间1.2 HSV颜色空间1.3 CMY(K)颜色空间 (了解) 2. 颜色图2.1 RGB三通道彩色图2.1.1 RGB图片数据格式 2.2 单通道灰度图 一. 图像基础知识 1. 颜色空间 1.1 RGB颜色空间 加法混色&#xff0c;彩色显示器 3通道&#xff1a;Red通道…

ASP.NET-Global.asax使用详解

本文介绍了如何使用Global.asax文件来增强ASP.NET Web应用程序的功能。首先&#xff0c;介绍了Global.asax文件的作用和基本功能。接着&#xff0c;详细探讨了在Global.asax中实现定时任务、应用程序级别的错误处理、应用程序启动和结束时执行特定逻辑等功能。随后&#xff0c;…

QGIS编译(跨平台编译)056:PDAL编译(Windows、Linux、MacOS环境下编译)

点击查看专栏目录 文章目录 1、PDAL介绍2、PDAL下载3、Windows下编译4、linux下编译5、MacOS下编译1、PDAL介绍 PDAL(Point Data Abstraction Library)是一个开源的地理空间数据处理库,它专注于点云数据的获取、处理和分析。PDAL 提供了丰富的工具和库,用于处理激光扫描仪、…

ping 通ip,ping 不通域名

在linux 系统中&#xff0c;ping 通ip,ping 不通对应的域名时&#xff0c;可直接修改系统配置文件 vi /etc/hosts 加入 ip 域名

JavaScript 使用 Promise 实现 sleep 休眠

以下为代码实现&#xff0c;该代码实现了每隔1秒打印一次当前时间&#xff0c;总共打印5次的功能 for(let i 1; i < 5; i){console.log(new Date().toString())await new Promise(resolve>setTimeout(resolve,1000)) }实现休眠的核心代码为: await new Promise(resolv…

uniapp使用Canvas给图片加水印把临时文件上传到服务器

生成的临时路径是没有完整的路径没办法上传到服务器 16:37:40.993 添加水印后的路径, _doc/uniapp_temp_1710923708347/canvas/17109238597881.png 16:37:41.041 添加水印后的完整路径, file://storage/emulated/0/Android/data/com.jingruan.zjd/apps/__UNI__BE4B000/doc/…

Qt笔记 事件处理_鼠标事件

什么是事件&#xff1f; 点击鼠标左键&#xff0c;双击鼠标左键&#xff0c;鼠标来回移动&#xff0c;按下键盘按钮&#xff0c;这些都是事件。 那么事件的响应机制是什么样的呢&#xff1f; 首先main函数中有一个QApplication&#xff0c;其作用是创建一个应用程序对象&…

【论文阅读】Masked Autoencoders Are Scalable Vision Learners

Masked Autoencoders Are Scalable Vision Learners 引用&#xff1a; He K, Chen X, Xie S, et al. Masked autoencoders are scalable vision learners[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2022: 16000-16009. 论文链…

UE4_官方动画内容示例1.3_ 运动混合空间(Locomotion BlendSpace)

如何使用运动&#xff08;Locomotion&#xff09;混合空间将Actor在不同方向上及不同速度的运动混合起来。&#xff08;例如&#xff0c;展示了一个混合了以不同速度向后、前、左和右走路/跑步动作的Actor&#xff09;。 一、相关知识点&#xff1a; 混合空间是允许根据多个输…

联想笔记本的声音键没有反应怎么办?

如果我的联想笔记本电脑上的声音按钮没有响应&#xff0c;该怎么办&#xff1f; 如果我的联想笔记本电脑上的声音按钮没有响应&#xff0c;该怎么办&#xff1f; 按下按钮后我无法控制声音。 我该怎么办&#xff1f; 以下是我为您整理的关于联想笔记本声音按键无反应的相关资料…

Android 10.0 app获取当前已连接wifi列表ssid和密码功能实现

1.前言 在10.0的系统定制化开发中,在一些关于wifi的定制中,有产品需求app中要求获取当前连接wifi和密码功能,在系统原生wifi中 是禁止获取wifi连接的密码的,所以就需要对wifi模块进行一部分的修改,来满足app中获取wifi的ssid和密码功能,接下来就来 实现这个功能 如图:…

金融知识分享系列之:支撑阻力

金融知识分享系列之&#xff1a;支撑阻力 一、支撑阻力原理二、支撑阻力作用1.识别市场资金的预期2.作为入场和平仓的重要参考 三、寻找支撑阻力四、延伸思考五、支撑阻力总结 一、支撑阻力原理 支撑阻力核心要素&#xff1a; 锚定效应订单驱动 支撑阻力原理&#xff1a; 市…

爬虫系列-CSS基础语法

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” CSS全称层叠样式表 &#xff0c;主要用来定义页面内容展示效果的一门语言&#xff0c;HTML&#xff1a;页面骨架&#xff0c;素颜CSS&#xff1a;页面效果美化&#xff1a…

01分布式搜索引擎ES

分布式搜索引擎ES 1.初识elasticsearch1.1.了解ES1.2.倒排索引1.3.es的一些概念 2.索引库操作2.1.mapping映射属性2.2.索引库的CRUD 3.文档操作3.1.新增文档3.2.查询文档3.3.删除文档3.4.修改文档3.5.总结 4.RestAPI4.0.导入Demo工程4.1.创建索引库4.2.删除索引库4.3.判断索引库…

免费PDF转换和编辑工具 PDFgear 2.1.4

PDFgear是一款功能强大的 PDF 阅读及转换软件。 它支持多种文件格式的转换和编辑&#xff0c;同时还提供了丰富的功能模块&#xff0c;如签名、表单填写等&#xff0c;方便用户进行多样化的操作。 该软件界面简洁美观&#xff0c;操作简单易懂&#xff0c;适合不同层次的用户…

java static

1、static概念 &#xff08;1&#xff09;static 关键字是静态的意思&#xff0c;可以修饰成员方法&#xff0c;成员变量 &#xff08;2&#xff09;static 修饰的特点 ① 被类的所有对象共享&#xff0c;这也是我们判断是否使用静态关键字的条件。 ② 可以通过类名调用&…

机器学习-06-回归算法

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中回归算法&#xff0c;包括线性回归&#xff0c;岭回归&#xff0c;逻辑回归等部分。 参考 fit_transform,fit,transform区别和作用详解&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&am…