论文学习(一)——MWP-BERT: Numeracy-Augmented Pre-training for Math WordProblem Solving

2023-11-07

记录一下自己的第一篇论文学习。

摘要

        数学应用题(MWP)的求解面临着数字表示学习的困境。为了避免数字表示的问题,并且减少可行解的搜索空间,现有求解MWP的工作通常用符号占位符代替实数,以便专注于逻辑推理。然而,不同于常见的符号推理任务,如程序合成和知识图推理,MWP求解对数值推理有额外的要求。换句话说,在数值推理中,可重复使用的数值属性比数值本身更重要。因此,我们认为,在符号占位符中注入数字属性,使其具有上下文化的表示学习模式,可以为解决数字表示问题提供一条出路。在这项工作中,我们将这一思想引入到流行的训练前语言模型(PLM)技术中,并构建了一个有效的上下文数字表示的PLM MWP-BERT。我们展示了我们的MWP- bert在解决MWP问题上的有效性,以及在英语和汉语测试中几个特定的MWP理解任务。

1.介绍

        最近关于MWP的相关工作都将管道安排到一个序列对序列的框架中。简而言之,他们使用深度表示和梯度优化以及符号约束来找到运算符和变量的组合。从根本上来说,MWP求解系统的目标是通过搜寻文本描述中已经给定的组合解决方案空间,来进行符号推理。因此,这些神经符号方法主要着眼于获得更有效的语义表征,注入符号约束,如何对齐语义空间(文本描述)和巨大的符号组合空间(符号解决方案),这一系列的方法已经取得了巨大的成功,在各种MWP解决基准中仍然保持领先地位。

        尽管前面的方法取得了很好的性能,现在MWP数字表示仍然存在一些根本性质的挑战。更确切的说,数字的值被认为是解决方案探索的重要证据,但是现存的工作在捕捉数字信息方面效率低下。直觉上,我们可以简单地使用与文字相同的方式来对待明确的数字,也就是为词汇表中的所有数字指定位置。然而,在预测过程中会有无限多的候选数字,我们不可能学习它们的深度表征。换句话来说,解空间将会格外的巨大,它的复杂程度是我们不可接受的。因此,几乎现存的所有工作都使用数字映射技术去使用象征性的占位符去代替所有的数字(比如x1,x2)。这里的核心思想是通过限制神经网络来忽略数值特征,专注于逻辑推理从而得到一个合理的解空间。然而,现存的大部分MWP求解器没有考虑文章的背景知识并且通常在计算性质上是低效的。

图一

        如图一所示,在题目描述中细小的变化实际上会给逻辑推断以及方程式上带来巨大的变数。如果这个模型只是简单的将“75”和“10%”视为相同的占位符x3,而没有注意到上下文中细小的变化,则会产生错误的解答。

        为此,我们结合了几个基于数学的预训练目标,将关于数值约束的归纳偏差注入到动态表示中。和单词候选集相比,数候选空间中的有用点是稀疏分布的。然而,我们很确定在预测的过程中,数值的可重用属性是十分重要的。更重要的是,这些特性不受MWPs中特定值的稀疏性问题的影响。因此,和为每一个数字值分配一个原型变量相比,在深度表示中注入可重用的数值性质更为合理。例如,量级和数字类型。在这项工作中,我们建议设计基于数学的预训练目标去实现深度表示法中符号占位符和数字之间的软约束。

        贡献:我们提供了一套考虑推理逻辑和数值性质的预训练任务。更确切的说,我们引入了几种新的预训练任务,可以访问不同级别的监督信号,已利用更多可用的MWP数据。(1)一组基础的预训练任务是为了自监督设置的,除了掩码语言建模(MLM),我们通过设计相关目标来额外思考了与数字相关的上下文信息。(2)另外一组预训练目标是为了弱监督设置,只有答案注释但是没有方程解。通过访问答案值,我们引入了几个任务来确定答案的类型和值。(3)最后一组与训练目标是全监督设置,答案的姐和方程组都会提供给MWPs。

        此外,设计了一组基于计算的预训练目标,以利用MWP语料库,并鼓励上下文表征来捕捉数字信息。在中文和英文基准上进行的实验表明,我们提出的方法相比于其他竞争者来说,有显著的改进。据我们所知,这是第一种在MWP求解方面超越人类表现的方法。

2.相关工作

        数学应用题解决:现存两种主要的MWP种类,方程集MWP和算术型MWP。这项工作的重点是算术型MWP,它通常与一个未知变量配对。在MWP求解器的发展过程中,先驱们研究使用的是传统的基于规则的方法,如机器学习方法和统计学方法。后来,收到Seq2Seq模型发展的启发,MWP解决方法被定义为一种神经符号的推导过程,通过编码器-解码器框架将语言描述翻译为数学方程式。通过融合硬约束到解码器中,MWP求解器实现了更好的性能,一些论文建议使用多阶段框架去制作更健壮的求解器。此外,一些新的作品尝试改进MWP求解器超越监督设置。

        在以前所有的研究中,与我们工作最相关的可以分为两个部分。第一,已经注意到数字数值和数学约束在支持数值推理中起着重要的作用。有的论文提出了几种给数字值特征来增强编码器的性能,有的论文设计了新的辅助任务来增强神经MWP求解器。和其他工作相比,我们首先介绍的预训练语言模型(PLM)专注于表示学习取解决数字理解的挑战。第二,对于MWP求解预训练技术的使用,有的论文介绍了BART-based,有的论文介绍了MWP求解器,并结合了专门的多任务训练以获得更有效的MWP预训练Seq2Seq模型。和他们相比,我们的工作更加注重与MWP的数字表示学习问题,并且实现了一个更灵活的MWP求解预训练表示模块,可以应用于除了生成解之外的各种MWP相关任务。

        预训练模型:数字表征学习现在已经被认为是词汇表征学习中一个主要的问题,现存的方法主要采用数值、指数、子词和字符去获取显式数字值的数字表示形式。这些方法在外推情况下效果不佳,比如用训练语料库中没有出现的数字进行测试。

        之前的相关工作主要关注DROP数据集中显示的浅层数值推理任务,它通常被用作评估数字机器阅读理解(Num-MRC)性能的基准。和MWP求解器相比,Num-MRC的重点在于从段落中提取答案的的跨度,这样更具有容错性,不需要预测数字标记。此外,此外,他们的解生成任务只包含简单的加减运算,DROP数据集中只有整数。更确切的说,针对这类与数学相关的阅读理解任务,研究人员通过综合新的训练实例进行了研究。结合特殊模块,考虑数值运算bing设计特定的标记化策略。由于MWP求解器需要在MWP文章中进一步考虑推理逻辑的复杂组成,因此占位符在MWP求解中更有效。因此,我们的工作重点不是处理现实的数字值,而是通过概率的方式注入数值属性来改进符号占位符的表示。

3.方法

3.1问题陈述

        MWP求解器的输入是文本描述,我们将它定义为W,长度是m,因此W = {w1, w2, ..., wm},同时我们也定义了一个W的一个子集Wq,里面包含了W中出现的所有数。输出是一个方程式可以展示如何得到最后的答案。我们将它定义为A,长度是n,因此A = {a1, a2, ..., an}。A中包含的词汇一共有三个部分,分别是 Vop, Vnum,Vcons. Vop是所有操作符的词汇,例如+, −, ×, ÷ and ∧。Vnum的词汇是由所有的数值映射出来的,它将不同MWPs中的数转化成统一的表现形式。更具体地说,Vnum没有包含W中出现的属的实际值,这些数被表示成 {n1, n2, ..., nk}。ni的意思是W中的第i个数,k是Vnum中的最大的序号的数,为了匹配W的大小。Vcons包含了固定的值,比如说Π。

3.2PLM编码器

        我们的PLM编码器将问题描述W映射到一个表示矩阵 Z ∈ Rm∗h中,h是隐藏特征的维数。

                                                                ​​​Z = encoder(W ) (1)

        Z中每个单词对应的表示向量将用于解码过程中生成解。

图二

        图二展示了预训练目标和我们模型框架的概述,在一般情况下,预训练目标的目的是注入上下文先验和数值属性作为表示学习的软约束。根据提供的训练信号,他们可以分为三种类型,自监督、弱监督和全监督。

3.3自监督任务

        在这一部分,我们只考虑输入部分的文字描述。此外,这些任务可以通过构造没有解和方程的监督信号来减轻MWP语料库的收集成本。

        掩码语言模型(MLM):我们遵循其中一篇论文并且引入MLM用于基本的上下文表示建模。特别的是,我们对10%的标记使用掩码,随机将10%的标记替换为其他标记,80%的标记保持不变。之后,被篡改的句子被用来重新构建原来的句子。

        计数:另外一个预训练任务是预测MWP描述中出现的数字的数量。一个数字的数量和变量集的基数相对应。这同时也反映出了MWP难点的基本理解,它可以作为一个关键的上下文MWP数字理解特性。在这里,我们引入一个回归任务,他的损失函数公式如下:

        MSE表示均方误差,FFN表示前馈网络,有两层全连接层和一个ReLU激活函数组成。我们为每个预训练任务构建两层全连接块(除了MLM),再微调阶段放弃他们。 ¯Z ∈ Rh是Z的均值向量,表示编码器对单个MWP文本描述的总体理解。|Wq|是问题描述中所有数的数量。

        数字类型:这个任务的目标是将上下文相关的数字表示与相应的数字类型联系起来,来区分离散和连续的概念/实体。在MWP求解的数值推理中,我们只需要处理整数和非整数(小数、分数和百分比)。这里认为,整数通常与离散实体(如桌子、椅子和座位)联系在一起,而非整数通常与连续概念(如比例、速率、速度)联系在一起。此外,和有理数相比,整数之间的比较存在不同的问题。因此,我们提出了一个分类目标来预测一个数字是整数还是非整数

         Wq包含了W中出现的所有数字,CE是二分类的交叉熵损失函数。在这里,i是Wi的索引,Zi是对应的表示向量,Yi是二分类标签,表示Wi是整数还是非整数。

3.4弱监督任务

        提供MWPs的文本描述和相对应的答案,我们可以在答案数字和文本描述中建立模型,这样以便上下文表示感知到文本描述中没有出现的目标变量数字的存在。详细来说,我们设计了三个预训练任务,专门用于值注释的MWPs,以改善我们的MWP-BERT数字表示。

        答案类型预测:确定答案的类型可以为我们提供给目标实体/概念的离散/连续性质。因此,我们想要预测给出一个MWP(嵌入Z)的全局表示的答案值的类型(整数/非整数)

         Ys是表示答案数字类型的真值标签。

        文本——答案类型比较:除了全局上下文特性,MWP-BERT同样也需要关联上下文数字和答案数字(目标数字是不会显示的出现在文章中)。因此,我们提出了另外一个任务,预测MWP文本中出现的数量是否和答案是同一个类别。(他们都是整数,或者都不是整数):

        ⊕操作符表示异或,用在两个二进制标签中检查他们是否相同。其中Yi表示数字的标签。Ys表示答案的标签。

        数字大小的比较:除了类型之外,数字的大小也是数值推理的基础。通过将量值评估和上下文表征联系起来,该模型可以更好地感知时间、大小、强度和速度等关键推理线索的差异。让yi表明当前Wi的值是否大于解的值。 损失函数如下:

3.5全监督任务

        将答案和方程式全部提供给MWPs,我们可以建立全监督训练任务,将数字标识和解方程联系起来。数学方程是二叉树结构,根节点上有算子,叶子节点上有数字。它的动机是鼓励模型去学习结构数量表示,对如何组合原子运算符和数字的信息进行编码。我们在解方程树的基础上合并两个预训练任务。

        运算符预测:第一个是数字对关系预测任务,关注方程树的局部特征。目标是预测解树中两个数量节点之间的算子。这实际上是一个分类任务,有5个潜在目标,即+、-、×、÷和∧。此任务的loss函数为:

        i和j是Wq中的两个索引,[Zi; Zj] ∈ R2h,Zi和Zj是Wi和Wj的级联,op(Wi, Wj)返回的是Wi和Wj之间的运算符。

        树距离预测:另外一个与训练任务是使用定量的方法合并方程树的全局结构。我们打算将二叉方程树上对应每个数和算子的深度作为先验的关键结构。因此,我们设计了另外一个全监督任务来利用这些信息。更确切地说,给定方程树中两个数字节点的表示,这是一个预测它们之间距离(深度差)的回归问题。损失公式为:

        其中d(Wi, Wj)是解树中Wi和Wj之间的距离。

        最后的预训练任务是公式2~8和掩码语言模型的总和。

3.6微调

        为了研究预训练MWP- bert的数学理解能力,我们评估了我们的MWP求解器模型、数字标记和7个探测任务。此外,我们不仅使用BERT,而且还使用RoBERTa作为编码器的骨干,以表明所提方法的适应性。

4.实验

        我们提出了几个关于章鱼评估设置的验证结果去证明MWP-BERT和MWP-RoBERTa 求解器的优越性。在4.1部分,我们举例说明这两个求解器在生成场景中的应用。MWP求解器,通过一个特殊的解码器进行微调,之后我们将在4.3节中介绍MWP探测任务,以评估MWP-BERT和MWP-RoBERTa“理解”和”捕获含义“方面的能力。最后,消融实验的结果和分析将在4.4节说明。

        实现细节:我们在4个NVIDIA TESLA V100显卡上预训练我们的模型,并在1个显卡上进行微调。模型预训练50 epoch(2天),微调80 epoch(1天),批大小为32。使用Adam优化器,初始学习率为5e-5,每30个epoch减半。训练时设置Dropout rate为0.5,防止过拟合。在测试过程中,我们使用了5波束搜索来得到合理的解。我们的BERT和RoBERTa的超参数设置是12层深度,12个注意头和768个维度的隐藏特征。对于中文的预训练模型,我们使用了中文BERT和RoBERTa的升级补丁,它们是用全词掩蔽(WWM)1进行预训练的。对于英语训练前的模型,我们使用这个网站上的官方资源2。我们的代码和数据在Github 3上是开源的。

4.1MWP求解器

        实验设置和数据库:给定一个包含多个已知变量的数学问题的文本描述,MWP求解器的求解目标是得到相应问题的正确答案。求解器被希望可以预测一个能正确求解的方程。我们根据这些数据集进行试验,Math23k、MathQA、Ape-210k。在Ape-210k数据集中存在很多的噪声例子,比如说例子中没有方程或者没有答案。我们将Ape-210k重组成Ape-clean和Ape-unsolvable,训练集Ape-clean和整个训练集Ape-unsovable用于预训练。对于英文的MWP来说我们使用MathQA数据集来进行预训练。为了实现我们的求解器,MWP-BERT被改编为编码器为基于树的解码器生成中间MWP表示。

4.2Ape-clean数据集

        Ape210k是现存最大的MWPs数据集,其中包括210488个问题。如表一所示,Ape210k中的问题比Math23k中的问题要更加多样和更困难。

表一:该表显示了Ape210k中三种被丢弃的MWPs。第一个问题没有确定的答案,第二个问题的解也不能用方程来表示。解决第三个问题需要外部常量。因此,我们在我们的Ape-clean数据集中过滤掉了这些问题。

        不仅对常识知识的要求更强了,而且缺少了真正的方程或者答案,为MWP求解器带来了额外的障碍。在这些情况之下,没有答案的问题不能被用于全监督设置。此外,在弱监督学习环境下,可以使用没有标注方程而只有答案值的问题。因此,我们遵循以下规则从Ape210k中选择可用的问题来构建Ape-clean数据集。该数据集可以用于全监督学习设置。(1)我们删除所有没有答案或者方程的MWPs。(2)我们删除所有只有答案没有方程的MWPs。(3)我们删除所有题目长度>100或者求解方程长度>20的MWPs,他们会给训练带来障碍。(4)我们删除除了1和π外,仍然需要外部常数的MWPs。(5)我们删除了Math23k中MWPs的重复问题,因为Math23k中的几乎所有问题都可以在Ape-210k中找到。在数据过滤之后,Ape-clean数据集包含了81225条MWPs,包括79388训练问题和1837测试问题。剩下的129263条问题在Ape210k中的被称为Ape-unsolvable,他们可以在半监督和弱监督学习的设置下用于预训练任务中。

表二:在我们提出的模型和不同基线之间的答案准确性(%)的比较。Math23k列显示了公共测试集上的结果,Math23k∗在Math23k数据集上进行了5次交叉验证。MathQA改编自Li等人(2021年);Tan等人(2021年)。“RoBERTa”和“BERT”表示未经训练前的结果。“MWP-RoBERTa”和“MWP-BERT”表示第一个预先训练任务,然后进行微调

        模型比较:我们首先将我们的方法与Math23k数据集上的最新代表性基线相比较。第一个基线是DNS,它是使用Seq2Seq模型求解MWPs的先驱。Math-EN提出了一种方程归一化方法,并且使用普通的Seq2Seq模型进行求解。GTS提出了一种目标驱动的基于树的解码器,取得了很好的效果。Graph2Tree在数据预处理期间构造两个图,从文本描述中提取额外的关系。NS-Solver设计几个辅助任务来帮助训练。NumS2T使用显式的数值而不是符号占位符来编码数量。RPKHS 与PLM编码器并行构建分层推理编码器。REAL提出了一种人类类比辅助辅助学习方法。EEH-G2T 将边缘标签信息和远程词关系注入到图网络中。Gen&Rank设计了一个多任务学习框架,用于在MWP解决中适应BART。BERT-CL将对比学习策略与PLM结合起来。为了避免可能导致基线模型结果不可重复的实现错误,我们报告了这些基线的结果,这些结果来自于它们发表的论文,就像许多以前的论文一样。

        如表2所示,我们的MWP-BERT获得了具有竞争力的结果。值得注意的是,我们对MWP求解进行了严格的预训练范式,即我们的结果来自于对不同注释的MWP示例的预训练,这些示例将用于进一步的微调。在这里,我们的预训练只使用Ape-clean和Ape-unsolvable数据集,微调只在Math23k/MathQA数据集上进行。

        RPKHS、REAL和BERT- CL都将BERT合并到他们的模型架构中,和我们的工作是正交的。我们的MWP-BERT可以作为编码器部分的MWP专用检查点,以提高其特性。此外,REAL、BERT-CL和Gen & Rank都在尝试Seq2Seq预训练,采用预训练编码器和预训练解码器来解决MWP问题。和他们相比,我们的模型更加注重于编码器预训练并且旨在获得更好的MWP便是,可以广泛应用在各种MWP任务。(如数量标签,MWP问题生成)。

        另一个有趣的发现是,基于BERT的模型在中文MWP数据集上表现更好,而基于RoBERTa的模型在英文MWP数据集上表现更好。因为本文中使用的中文RoBERTa实际上是一个BERT模型,它使用了BERT标记化,但像RoBERTa一样进行了训练。在英语设置上,RoBERTa的表现优于BERT,这与之前的结论是一致的。

        联合MWP训练集对Ape-clean和Math23k的评价:此外,我们结合Math23k和Ape-clean的训练集训练MWP-BERT,然后分别在Math23k和Ape-clean的测试集上测量准确率。结果在表2中展示。

表3:当我们提出的模型和基线都使用来自Apeclean和Math23k数据集的训练集进行训练时,它们的答案准确率(%)的比较。

        通过观察我们可以看到有趣的结果,令人惊讶的是,我们的模型在Math23k上的准确率达到了90%以上,这是惊人的高(以前最先进的方法几乎无法达到80% )。与表2的结果相比,即使GTS在使用Ape-clean和Math23k的大型联合MWP训练集训练时,准确率也更高。

        通过比较表2和表3之间对应组的性能,我们可以了解到我们提出的MWP-BERT预训练范式可以通过更多的训练示例实现更显著的提升,这证明了我们提出的表示学习技术的有效性。

4.3其他MWP理解任务

        标准的MWP求解是一个方程生成任务。为了充分验证我们的模型在数字表示学习上的有效性,本文进一步考虑了MWP特定的理解任务。我们设计了多个数字探测任务,并引入数量标记来扩大MWP理解评估任务。

        按照3.2节中提到的动机,我们重新运行所有的预训练任务作为探测任务重新运行,以评估我们的模型的理解能力,并在零样本的场景中测试MWP-BERT。比如不对MWP-BERT和MWP-RoBERTa的参数进行微调,以便进行公平的比较。我们对Ape-clean和Ape-unsolvable两者进行探测评估。除了“OPred”和“TPred”只在Ape-clean上计算,因为它们需要方程的解作为基本事实。

表4:mwp特定理解任务的评价结果。所有任务都对应于第4节中提到的任务。注意,两个任务的度量标准是均方误差,而其他任务使用分类精度。“QT”代表数量标记。

  

        表四展示了四种不同的PLM在上述特定于MWP的理解任务中的性能,从这些任务中我们可以观察到明显的提升,证明了我们提出的预训练技术在改善plm数字表示方面的有效性。除此之外,我们借用了MWP特有的序列标记任务——数量标记,去进一步组成MWP理解评估设置。数量标记首先提出了求解MWP算例中只有加减法算子的方法。简单地说,该任务要求模型对问题描述中的每个量赋值“+”、“-”或“None”,可以作为MWP理解评估工具,检查模型对每个变量在推理流程中的逻辑角色的理解。更确切地说,这也是一个分类任务,有3个可能的目标。我们从方程1中根据编码问题Z中所有量的位置提取它们对应的向量。接下来,连接一个2层前馈块来输出最终的预测。

        根据基线方法QT 的设置,我们进行了3次交叉验证,结果如表5所示,这表明PLM受益于所提出的预训练数学方法,并优于基线。

表5:比较我们提出的模型和基线之间的标记准确性(%)。

 

4.4消融实验

表6:实验结果表明每个预训练任务的有效性。“Only self-supervised”是指我们在BERT编码器上只应用了3个self-supervised pre - training任务。我们还调查了每个任务的影响。例如,“w/o MLM”意味着只执行自我监督的培训前任务,放弃MLM培训前任务。

        我们对所提出的训练目标进行消融性研究,以调查每一个训练目标的必要性。如表6所示,所有建议的目标都可以单独实现改进。此外,在Math23k和Ape-clean上,仅使用MLM会导致较弱的MWP求解器(减少1.4%)和(减少1.2%)。而再次证明了我们与训练任务的有效性。由于MWPs的难度通常与他们的解的长度成比例,我们可以很容易地识别出一组MWPs在解的程度上表现出的长尾分布,以及难度水平,如图所示。附录图3。因此,Math23k中人类水平性能的87%准确度(Wang et al., 2019)表明13%的MWPs难以求解。任何能够提高精度超过87%的解算器都为解决极端困难的情况做出了重大贡献,例如解包含≥4个变量或单个变量被多次使用的MWPs。众所周知,神经模型在处理这些组合和符号推理方面是有限的案例(Lee等人,2020),我们在这些特别困难的案例上检验我们的模型。由于篇幅的限制,我们在附录中附上了这些困难情况的几个例子,关于解的长度分布和解方程增加长度的性能的统计数据。此外,值得注意的是,即使没有传销目标,我们的模式也能够推广PLM的竞争对手。此外,我们可以观察到,在训练前连接方程的结构和数量对求解MWPs肯定是有益的。

5 结论

        我们提出了MWP-BERT,一个具有8个训练前目标的MWP特定PLM模型来解决MWP中的数字表示问题。同样,一个新的数据集Ape-clean通过过滤掉Ape-210k中无法解决的问题被策划出来了。过滤后的MWPs在自监督和弱监督的预训练任务中是有用的。实验结果显示我们提出的MWP-BERT在各种下游任务的生成和理解上具有优越性。在最具代表性的任务MWP求解方面,我们的方法精度最高,并且首先击败了人类的表现。在探测评价中也表现出较好的数值理解能力。我们相信我们的研究可以作为一个有用的训练前管道和一个强有力的基线在MWP社区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文学习(一)——MWP-BERT: Numeracy-Augmented Pre-training for Math WordProblem Solving 的相关文章

随机推荐

  • springboot集成RedisTemplate

    RedisTemplate使用 基本信息 Maven依赖 yml配置文件 redisConfig配置类 Redis操作string Redis操作list 基本信息 spring 封装了 RedisTemplate 对象来进行对redis的
  • c语言间接级别不同_间接寻址不同问题?求解决!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 错误18error C2040 FineStu Student int 与 int 的间接寻址级别不同e vs study study study c1441Study include incl
  • python 基本概念整理

    一 简介 1 基本概念 Python 是一个高层次的结合了解释性 编译性 互动性和面向对象的脚本语言 Python 的设计具有很强的可读性 相比其他语言经常使用英文关键字 其他语言的一些标点符号 它具有比其他语言更有特色语法结构 Pytho
  • post和get调用API接口的优势分享和实例

    post和get调用API接口 POST和GET都是HTTP协议中的方法 用于客户端向服务器发送请求并获取响应 在调用API接口时 一般使用GET或POST方法 GET方法是通过URL向服务器请求资源的一种方法 在URL中 请求参数会被编码
  • vue3.0之-watch全面解析

    1 监听ref 创建的基本数据类型 栗子1 监听多个数据
  • OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and

    OpenJDK 64 Bit Server VM warning Options Xverify none and noverify were deprecated in JDK 13 and will likely be removed
  • Anaconda下载与安装详解

    第一步 进入官网下载符合自己电脑版本的anaconda 官网地址 https www anaconda com products distribution 其它版本 下拉最后 如图所示 第二步 双击打开下载好的安装文件 如图所示 点击 Ne
  • KNN分类算法原理及其Matlab实现

    KNN算法原理 K近邻算法是一种简单的监督学习算法 对于给定测试样本 直接计算该样本和训练集的距离 将距离最近的k个 邻居 点的类别作为参考 作为预测结果返回 测试数据 测试数据来自林智仁的分类任务数据集 链接 https www csie
  • 想在Android应用程序中将XLS文件转换为PDF吗?看完这篇教程就懂了

    在各种情况下 您可能需要通过Internet共享Excel文件 为避免篡改 最佳做法是在共享之前将这些文件转换为PDF格式 因此 在本文中 将学习如何在Android应用程序中将Excel XLSX或XLS文件转换为PDF 另外 还将讨论E
  • Svelte 实现 keypress 快捷键功能

    有些框架中内置了常用的事件修饰符和按键修饰符 例如 Vue 中就提供了按键 enter 13 修饰键 ctrl alt shift meta等修饰符 简化了很多快捷键功能的实现 在 Svelte 中也提供了 preventDefault s
  • C++ stack容器

    C stack容器 1 stack容器的基本概念 2 stack容器的创建 stack 默认构造函数 创建一个空的 stack 对象 例如 下面一行代码使用默认的 deque 为底层容器 创建一个空的堆栈对象 s stack
  • 扫雷

    扫雷 扫雷游戏是晨晨和小璐特别喜欢的智力游戏 她俩最近沉迷其中无法自拔 该游戏的界面是一个矩阵 矩阵中有些格子中有一个地雷 其余格子中没有地雷 游戏中 格子可能处于己知和未知的状态 如果一个己知的格子中没有地雷 那么该 格子上会写有一个一位
  • 计算机网络---TCP/IP网络编程实验

    文章目录 计算机网络 TCP IP网络编程实验 一 实验目的 二 实验环境和任务 三 实验步骤及实验结果记录 四 实验结果分析和总结 计算机网络 TCP IP网络编程实验 一 实验目的 掌握TCP IP协议的基本知识 TCP IP协议的基本
  • 2023秋招,软件测试面试八股文(有答案版),金九银十季,涨薪涨薪

    最近呢有很多的小伙伴问我有没有什么软件测试的面试题 由于笔者之前一直在忙工作上的事情 没有时间整理面试题 刚好最近休息了一下 顺便整理了一些面试题 现在就把整理的面试题分享给大家 希望可以帮助到各位 废话就不多说了直接上干货 Tip 我整理
  • jQuery插件开发全解析,jQuery.extend , (function($){ , $.fn.pluginName

    序 匿名函数 匿名函数没有实际名字 也没有指针 怎么执行滴 其实大家可以看看小括号的意义就应该可以理解 小括号有返回值 也就是小括号内的函数或者表达式的返回值 所以说小括号内的function返回值等于小括号的返回值 不难理解 functi
  • Python for循环的使用

    一 for循环的使用场景 1 如果我们想要某件事情重复执行具体次数的时候可以使用for循环 2 for循环主要用来遍历 循环 序列 集合 字典 文件 甚至是自定义类或函数 二 for循环操作列表实例演示 使用for循环对列表进行遍历元素 修
  • 使用策略模式+工厂模式对接口进行分配处理。远离if else

    使用策略模式 工厂模式对接口进行分配处理 远离if else 背景 在项目中我们会遇到不同时间或者不同条件下 调用不同的方法或处理方式 因此我们可以采用策略模式进行满足不同的对象执行不同的具体行为 再用工厂模式进行匹配对应的对象 首先我们做
  • PID稳压

    思路说明 我们设置一个目标值 这是我们要调节的目标 我们通过AD采样 PC3 采集到当前电压 通过减法运算我们得出当前电压与目标电压的差值 接下来我们只要发现当前电压与目标电压不同 我们就要想办法改变当前单片机的输出电压 PA8 也就是当前
  • C++学习之gcc编译四步

    C 学习之gcc编译四步 一 linux下编写Hello World 代码文件 二 gcc编译四步 1 预处理 Preprocessing 2 编译 Compilation 3 汇编 Assembly 4 链接 Linking 三 执行 四
  • 论文学习(一)——MWP-BERT: Numeracy-Augmented Pre-training for Math WordProblem Solving

    记录一下自己的第一篇论文学习 摘要 数学应用题 MWP 的求解面临着数字表示学习的困境 为了避免数字表示的问题 并且减少可行解的搜索空间 现有求解MWP的工作通常用符号占位符代替实数 以便专注于逻辑推理 然而 不同于常见的符号推理任务 如程