PromptRank:使用Prompt进行无监督关键词提取

news2024/9/24 3:19:23

在这里插入图片描述

  论文题目:PromptRank: Unsupervised Keyphrase Extraction Using Prompt
  论文日期:2023/05/15(ACL 2023)
  论文地址:https://arxiv.org/abs/2305.04490
  GitHub地址:https://github.com/HLT-NLP/PromptRank

文章目录

    • Abstract
    • 1. Introduction
    • 2. Related Work
      • 2.1 Unsupervised Keyphrase Extraction
      • 2.2 Prompt Learning
    • 3. PromptRank
      • 3.1 Candidates Generation
      • 3.2 Probability Calculation
      • 3.3 Position Penalty Calculation
      • 3.4 Candidates Ranking
    • 4. Experiments
      • 4.1 Datasets and Evaluation Metrics
      • 4.2 Baselines and Implementation Details
      • 4.3 Overall Results
      • 4.4 Ablation Study
        • 4.4.1 Effects of Position Penalty
        • 4.4.2 Effects of Template Length
        • 4.4.3 Effects of Template Content
        • 4.4.4 Effects of Hyperparameter α
        • 4.4.5 Effects of Hyperparameter γ
        • 4.4.6 Effects of the PLM
      • 4.5 Case Study
    • 5. Conclusion

Abstract

  关键词提取(keyphrase extraction, KPE)任务是指从给定文档中自动选择短语来概括其核心内容。基于embedding的算法最近实现了最先进的(SOTA)性能,这些算法根据候选文本的嵌入与文档嵌入的相似度对候选文本进行排序。然而这样的解决方案要么难以解决文档和候选长度的差异,要么无法充分利用没有进一步微调的预训练语言模型(PLM)。为了解决这些问题,本文提出一种简单有效的无监督方法PromptRank,基于具有encoder-decoder架构的PLM。具体来说,PromptRank将文档输入编码器,并根据设计的提示词(prompt)计算解码器生成候选词的概率。在六个广泛使用的基准上对所提出的PromptRank进行了广泛的评估。与SOTA方法的MDERank相比,PromptRanktop5top10top15返回结果中,F1分数分别提高了34.18%24.87%17.57%,这表明了使用prompt进行无监督关键词提取的巨大潜力。

1. Introduction

  关键词提取旨在自动地从给定的文档中选择短语,以简洁地概括主题,帮助读者快速理解关键信息,并为后续的信息检索、文本挖掘、摘要等任务提供便利。现有的关键词提取工作可以分为有监督和无监督两类。随着深度学习的发展,有监督的关键词提取方法通过使用先进的架构取得了巨大的成功,如LSTMTransformer。然而,有监督的方法需要大规模的标记训练数据,并且可能对新领域的泛化性很差。而无监督的关键词提取方法,主要包括基于统计(statistics-based)、基于图(graph-based)和基于嵌入(embedding-based)的方法,在工业场景中更受欢迎。
  基于嵌入的方法最近取得了SOTA性能,可以进一步分为两种。第一种方法,比如EmbedRankSIFRank,将文档和候选关键词嵌入到一个潜在空间中,计算文档和候选关键词嵌入之间的相似度,然后选择最相似的前k个关键词。由于文档和文档的候选关键词之间的长度差异,这些方法的性能没有达到最优,对于长文档更是如此。为了缓解这种问题第二种方法被提出:通过利用预训练语言模型(PLM)MDERank将候选关键词的嵌入替换为掩码文档的嵌入,其中候选关键词与原始文档相屏蔽。在掩码文档和原始文档长度相近的情况下,测量它们的距离,距离越大,掩码候选文档作为关键词的重要性越高。尽管MDERank解决了长度差异的问题,但它面临着另一个挑战:PLM没有专门针对测量这种距离进行优化,因此需要对比微调(contrastive fine-tuning)来进一步提高性能。这给训练和部署关键词提取系统带来了额外的负担。此外,当更强大的PLM出现时,这会阻碍大型语言模型的快速应用。
  受CLIP工作的启发,在这篇论文中,作者建议通过将候选关键词放入一个精心设计的模板(即prompt)来扩展候选词的长度。然后为了比较文档和相应的提示信息,采用encoder-decoder架构将输入(即原始文档)和输出(即提示信息)映射到共享的潜在空间。encoder-decoder架构已经被广泛采用,并通过对齐输入和输出空间在许多领域取得了巨大的成功,包括机器翻译,图像描述等。基于prompt的无监督关键词提取方法可以同时解决上述现有基于嵌入的方法存在的问题:一方面,提示长度的增加可以缓解文档和候选词之间的差异;另一方面,可以直接利用具有encoder-decoder架构的PLM(例如T5)来测量相似性,而无需任何微调。在选择候选关键词后,将给定文档输入编码器,并根据设计的prompt计算解码器生成候选关键词的概率。概率越高,候选词越重要。
  PromptRank是第一个使用prompt进行无监督关键词提取的系统。它只需要文档本身,不需要更多的信息。充足的实验证明了PromptRank在长短文本上的有效性。
  这篇论文的主要贡献总结如下:
  (1) 提出了PromptRank,一种简单有效的无监督关键词提取方法,使用具有encoder-decoder架构的PLM对候选词进行排序。该方法是第一个使用prompt进行无监督关键词抽取的方法;
  (2) 进一步研究了影响排序效果的因素,包括候选位置信息(candidate position information)、提示长度(prompt length)提示内容(prompt content)
  (3) PromptRank在六个广泛使用的基准上进行了评估。实验结果表明,PromptRank在很大程度上优于当前的SOTA方法MDERank,展示了使用prompt进行无监督关键词提取的巨大潜力。

2. Related Work

2.1 Unsupervised Keyphrase Extraction

  主流的无监督关键词提取方法分为三类:基于统计的方法、基于图的方法和基于嵌入的方法。基于统计的方法通过综合考虑候选词的统计特征(如频率、位置、大小写和其他捕获的上下文信息特征)来对候选词进行排序。基于图的方法最早由TextRank提出,该方法以候选词为顶点,根据候选词的共现性关系构造边,并通过PageRank确定顶点的权重。后续的工作,如SingleRankTopicRankPositionRankMultipartiteRank等,都是对TextRank的改进。
  近年来,基于嵌入的方法取得了不错的性能。EmbedRank根据文档和候选人之间嵌入的相似性对候选人进行排名。SIFRank遵循了嵌入的思想,将句子嵌入模型SIF与预训练语言模型ELMo相结合,以获得更好的嵌入表示。然而,由于文档和候选文本的长度不匹配,这些算法在处理长文本时表现不佳。MDERank通过将候选文档的嵌入替换为掩码文档的嵌入来解决这个问题,但在没有微调的情况下未能充分利用PLM。为了解决这些问题,这篇论文提出了一种基于提示学习的无监督关键词提取方法PromptRank。除了基于统计、基于图和基于嵌入的方法,AttentionRank使用预训练的语言模型计算自注意力和交叉注意力,以确定候选词在文档中的重要性和语义相关性。

2.2 Prompt Learning

  在NLP领域,提示学习(prompt learning)被认为是种新的范式,可以取代在下游任务上对预训练语言模型进行微调。相比微调,自然语言形式的prompt更符合模型的预训练任务。提示学习已被广泛应用于许多NLP任务,如文本分类、关系抽取、命名实体识别、文本生成等。这篇论文首次使用提示学习进行无监督关键词提取,利用具有encoder-decoder架构的PLM的能力,如BARTT5。作者的工作也受到CLIP的启发,使用提示来增加候选词的长度以缓解长度不匹配问题。

3. PromptRank

在这里插入图片描述

  POS,即part-of-speech,词性标注。

  PromptRank的核心架构如上图所示。PromptRank由以下四个主要步骤组成:
  (1) 给定文档 d d d,根据词性序列生成候选集 C = { c 1 , c 2 , . . . , c n } C = \{c_1, c_2, ..., c_n\} C={c1,c2,...,cn}
  (2) 将文档输入编码器后,对于每个候选词 c ∈ C c \in C cC,利用设计的提示信息计算解码器生成候选词的概率,记为 p c p_c pc
  (3) 利用位置信息计算 c c c 的位置惩罚,记为 r c r_c rc
  (4) 根据概率和位置惩罚计算最终得分 s c s_c sc,然后按 s c s_c sc 降序排列候选词。

3.1 Candidates Generation

  作者按照通常做法,对分词和词性标注后的内容使用正则表达式提取名词短语作为关键短语候选,正则表达式为<NN. *|JJ> * <NN.*>

3.2 Probability Calculation

  为了解决基于嵌入方法的局限性,作者采用了一个encoder-decoder架构将原始文档和填充候选词的模板转换到共享的潜在空间。文档和模板之间的相似度由解码器生成填充模板的概率决定。概率越高,填充的模板与文档的对齐越紧密,候选词就被认为越重要。为了简化计算,选择将候选词放在模板的末尾,这样只需要计算候选词的概率就可以确定其排序。
  具体来说,用原始文档填充编码器模板,用一个候选文档填充解码器模板,然后基于PLM得到候选解码器模板的序列概率 p ( y i ∣ y < i ) p(y_i | y<i) p(yiy<i)。长度归一化对数似然(length-normalized log-likelihood)因其优越的性能而得到广泛应用,因此,可以按照下面的公式计算一个候选词的概率: p c = 1 ( l c ) α ∑ i = j j + l c − 1 l o g   p ( y i ∣ y < i ) p_c = \frac {1} {(l_c)^{\alpha}} \sum_{i=j}^{j+l_c-1} log\ p(y_i | y<i) pc=(lc)α1i=jj+lc1log p(yiy<i)  其中, j j j 是候选词 c c c 的起始索引, l c l_c lc 是候选词的长度, α \alpha α 是调节PromptRank对候选词长度倾向的超参数。使用值为负的 p c p_c pc 按降序来评价候选词的重要性。

3.3 Position Penalty Calculation

  当我们写文章时,通常从文章的要点开始。研究表明,候选词在文档中的位置可以作为一个有效的统计特征用于关键词提取。

  When writing an article, it is common practice to begin with the main points of the article.感觉不是很靠谱吧

  在这篇论文中,作者使用位置惩罚通过乘法来调节候选词的对数概率。对数概率为负,因此对于不重要的位置,对应的位置惩罚值更大。这将导致在不重要位置上的候选词总体得分较低,从而降低它们被选为关键词的可能性。具体来说,对于候选词 c c cPromptRank计算其位置惩罚如下: r c = p o s l e n + β r_c = \frac {pos} {len} + \beta rc=lenpos+β  其中 p o s pos pos是候选词 c c c第一次出现的位置, l e n len len 是文档的长度, β \beta β 是一个正值参数,用于调节位置信息的影响力。 β \beta β 值越大,位置信息在计算位置惩罚时的作用越小,即当 β \beta β 较大时,两个位置对位置惩罚 r c r_c rc 的贡献的差异会减小。因此,可以使用不同的 β \beta β 值来控制候选位置的敏感性。
  作者还观察到位置信息的有效性与文档长度相关。文章越长,位置信息越有效。因此,对于较长的文档,为 β \beta β 分配较小的值。根据经验,作者根据文档的长度将 β \beta β 表述为: β = γ l e n 3 \beta = \frac {\gamma} {len^3} β=len3γ  其中 {\gamma} 是一个超参数,需要通过实验来确定。

3.4 Candidates Ranking

  在获得位置罚分 r c r_c rc 后,PromptRank计算最终得分如下: s c = r c × p c s_c = r_c \times p_c sc=rc×pc利用位置惩罚来调整候选词的对数概率,降低远离文章开头的候选词被选为关键词的可能性。作者根据最终得分按降序对候选词进行排序,最后选取前k个候选词作为关键词。

4. Experiments

4.1 Datasets and Evaluation Metrics

  为了进行全面而准确的评估,作者在六个广泛使用的数据集上评估了PromptRank,与目前的SOTA方法MDERank一致。这些数据集是InspecSemEval-2010SemEval-2017DUC2001NUSKrapivin。数据集的统计信息如下表所示:

在这里插入图片描述

  按照之前的工作,使用F1top5top10top15的候选词进行评估。在计算F1时,将删除重复的候选项,并应用词干提取。

4.2 Baselines and Implementation Details

  作者选择了与MDERank相同的基线。这些基线包括基于图的方法,如TextRankSingleRankTopicRankMultipartiteRank基于统计的方法,如YAKE,以及基于嵌入的方法,如EmbeddRankSIFRankMDERank 本身,对于MDERank,直接使用了其基线结果。为了公平地比较,确保了PromptRankMDERank预处理和后处理的一致性。作者还使用T5-base(2.2亿个参数)模型,它与MDERank中使用的BERT-base具有相似的参数规模。此外,为了匹配BERT的设置,编码器输入的最大长度设置为512
  PromptRank是一种无监督算法,只需要设置两个超参数: α \alpha α γ \gamma γPromptRank被设计为具有开箱即用的泛化能力,而不是拟合单个数据集。因此,作者使用相同的超参数在六个数据集上评估PromptRank。这里将 α \alpha α 设置为 0.6 0.6 0.6 γ \gamma γ 设置为 1.2 × 1 0 8 1.2 \times 10^8 1.2×108

4.3 Overall Results

在这里插入图片描述

  上面的表格展示了PromptRank和基线模型在六个数据集上的F1@5F1@10F1@15得分的结果。结果表明,PromptRank在所有6个数据集上几乎所有评价指标上都取得了最好的性能,证明了所提方法的有效性。具体来说,PromptRank的表现优于SOTA方法MDERank,在F1@5F1@10F1@15上分别取得了34.18%24.87%17.57%的平均相对提升。值得注意的是,与嵌入和SIFRank相比,MDERank主要提高了两个超长数据集(KrapivinNUS)上的性能,而所提出的方法PromptRank在几乎所有数据集上都取得了最佳性能。这突出了所提出方法的泛化能力,可以在具有不同文档长度的不同数据集上很好地工作。
  随着文本长度的增加,文本与候选文本之间的长度差异会越来越严重。为了进一步研究PromptRank解决这个问题的能力,作者将其与EmbeddRankMDERank在六个数据集上的平均性能F1@5F1@10F1@15进行了比较。随着文档长度的增加,候选词数量迅速增加,关键词抽取性能下降。

在这里插入图片描述
  如上图所示,EmbedRank受长度差异的影响特别大,性能下降很快。MDERankPromptRank都缓解了这种下降。然而,在MDERank中使用的掩码文档嵌入并不像预期的那样工作。这是因为BERT没有被训练来保证越重要的短语被屏蔽,嵌入的变化越剧烈。BERT只是被训练来恢复掩码令牌。通过利用PLMencoder-decoder结构并使用promptPromptRank不仅比MDERank更有效地解决了嵌入在长文本上的性能下降问题,而且在短文本上的表现也优于两者。

4.4 Ablation Study

4.4.1 Effects of Position Penalty

  为了评估位置惩罚对PromptRank整体性能的贡献,作者进行了仅根据候选词的提示概率进行排序的实验。结果如下表所示:

在这里插入图片描述
  没有位置惩罚的PromptRank的表现明显优于MDERank。当考虑位置惩罚时,性能进一步提高,特别是在长文本数据集上。这表明基于提示的概率是PromptRank的核心,而位置信息可以提供更多的好处。

4.4.2 Effects of Template Length

  PromptRank通过将候选词填充到模板中来解决嵌入的长度差异。为了研究模板能在多长时间可以避免嵌入的缺陷,作者使用不同长度的模板进行了实验,分别为0251020。除长度为0的组外,每个长度包含4个手工模板(详见附录A.2),位置信息不使用。为了排除模板内容的影响,对于每个模板,计算每个数据集的性能与Inspec(short text)数据集的性能的比率,以衡量文本长度增加造成的退化。

在这里插入图片描述

  如上图所示,折线越高,退化越小。长度为02的模板退化严重,面临着与嵌入相同的问题,使得prompt难以利用。长度大于等于5的模板较好地解决了长度差异问题,为模板选择提供指导。

4.4.3 Effects of Template Content

在这里插入图片描述

  模板的内容直接影响关键词提取的性能。一些典型的模板及其结果如上述表格所示(没有使用位置信息)。模板1是空的,结果最差。模板2-5的长度相同,都是5,性能优于模板1。模板4在所有指标上都取得了最佳性能。因此,本文得出结论,设计良好的提示是有益的。请注意,所有模板都是手动设计的,将模板构造的自动化留给未来的工作。

4.4.4 Effects of Hyperparameter α

  PromptRank对候选词长度的倾向由 α \alpha α 控制, α \alpha α 越高,越倾向于选择较长的候选词。为了探究不同 α \alpha α 值的影响,作者在不使用位置信息的情况下进行了实验,将 α \alpha α0.2调整为1,步长为0.1 α \alpha α6个数据集上的最优值如下表所示:

在这里插入图片描述
   L a k L_{ak} Lak是黄金关键词的平均字数,直观地说,数据集中 L a k L_{ak} Lak越小, α \alpha α 的最优值就越小。结果表明,大多数数据集都符合这一猜想。请注意,最高 L a k L_{ak} LakSemEval2017 α \alpha α 不敏感原因是SemEval2017数据集中黄金关键短语的分布相对更均衡。为了保持PromptRank的泛化能力,建议选择在每个基准上表现良好的 α \alpha α,而不是追求所有数据集的最佳平均F1。因此,建议将 α \alpha α 设置为0.6

4.4.5 Effects of Hyperparameter γ

  位置信息的影响由 β \beta β 控制, β \beta β 越大,位置信息对排名的影响越小。之前的工作表明,包含位置信息可以在提高长文本性能的同时,降低短文本的性能。为了解决这个问题,作者通过超参数 γ \gamma γ 根据文档长度动态调整 β \beta β,旨在最大限度地减少大 β \beta β 对短文本的影响,同时最大化小 β \beta β 对长文本的好处。通过实验,确定 γ \gamma γ 的最优值为 1.2 × 1 0 8 1.2 \times 10^8 1.2×108。通过在六个数据集上计算 β \beta β 的平均值显示在表5中。如表3所示,PromptRank在短文本上的性能保持不变,而在长文本上的性能有显著提升。

4.4.6 Effects of the PLM

  PromptRank使用T5-base作为默认的PLM,但是为了探究PromptRank的机制是否局限于特定的PLM,作者使用不同大小和类型的模型进行了实验,例如BART。结果如表6所示,即使超参数和提示针对T5-base进行了优化,所有模型的性能都优于当前的SOTA方法MDERank。这表明PromptRank并不局限于特定的PLM,并且对于不同的encoder-decoder结构的PLM具有很强的通用性。当有更强大的PLM可用时,该方法能够快速应用新的PLM

在这里插入图片描述

4.5 Case Study

  为了证明PromptRank的有效性,作者从Inspec数据集中随机选择一个文档,并比较MDERankPromptRank产生的分数之间的差异。作者对原始分数进行归一化并以热图的形式呈现它们,颜色越暖,分数越高,候选词越重要。金色的关键字用粗体斜体下划线。对比发现,与MDERank相比,PromptRank更准确地给黄金关键词打高更好地区分不相关的候选。实验结果表明,PromptRankSOTA方法MDERank具有更好的性能。

5. Conclusion

  这篇论文提出了一种基于prompt的无监督关键词提取方法PromptRank,采用encoder-decoder架构的PLM。根据解码器设计的提示来计算生成候选词的概率,从而对候选词进行排序。在六个广泛使用的基准上进行的广泛实验,证明了所提出方法的有效性,明显优于强大的基线。彻底研究了影响PromptRank性能的各种因素,并获得了有价值的见解。该方法不需要对PLM的架构进行任何修改,也不引入任何额外参数,使其成为一种简单而强大的关键词提取方法。


  关注微信公众号:夏小悠,以获取更多文章、论文PPT等资料^_^

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

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

相关文章

【laBVIEW学习】4.声音播放,自定义图标,滚动条设置

一。声音播放&#xff08;报错&#xff0c;未实现&#xff09; 1.报错4810 2.解决方法&#xff1a; 暂时未解决。 二。图片修改 1.目标&#xff1a;灯泡---》自定义灯泡 2.步骤&#xff1a; 1.右键点击--》自定义运行 表示可以制作自定义类型 2.右键--》打开自定义类型 这样就…

文件管理技巧大公开,轻松批量归类相同名称文件到指定文件夹!

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件&#xff0c;包括文档、图片、音频、视频等。然而&#xff0c;随着时间的推移&#xff0c;文件数量不断增加&#xff0c;管理起来也变得越来越困难。为了更高效地整理和分类这些文件&#xff0c;今天我们将向大家介绍…

MySQL处理并发访问和高负载的关键技术和策略

我深知在数据库管理中处理并发访问和高负载的重要性。在这篇文章中&#xff0c;我将探讨MySQL处理并发访问和高负载的关键技术和策略&#xff0c;以帮助读者更好地优化数据库性能。 图片来源&#xff1a;MySQL处理并发访问和高负载的关键技术和策略 MySQL数据库在处理并发访问…

电子学会C/C++编程等级考试2023年03月(三级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:和数(2023.3) 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 时间限制:10000 内存限制:65536输入 共两行,第一行是数列中…

基于java的职工便利系统【大学期末结课作业】

需求分析 背景和目标 基于现在的各类企业的职工在企业日常工作及生活中所需要的各类需求&#xff0c;通过使用Java语言开发一个职工便利系统&#xff0c;以方便职工完成公司内的日常事务&#xff0c;提高工作效率。 设计目的: 设计职工便利系统的主要目的是为了提升职工的工作…

C#测试开源运行耗时库MethodTimer.Fody

微信公众号“dotNET跨平台”的文章《一个监控C#方法运行耗时开源库》介绍了支持测量方法耗时的包MethodTimer.Fody&#xff0c;使用方便&#xff0c;还可以自定义输出信息格式。本文学习并测试MethodTimer.Fody包的使用方式。   新建控制台程序&#xff0c;通过Nuget包管理器…

文心一言 VS 讯飞星火 VS chatgpt (146)-- 算法导论12.2 1题

一、用go语言&#xff0c;假设一棵二叉搜索树中的结点在1到 1000 之间&#xff0c;现在想要查找数值为 363 的结点。下面序列中哪个不是查找过的序列? a.2&#xff0c;252&#xff0c;401&#xff0c;398&#xff0c;330&#xff0c;344&#xff0c;397&#xff0c;363。 b.9…

unity3d模型中缺失animation

在 模型的Rig-Animationtype 设置成Legacy https://tieba.baidu.com/p/2293580178

【开源】基于Vue.js的医院门诊预约挂号系统的设计和实现

项目编号&#xff1a; S 033 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S033&#xff0c;文末获取源码。} 项目编号&#xff1a;S033&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…

SNAT / DNAT 自定义链

目录 linux 系统本身是没有转发功能&#xff0c;只有路由发送数据 NAT NAT的实现分为两类 SNAT SNAT 应用环境 SNAT 原理 SNAT 转换前提条件 例图参考 开启 SNAT 命令 临时开启 永久开启 修改 iptables 网卡 DNAT DNAT 应用环境 DNAT 原理 DNAT 转换前提条件 …

阿里云Arthas使用——通过watch命令查看类的返回值 捞数据出来

前言 Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建 持续更新中… java+vue+微信小程序项目】从零开始搭建——健身房管理平台 项目简介Java项目搭建(IDEA)1.新建项目2.项目类型3.项目设置4…

MySQL之binlog日志

聊聊BINLOG binlog记录什么&#xff1f; MySQL server中所有的搜索引擎发生了更新&#xff08;DDL和DML&#xff09;都会产生binlog日志&#xff0c;记录的是语句的原始逻辑 为什么需要binlog&#xff1f; binlog主要有两个应用场景&#xff0c;一是数据复制&#xff0c;在…

CHEM 14 not know

Goals of this lab: • Create and use a calibration curve for the absorbance/concentration relationship for crystal violet • Evaluate absorbance versus time measurements to determine the order of a reaction • Analyze graphs of data to determine best linea…

MySQL进阶知识:InnoDB引擎

目录 逻辑存储结构 架构 内存结构 Buffer Pool Change Buffer Adaptive Hash Index Log Buffer 磁盘结构 后台线程 事务原理 redo log undo log MVCC 隐式字段 undo log版本链 readView 逻辑存储结构 这张图在我之前的笔记中出现过&#xff0c;接下来我们详细介…

CMake 教程:常用命令及其使用方法

CMake是一个跨平台、开源的构建工具&#xff0c;它可以自动生成Makefile或者Visual Studio等IDE的工程文件。它能够帮助开发者更方便地管理项目的构建过程&#xff0c;提高项目构建的效率。在本文中&#xff0c;我们将介绍CMake常用的命令以及对应的用法 add_executable add_e…

五、shell - 算术运算符

目录 1、简介 2、例子 ​​​​​​​1、简介 Shell 和其他编程一样&#xff0c;支持包括&#xff1a;算术、关系、布尔、字符串等运算符。原生 bash 不支持简单的数学运算&#xff0c;但是可以通过其他命令来实现&#xff0c;例如expr。expr 是一款表达式计算工具&#xff…

JAVEE初阶 多线程基础(四)

线程安全 一.线程安全存在的问题二.锁三.关于锁的理解四.关于锁操作混淆的理解4.1两个线程是否对同一对象加锁 一.线程安全存在的问题 为什么这里的count不是一百万呢?这就是线程所存在的不安全的问题,由于线程是抢占式执行,同时执行count,操作本质是三个指令 1.load 读取内存…

JUC并发编程 01——多线程基础知识

一.线程应用 异步调用 以调用方角度来讲&#xff0c;如果 需要等待结果返回&#xff0c;才能继续运行就是同步 不需要等待结果返回&#xff0c;就能继续运行就是异步 应用 比如在项目中&#xff0c;视频文件需要转换格式等操作比较费时&#xff0c;这时开一个新线程处理视…

Apache Hive3.1.3 遇到DATE_FORMAT转换2021年12月格式的问题

比如&#xff1a;需要将时间2021-12-28 00:00:00转换成2021-12的格式&#xff0c;用date_format会将2021-12转换成2022-12的问题。 解决方法&#xff1a; 方式一&#xff1a;大写的‘Y’换成‘y’ 方式二&#xff1a;字符串截取&#xff0c;substr 本博主推荐方式一&#xf…