ZeroNL2SQL:零样本 NL2SQL

news2024/11/25 0:40:39

发布于:2024 年 10 月 30 日 星期三

#RAG #NL2SQL # Zero-Shot

自然语言到 SQL(NL2SQL)的转换是一个重要的研究领域,它允许非技术用户轻松访问和分析数据,在商业智能、数据分析等领域具有广泛的应用前景。然而,现有的 NL2SQL 方法在面对新的数据库、新的语言现象或 SQL 结构时,往往表现出性能下降的问题。为了解决这一问题,本文研究零样本 NL2SQL,旨在构建一个能够适应各种测试环境的 NL2SQL 模型,而不需要来自测试环境的标注样本。

欢迎关注作者,接收最前沿的人工智能技术

一、引言

1.1 研究背景与动机

自然语言到 SQL(NL2SQL)的转换是一个重要的研究领域,它允许非技术用户轻松访问和分析数据,在商业智能、数据分析等领域具有广泛的应用前景。然而,现有的 NL2SQL 方法在面对新的数据库、新的语言或 SQL 结构时,往往表现出性能下降的问题。为了解决这一问题,本文研究零样本 NL2SQL(Zero-shot NL2SQL),旨在构建一个无需标注样本就能够适应各种新环境的 NL2SQL 模型(ZeroNL2SQL)。综合实验表明,ZeroNL2SQL 在真实的基准测试中可以实现最佳的零样本 NL2SQL 性能。具体而言,ZeroNL2SQL 在执行准确性方面比最先进的基于 PLM 的方法高出 3.2%至 13%,比基于 LLM 的方法高出 10%至 20%。

1.2 零样本 NL2SQL 的挑战

1.2.1 数据库模式对齐

在 NL2SQL 任务中,理解数据库的结构对于生成准确的 SQL 查询至关重要。然而,将自然语言问题与数据库模式中的表、列和关系正确对齐是具有挑战性的,尤其是当存在多个可能匹配的表时。

1.2.2 复杂的自然语言推理

NL2SQL 任务通常涉及复杂的自然语言问题,需要高级推理能力。理解问题的语义、解决歧义以及进行逻辑推导对于生成精确的 SQL 查询是必要的。

1.2.3 数据库实例对齐

这涉及将自然语言问题中提供的信息映射到数据库中存储的相关数据的值。模型需要理解问题的意图,并识别与问题和数据库内容都匹配的特定谓词。例如,在图 1 中,NL2SQL 模型需要生成一个 SQL 谓词 given_name = 'timmy' (而不是 'timmothy')

1.3 现有方案的优势和局限性

1.3.1 基于预训练语言模型(PLMs)

优势:在模式对齐子任务中表现出色,能确定 SELECT 子句中要包含的适当属性以及 FROM 子句中要包含的相关表。

局限性:在零样本设置下不擅长复杂推理。

1.3.2 大型语言模型(LLMs)

优势:在复杂推理任务中表现优越,特别是在处理 WHERE 子句下的谓词时,能够处理复杂的逻辑推导。

局限性:无法实现精确的模式对齐,倾向于选择更多的列和表,导致执行结果不正确,在数据库实例对齐方面存在不足。

1.4 提出的框架 ZeroNL2SQL

基于 PLMs 和 LLMs 的优势互补,作者提出了 ZeroNL2SQL 框架,该框架主要包括两个关键步骤:

1.4.1 SQL 草图生成

利用可调的 PLMs 进行数据库模式对齐并生成一个 SQL 草图,包括 SELECT 的属性、FROM 包含的表以及组成 SQL 查询的必要关键字。

1.4.2 SQL 查询补全

利用 LLMs 填充 SQL 草图中缺失的信息,并通过与数据库中的数据值对齐来校准谓词。

二、预备知识

2.1 零样本 NL2SQL

零样本 NL2SQL 是指推理环境中的数据不在训练集中出现,主要包括在新数据库上测试、在新问题上测试和在新 SQL 上测试三种情况。

2.2 SQL 草图(SQL Sketch)

SQL Sketch 由三部分组成(图 5 所示):SELECT(需要返回给用户的属性)、FROM(用于获取数据的表)和 KEYWORDS(代表子句的关键字)。

2.3 SQL 语言模型

  1. 预训练语言模型(PLMs):可以由普通用户本地托管,并针对不同的下游任务进行微调,如 BERT、BART 和 GPT2 等。
  2. 大型语言模型(LLMs):只能通过网络服务或 API 调用访问,如 ChatGPT、PaLM、GPT4 和 GLam 等。LLMs 通过上下文学习和指令遵循实现零样本复杂推理,而 PLMs 主要通过微调适应下游任务。

2.4 用于 NL2SQL 的语言模型

可以利用适当的提示来引导语言模型进行 NL2SQL 任务,并且考虑到 NL2SQL 任务的复杂性,可以采用上下文学习来更好地引导语言模型生成 SQL 查询。

三、ZeroNL2SQL 框架概述

3.1 PLMs 生成 SQL 草图

给定用户问题和数据库模式,SQL Sketch Generation Module 生成一个 SQL 草图候选列表,并传递给固定的 LLM。

3.2 LLMs 完成 SQL 查询

给定一组 SQL 草图候选,SQL Query Completion Module 利用 LLM 完成细节并选择最优的 SQL 查询作为最终输出。为了支持该框架,开发了两个关键模块:

3.2.1 SQL Sketch Generation(SQL 草图生成) 模块

首先将问题建模为一个序列到序列的生成问题,使用基于编码器 - 解码器的 PLM 生成 SQL 草图。采用数据库感知序列化策略和问题感知对齐器来提高草图生成的准确性。

3.2.2 SQL Query Completion(SQL 查询补全) 模块

设计了谓词校准方法来解决数据库实例对齐问题,并提供合适的谓词推荐给 LLM。采用基于执行的选择策略来选择最优的 SQL 查询。

四、SQL 草图生成

这段文本主要介绍了 SQL 草图生成,它能生成一个排序列表的 SQL 草图,正如在图 7 中所示。首先在 4.1 节引入了一个配备数据库感知序列化策略的 SQL 草图学习框架,然后在 4.2 节开发了问题感知对齐,以便根据自然语言问题的语义进一步对 SQL 草图进行排序。

4.1 SQL Sketch Learning 的过程

4.1.1 数据库感知序列化

在 SQL Sketch Learning 中,数据库感知序列化是一个关键步骤。它将用户问题和数据库模式与不同的指令进行组合,为每个子任务构建特定的输入。通过使用括号和索引对数据库进行序列化,使得 PLM 能够根据用户问题准确地选择与问题最匹配的表 / 列索引,而不是简单地从问题中直接复制表 / 列名称。这种方法有效地避免了 PLM 在面对不同测试环境时可能出现的错误选择,提高了草图生成的准确性。例如,在处理一个关于汽车模型的问题时,如果数据库中有多个与汽车相关的表,通过数据库感知序列化,PLM 能够准确地选择到包含所需信息的表和列。

4.1.2 参数学习

同时,为了训练 PLM 能够更好地生成 SQL 草图,还需要进行参数学习。对基于编码器 - 解码器的 PLM 进行监督微调,在这个过程中,同时在三个子任务上进行多任务学习。通过从标注的 NL2SQL 数据集中提取训练数据,构建包含指令、数据库模式、用户问题和目标标签的数据集。然后通过最小化最大似然来优化模型的参数,使得 PLM 能够更好地学习到如何生成准确的 SQL 草图。

4.2 问题感知对齐器的作用与实现

4.2.1 作用

问题感知对齐器的主要作用是进一步优化 SQL 草图候选。虽然 PLM 通过数据库感知序列化能够生成初步的草图,但在语义层面上,对于 SELECT 和 KEYWORDS 部分可能还不够精准。问题感知对齐器就是为了弥补这一不足,使这两个部分能够更紧密地与问题的意图和要求对齐。例如,当问题是关于 “某个课程的最高得分” 时,问题感知对齐器能够确保 SELECT 部分选择的是 “课程得分” 相关的属性,KEYWORDS 部分包含 “ORDER BY” 关键字。

4.2.2 实现

问题感知对齐器的实现过程如下:首先,它取 SELECT 集合和 KEYWORDS 集合的笛卡尔积得到最终候选集。然后,对于候选集中的每个元素,将其与用户问题串联形成输入序列,通过基于编码器的 PLM 将其转换为高维表示。接着,将这个高维表示输入到一个全连接层,计算出 SELECT 和 KEYWORDS 与用户问题之间的对齐分数。最后,根据对齐分数选择最优的候选组合,从而实现对 SQL 草图的进一步优化。为了训练问题感知对齐器,对基于编码器的 PLM 进行监督微调。根据 SELECT 和 KEYWORDS 是否正确设置对齐标签,通过最小化交叉熵损失来优化参数,使得问题感知对齐器能够更好地学习到如何选择最优的候选组合。

五、SQL 查询补全

5.1 谓词校准的方法与流程

5.1.1 多级匹配

在谓词校准过程中(算法 1 所示),多级匹配是一个重要的方法。由于 LLM 预测的谓词可能存在错误,包括预测值不正确或预测列不正确等情况,多级匹配就是为了纠正这些错误。它按照列、表和数据库三个级别顺序匹配谓词的值。在任何一个级别,如果找到一个与预测值足够接近的值,就会终止匹配过程,并将这个新的值和对应的列作为新的谓词返回给 LLM。例如,当 LLM 预测的谓词中某个值与数据库中的实际值不完全匹配时,通过多级匹配,可以在表级别或数据库级别找到更合适的值来替换,从而确保谓词的准确性。

5.1.2 相似度计算

相似度计算是多级匹配过程中的一个关键环节。相似度计算方法主要分为基于字符和基于语义两类。基于字符的相似度计算可以使用模糊匹配方法,例如通过计算插入和删除字符的数量来衡量两个值之间的相似度。基于语义的相似度计算则需要将值转换为高维向量表示,然后通过计算内积来得到相似度分数。在将值转换为高维向量表示时,可以采用 word2vec - 基于和 PLM - 基于的方法。例如,对于一个单词,可以通过查找预训练的 GloVe 字典来获得其基于 word2vec 的向量表示,或者通过 Sentence Bert(SBERT)来获得其基于 PLM 的向量表示,然后根据不同的方法计算相似度分数,从而为多级匹配提供更准确的参考。

5.2 SQL 查询选择的策略与执行

5.2.1 策略

SQL 查询选择采用基于执行的策略。基于对 SQL 执行结果能够反映其质量的观察,通过对生成的 SQL 查询进行实际执行测试,根据执行结果来选择最优的查询作为最终输出。这种策略的核心思想是,只有能够正确执行并返回正确结果的 SQL 查询才是最优

5.2.2 执行

具体执行过程如下:首先,将 SQL 草图候选输入 LLM 生成 SQL 查询。然后,对生成的 SQL 查询进行可执行检查,如果不可执行则反馈错误信息给 LLM,直到得到可执行的查询。接着,将可执行的查询输入谓词校准模块,得到基于数据库的 SQL 查询。最后,如果执行结果不为 NULL,则返回该 SQL 查询作为最终结果。通过这种方式,确保最终选择的 SQL 查询能够在数据库中正确执行并返回所需的结果。

六、实验

6.1 实验设置的详细介绍

6.1.1 数据集

在实验中,使用了 Spider 作为训练集,这是一个被广泛采用的 NL2SQL 数据集。同时,使用 Dr.Spider 和 KaggleDBQA 作为评估基准。Dr.Spider 包含基于 Spider 的 17 种不同类型的扰动测试集,这些扰动包括数据库扰动、问题扰动和 SQL 扰动等,能够全面地测试模型在不同零样本情况下的性能。KaggleDBQA 则包含真实世界的问题和数据库,其数据和问题更加贴近实际应用场景。

6.1.2 评估指标

采用执行准确率(EX)作为评估指标。这是因为在 LLMs 中使用的 SQL 表达式风格可能与 NL2SQL 基准中的真实结果不同,传统的基于字符串的评估指标如精确匹配准确率并不适合本实验。执行准确率通过比较生成的 SQL 查询和从数据库中检索到的相应真实 SQL 查询的执行结果来衡量模型的性能。

6.1.3 基线

考虑了两种类型的基线。一类是基于 PLM 的 SOTA 模型,包括 SMBOP、T5 - 3B LK、Picard 和 RESDSQL 等,这些模型都是在 Spider 训练集上进行微调的。另一类是基于 LLM 的方法,包括 vanilla LLMs、LLM + In - Context Learning 和 DIN - SQL 等。这些基线模型涵盖了目前在 NL2SQL 领域中比较先进的方法,通过与它们进行比较,可以更好地评估本文提出的 ZeroNL2SQL 框架的性能。

6.1.4 实现细节

在实验中,采用 ChatGPT-3 作为 LLM,这是基于 OpenAI 的 gpt-3.5-turbo,目前被广泛使用。对于 SQL Sketch Generation,采用 T5-3B 作为骨干的编码器 - 解码器 PLM。同时,设置了一系列的参数,如批量大小、学习率、训练轮数等,并使用了相应的优化算法如 Adafactor 和 Adam 等。在 SQL Query Completion 模块中,使用 Sentence Bert 和预训练的 GloVe 字典来获取值的嵌入,通过设置合适的相似度阈值来进行相似度计算。所有实验都在 1 NVIDIA RTX A6000 48G 上使用 PyTorch 实现。

6.2 与基于 PLM 的方法比较结果分析

6.2.1 在 Dr.Spider 上的实验结果

在 Dr.Spider 基准的 17 个测试集中进行实验,结果显示 ChatGPT + ZeroNL2SQL 在性能上优于所有基线,包括基于 PLM 的 SOTA 模型和 vanilla ChatGPT。具体来看,数据库和用户问题的扰动对 NL2SQL 性能影响较大,SQL 扰动影响较小。结合 ZeroNL2SQL 后,ChatGPT 在困难测试集上表现出更好更稳定的 NL2SQL 性能。例如,在一些复杂的数据库结构和问题条件下,ChatGPT 本身可能无法准确地生成 SQL 查询,但通过 ZeroNL2SQL 框架的辅助,能够显著提高其性能,生成更准确的 SQL 查询。

6.2.2 在 KaggleDBQA 上的实验结果

在 KaggleDBQA 数据集上进行实验,结果表明与基于 PLM 的 SOTA 模型相比,ChatGPT + ZeroNL2SQL 的执行准确率显著提高。这表明在相同训练集下,ZeroNL2SQL 在完全不同的测试集上能表现出更好的零样本推理能力。由于 KaggleDBQA 的数据和问题更加贴近实际应用场景,这种性能提升更加凸显了 ZeroNL2SQL 框架的优势。例如,在处理一些真实世界中的复杂商业数据和问题时,ZeroNL2SQL 能够更好地适应并提供准确的 SQL 查询结果。

6.3 与基于 LLM 的方法比较结果分析

6.3.1 性能比较

在 EX 准确率方面,比较了不同的上下文学习方案,包括随机采样和基于相似度的采样方法。结果发现,这些不同的采样方法差异不大,且示例数量对性能影响较小。与上下文学习相比,ZeroNL2SQL 在 KaggleDBQA 上能带来更显著的改进,并对 ChatGPT 实现更稳定的改进。例如,在某些特定的测试集上,上下文学习可能会因为示例选择的局限性而导致性能波动,而 ZeroNL2SQL 通过其独特的框架结构和算法流程,能够更稳定地提升性能。

6.3.2 成本比较

在调用 ChatGPT API 的平均令牌数量方面,ZeroNL2SQL 接近 vanilla ChatGPT 且远低于各种上下文学习方法。这是因为 ZeroNL2SQL 通过学习示例并将其转换为定制的 SQL 草图来引导 LLM,而不是直接将示例提供给 LLM。这种方式不仅提高了性能,还降低了成本,使得模型在实际应用中更具优势。例如,在处理大量数据和频繁查询的场景下,较低的令牌消耗意味着更低的成本和更高的效率。

6.4 消融研究结果分析

6.4.1 SQL Sketch Generation 模块组件的影响

数据库感知序列化策略对生成 SQL 草图影响最大。它避免了模型过度关注用户问题,使模型能基于数据库模式生成有效草图。例如,在一些复杂的数据库结构中,如果没有数据库感知序列化策略,模型可能会错误地选择表和列,导致生成的草图无法准确反映数据库的结构。问题感知对齐器对 SELECT 和 KEYWORDS 部分有增益,有助于 SQL 草图生成。它能够进一步优化草图,使其更符合问题的意图和要求,提高草图的准确性和实用性。

6.4.2 谓词校准中值匹配方法的评估

多级匹配方法性能最佳。它能够有效地纠正 LLM 预测的谓词错误,通过在列、表和数据库三个级别顺序匹配谓词的值,提高了谓词的准确性。在相似度计算方法中,SBERT 方法表现出更稳定和优异的性能,能更好地捕捉值的整体含义。例如,在处理一些语义复杂的词汇时,SBERT 能够更准确地计算相似度,为多级匹配提供更可靠的依据。

七、相关工作

7.1 基于 PLM 的 NL2SQL

许多工作将预训练语言模型应用于 NL2SQL 任务,分为仅编码器的 PLMs 和编码器 - 解码器的 PLMs。对于仅编码器的 PLMs,如 BERT 等,一些研究通过利用图神经网络等方法进一步处理用户问题和数据库模式,然后通过语法神经解码器生成 SQL 查询。对于编码器 - 解码器的 PLMs,如 T5 等,一些方法将 NL2SQL 任务作为端到端的翻译问题进行处理,并采用一些特定的策略如关系感知自注意力、模式选择和约束解码等来提高生成 SQL 查询的准确性。然而,ZeroNL2SQL 的目标是使 PLMs 在新的测试环境中生成准确的 SQL 草图,因此关注测试环境变化对 PLMs 的影响并提出自适应方法,以更好地适应零样本 NL2SQL 的需求。

7.2 基于 LLM 的 NL2SQL

一些工作尝试将大型语言模型应用于 NL2SQL 任务。例如,有的研究评估了 CodeX 模型的零样本 NL2SQL 能力,还有的进一步验证了其在该任务上的稳健性并提出了有效的示例采样方法。随着 ChatGPT 的流行,也有研究探索了其零样本 NL2SQL 推理能力,并指出其与现有基于 PLM 微调的方法存在差距,但在新数据集上表现出较强的稳健性。为了提高 LLMs 在 NL2SQL 任务上的有效性,一些方法如 DIN - SQL 通过添加不同子任务的示例来使 LLMs 能够逐步生成 SQL 查询。与这些方法不同,ZeroNL2SQL 通过可调的 PLMs 为固定的 LLM 生成细粒度的指导(即 SQL 草图),显著提高了 NL2SQL 的准确性,同时确保了高效率。

八、结论与未来工作

8.1 研究成果总结

本文提出了 ZeroNL2SQL 框架,通过交错可调的 PLM 和固定的 LLM,有效地解决了零样本 NL2SQL 生成的问题。该框架由 SQL Sketch Generation 和 SQL Query Completion 两个模块组成,分别利用 PLMs 和 LLMs 的优势,克服了各自的局限性。通过在 Dr.Spider 和 KaggleDBQA 等基准上的广泛实验,证明了 ZeroNL2SQL 框架在零样本 NL2SQL 性能上优于现有的基于 PLM 和基于 LLM 的方法。这一成果为 NL2SQL 领域的研究提供了新的思路和方法,有助于推动该领域在实际应用中的发展,使非技术用户能够更方便、准确地通过自然语言与数据库进行交互。

8.2 扩展到对话式 NL2SQL 任务

考虑到 LLMs 的优秀交互能力,ZeroNL2SQL 可以应用于对话式 NL2SQL 任务。在对话式环境中,用户可能会提出一系列相关的问题,模型需要根据对话的上下文和历史信息来生成准确的 SQL 查询。这就需要进一步研究如何更好地利用 LLMs 的交互能力和 ZeroNL2SQL 框架的现有优势,来适应对话式 NL2SQL 任务的特殊需求。例如,可以探索如何在对话过程中动态更新 SQL 草图和查询,以及如何处理对话中的歧义和平滑过渡问题。

8.3 扩展到超大数据库

考虑到 ZeroNL2SQL 中的有效谓词校准方法,经过效率优化后可以扩展到超大数据库。超大数据库往往具有海量的数据和复杂的结构,这对模型的性能和效率提出了更高的要求。通过进一步优化谓词校准方法和整个 ZeroNL2SQL 框架的算法流程,可以使其更好地适应超大数据库的环境。例如,可以研究如何在大规模数据上更快速地进行谓词匹配和校准,以及如何优化 SQL 草图生成和查询完成的过程,以提高整体性能和效率。


论文地址:Interleaving Pre-Trained Language Models and Large Language Models for Zero-Shot NL2SQL Generationicon-default.png?t=O83Ahttps://arxiv.org/pdf/2306.08891

代码地址:GitHub - ruc-datalab/ZeroNL2SQLContribute to ruc-datalab/ZeroNL2SQL development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/ruc-datalab/ZeroNL2SQL

原文链接:ZeroNL2SQL:零样本 NL2SQL本文研究零样本 NL2SQL,旨在构建一个能够适应各种测试环境的 NL2SQL 模型,而不需要来自测试环境的标注样本。icon-default.png?t=O83Ahttps://mp.weixin.qq.com/s/xXenKZQuvcsTkeNuuczSqA

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

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

相关文章

Qgis 开发初级 《ToolBox》

Qgis 有个ToolBox 的,在Processing->ToolBox 菜单里面,界面如下。 理论上Qgis这里面的工具都是可以用脚本或者C 代码调用的。界面以Vector overlay 为例子简单介绍下使用方式。Vector overlay 的意思是矢量叠置分析,和arcgis软件类似的。点…

三合一无线键鼠中射频芯片-PHY6233

PHY6233 三合一键鼠芯片在键鼠领域占据着重要的地位。它以其强大的性能和广泛的适用性,成为众多键鼠产品的核心组件。PHY6233 芯片能够提供出色的操作体验。它可以支持多达几乎 100 个按键的支持,满足了用户对多功能键鼠的需求。同时,该芯片还…

基于STM32F103的计秒设计

基于STM32F103的计秒设计 仿真软件: Proteus 8.17 编程软件: Keil 5 仿真实现: 在4位数码管上进行计秒显示,每100ms改变一次数值。 数码管原理: 数码管是一种常用的显示器件,主要用于显示数字和一些字母…

万圣夜,Codigger

在这个神秘的万圣节,让Codigger,一个专业的分布式操作系统,带领你踏入未知的编程世界!就像变装成各种角色一样,Codigger也以其独特的能力和技巧,在数字世界中展现无穷魅力。让我们一起在这个神秘的节日里&a…

探索光耦:光耦——光伏逆变器中的智慧守护者

在全球清洁能源的浪潮中,光伏产业正以前所未有的速度蓬勃发展。作为光伏发电系统的核心设备,光伏逆变器扮演着将直流电转化为交流电的关键角色,其性能直接关系到整个系统的效率和安全性。而在这一复杂而精细的转换过程中,光电耦合…

关于AES加密的思考与总结 | 内容详细

今天心血来潮,想把AES加密的内容做一个总结,方便日后观看查阅。 学艺不精,如有错误,欢迎各位老师批评指正! AES简介 AES是目前广泛应用的对称加密算法,主要用于保护电子数据。 对称加密:加密…

航顺芯片HK32MCU版图再扩张,深圳南山新基地助力集成电路核心圈突破

【中国,深圳,2024年10月24日】深圳市南山区,作为中国高新技术产业的重要聚集地,一直是集成电路企业的必争之地。近期,深圳市航顺芯片技术研发有限公司(下文简称“航顺芯片”)随着高精尖人才团队…

qt配置https请求

qt应用版本 windows 32位 先说下心理路程,你能遇到的我都遇到了,你能想到的我都想到了,怎么解决看这一篇就够了,从上午12点到晚上12点几乎没离开电脑(除了吃饭),对于openssl这种用的时候无感&am…

LVGL-从入门到熟练使用

LVGL简介 LVGL( Light and Versatile Graphics Library )是一个轻量、多功能的开源图形库。 1、丰富且强大的模块化图形组件:按钮 、图表 、列表、滑动条、图片等 2、高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等…

【判断推理】翻译推理

7.1 等价推出 等价推出指的是将题干逻辑关系和选项逻辑关系分别翻译后,二者完全一致。考察的是对翻译规则的掌握,常用知识点有命题的传递和原命题、逆否命题等价。 题干中无逻辑关联词的部分不需要关注,直接寻找带有逻辑关联词的语句即可。 …

圣麟易安中医:微搭助力中医诊所实现数字化问诊接诊

“只用了下班时间,每天写一点点,2个月就基于微搭搭建出来了现在问诊小程序和接诊管理后台,大概节约70%的工作量吧” ——项目负责人 邓小静 私人中医诊所也能定制小程序,传统中医诊所如何实现服务流程的智能化和个性化&#x…

基于SSM校园生活电子商城管理系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,餐厅信息管理,菜品类型管理,闲置物品管理,订单管理,系统管理 用户账号功能包括:系统首页,个人中心&#xf…

python mac vscode 脚本文件的运行

切换到脚本文件的目录下 路径的修改 当前文件组织形式: 脚本文件在文件夹下: 赋予权限:chmod x ./scripts/fscd_test.sh 运行:./scripts/fscd_test.sh

Python画图3个小案例之“一起看流星雨”、“爱心跳动”、“烟花绚丽”

源码如下: import turtle # 导入turtle库,用于图形绘制 import random # 导入random库,生成随机数 import math # 导入math库,进行数学计算turtle.setup(1.0, 1.0) # 设置窗口大小为屏幕大小 turtle.title("流星雨动画&…

【大数据学习 | kafka】kafka的整体框架与数据结构

1. kafka的整体框架 首先kafka启动以后所有的broker都会向zookeeper进行注册,在/brokers/ids中以列表的形式展示所有的节点,在/controller节点中使用独享锁实现broker的选举,其中一个机器为主节点。其他的为从节点,选举的根本原则…

SpringBoot获取resources目录下的文件

在 Spring Boot 项目中,获取 resources 目录中的文件路径通常涉及到访问类路径资源(classpath resources)。Spring Boot 提供了一些工具类和方法,可以方便地访问这些资源。以下是一些常见的方法: 首先,我们…

Mybatis-plus-扩展功能

Mybatis-plus-扩展功能 一:代码生成器 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。 功能的演示&#xff1a…

数据可视化工具深入学习:Seaborn 与 Plotly 的详细教程

数据可视化工具深入学习:Seaborn 与 Plotly 的详细教程 数据可视化是数据分析中不可或缺的一部分,能够有效地帮助我们理解数据、发现模式和传达信息。在众多可视化工具中,Seaborn 和 Plotly 是两个非常流行且强大的库。本文将深入探讨这两个…

DAY14|二叉树Part02|LeetCode: 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

目录 LeetCode: 226.翻转二叉树 基本思路 C代码 LeetCode: 101. 对称二叉树 基本思路 C代码 LeetCode: 104.二叉树的最大深度 基本思路 C代码 LeetCode: 111.二叉树的最小深度 基本思路 C代码 LeetCode: 226.翻转二叉树 力扣题目链接 文字讲解:LeetCode…

区块链国赛题目--食品溯源(模块三)

区块链国赛题目–食品溯源(模块三) 任务 3-1:区块链应用前端功能开发 1.请基于前端系统的开发模板,在登录组件 login.js、组件管理文件components.js 中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功 能完整性,示例页面如下: 具体要求如下: (1)有明…