【论文精读】COLING 2020 -带有对偶关系图注意力网络的事件检测模型

news2024/11/17 7:34:00

【论文精读】COLING 2020 -带有对偶关系图注意力网络的事件检测模型

【论文原文】:Event Detection with Dual Relational Graph Attention Networks

【作者信息】:Jiaxin Mi and Po Hu and Peng Li

论文:https://aclanthology.org/2022.coling-1.172.pdf
代码:https://github.com/Macvh/DualGAT (未上传)

博主关键词:事件检测

推荐论文:无

摘要

事件检测旨在从文本片段中识别特定事件类型的实例,是信息提取中的基本任务。大多数现有方法利用语法知识和一系列语法关系来增强事件检测。然而,这些基于语法的方法的副作用是,它们可能混淆不同的语法关系,并倾向于引入冗余或噪声信息,这可能导致性能下降。为此,我们提出了一个简单而有效的模型DualGAT (Dual Relational Graph Attention Networks,对偶关系图注意力网络),该模型利用句法和语义关系的互补特性来缓解这一问题。具体地说,我们首先构造一个对偶关系图,它将语法和语义关系聚集到图中的关键节点上,这样就可以从多个透视图(即语法和语义视图)全面捕获事件相关的信息。然后采用增强关系图注意网络对图进行编码,并通过引入上下文信息优化其注意权重,进一步提高事件检测的性能。在标准ACE2005基准数据集上进行的大量实验表明,我们的方法显著优于最先进的方法,并验证了DualGAT优于现有基于语法的方法。

1、简介

如下图1所示,事件检测的目的是识别句子中的事件触发词thrust,并将其分类为Transport事件。事件检测具有大量的下游应用,是信息抽取的核心任务之一。

先前的事件抽取任务可以分为传统的基于特征的方法和深度学习方法,由于深度神经网络强大的特征抽取能力,深度神经网络方法已经超过了传统的基于特征的方法。近年来,大多数深度学习方法都更加注重在事件检测中利用句法关系。这些方法采用图神经网络(GNNs),如图卷积网络(GCNs)和图注意力网络(GATs)对依赖树进行编码,以学习单词的有效表示。由于依赖树为ED传递了丰富的语言信息,基于语法的方法通常能获得更好的性能(Xie et al, 2021)。

然而,现有的基于句法的方法仍有两个缺点需要解决。首先,依赖树不能总是简洁地捕获与触发词相关的显著信息,这可能包含靠近根节点的噪声依赖关系,并误导事件检测(Lai et al, 2020;Liu et al, 2021)。如图1所示,基于语法的事件检测方法错误地将红色标记的依赖项标识为Attack事件的触发词相关提示。由于troops和触发词候选striking与根节点distance有直接关系,基于GNN的方法容易更加关注它们,从而预测错误的触发词(Liu et al, 2021)。值得注意的是,在这种情况下,标记的蓝色依赖项与真正的触发词thrust密切相关,应该更加强调地加以利用。其次,完全依靠语法依赖树不足以完成事件检测。现有依赖项解析器的解析结果可能包含不正确的或弱相关的信息,由于可能的错误传播,这将不可避免地影响基于语法的事件检测方法的性能。此外,句法依赖树不能提供事件检测所需的所有语言知识。

针对上述问题,我们提出了一种新的DualGAT模型,该模型充分利用句法和语义信息来提高事件检测性能。受基于方面级依赖解析(Wang et al, 2020a)的启发,我们构造了一个包含句法和语义关系的对偶关系图,以捕获与触发词相关的信息。根据经验,句子中只有一小部分依赖关系是任务意识的(Zhang et al,2018;He et al, 2018)。因此,为了减少噪声关系的影响,我们剪枝与触发词候选没有直接连接的原始语法依赖项,并重建了句子中剩余单词与触发词候选之间的其他连接。除了句法信息外,我们还引入语义关系信息,使其根植于句子的谓语中。其次,采用增强关系图注意力网络对图进行编码,从句法和语义角度学习根节点的表示。特别地,我们引入了上下文信息来调整注意力权重,以减轻由于引入依赖解析器而可能丢失的信息。在标准ACE2005基准数据集上的实验结果表明,DualGAT在很大程度上优于最先进的方法。

本文最主要的贡献如下所示:

  • 我们构造了一个对偶关系图,将句法和语义关系收敛到图中的关键节点,可以从不同角度捕获重要的事件信息,减少句法解析器造成的信息丢失或噪声。
  • 采用增强关系图注意网络对图进行编码,并通过引入上下文信息优化其注意权重。
  • 实验结果进一步验证了DualGAT相对于现有方法的优越性。DualGA T通过最先进的基于语法的方法实现了F1分数的5%改进。

2、相关工作

近年来,事件检测受到了广泛的关注。传统的事件检测方法使用手工制作的语言特征进行事件检测,例如词汇特征、句法特征或实体特征(Hong et al, 2011; Ahn, 2006)。然而,设计这些特性非常耗时,而且不容易适应其他任务或新的领域。

随着神经网络的快速发展,一系列的神经事件检测方法被提出。许多研究人员将新的学习策略应用于事件检测,例如利用弱监督学习策略来生成更多的标记数据,以提高事件检测的性能(Zeng et al, 2018; Yang et al, 2018)。Wang等人(2019)采用对抗性训练机制来获得多样化和准确的训练数据。Lu等人(2019)提出了一种基于知识蒸馏的方法,以在稀疏标记的触发词上获得更好的性能。最近提出的一些方法引入了额外的知识,通过开放领域触发词知识(Tong et al, 2020)、实体知识(Liu et al, 2019)和语法依赖关系(Yan et al, 2019)来改进事件检测。

依赖关系的有效性已在许多自然语言处理(NLP)任务中得到验证,如情感分析(Wang et al, 2020a)和关系提取(He et al, 2018)。由于句法和结构信息丰富,句法依赖关系在事件检测中也发挥着重要作用(Liu et al, 2018b)。例如,Yan等人(2019)利用句子中的多阶句法关系来获得更好的触发词表示。Lv等人(2021)集成语法和文档信息,以便更好地检测事件。Cui等人(2020)提出了一个模型来进一步探索依赖关系的类型信息,以获取任务感知知识。由于现有的基于图的模型引入了许多不确定触发词的表示,Lai等人(2020)提出通过门控机制过滤噪声信息。由于gnn和句法依赖树的有效结合,这些基于句法的事件检测方法总体性能优于普通的深度学习方法。

虽然这些作品使用了相似的句法信息,但很少有从新的角度对原始图进行重塑,以便于获取与事件相关的显著信息。原始依赖树包含丰富的结构和语言知识,但它可能不准确,并且包含与事件无关的信息。此外,据我们所知,还没有基于语法的方法显式地使用语义信息来补充用于事件检测的语法信息。为此,我们提出了DualGAT,它同时考虑了语法和语义关系以及上下文信息来进行事件检测。

3、方法

3.1 方法总览

DualGAT的整体架构如图2所示,由三个主要组成部分组成:(1)关系图构造器(§3.2),通过依赖关系解析和语义角色标记来构造对偶关系图;(2)增强关系图注意网络(Augmented Relational Graph Attention Networks,§3.3),在注意权重的适应中引入额外的上下文信息,并对对偶关系图进行编码,从句法和语义角度获得根节点的表示;(3)事件检测器(§3.4),利用Biaffine模块在句法和语义表示之间交换相关特征,并执行事件检测。

3.2 关系图构建

3.2.1 对偶关系图

现有的方法受到噪声依赖关系的干扰,并倾向于学习无关的触发词表示(Lai et al, 2020)。由于候选触发词是事件检测任务的重点,这些与触发词无关的噪声信息不可避免地会影响性能。此外,现有依赖解析器的解析结果可能包含不正确的或弱相关的信息,这限制了事件检测的性能。

许多工作已经证明,只有一小部分句法关系是任务感知的(Zhang et al, 2018;He et al, 2018),识别触发词是事件检测任务的核心。因此,我们认为,更多地关注与触发词候选直接关联的句法关系可以减少错误句法关系的影响。此外,语义和句法知识的互补性在相关的NLP任务中得到了利用和验证,如关系提取(Bovi et al, 2015)和实体提取(Chan and Roth, 2011)。我们相信语义关系可以弥补句法关系的不足,减少对依赖解析器的依赖。

为此,我们构建了一个对偶关系图结构,它将句法关系合并到触发词候选中,并且聚合谓词动词的语义关系,以提高图的鲁棒性。算法1描述了对偶关系图的构造过程。我们首先利用依赖解析器获得给定句子的原始语法关系。然后,我们保留直接连接到触发词候选对象的语法关系,并修剪剩余的关系。为了提高图的鲁棒性,我们进一步将修剪后的关系替换为具有触发词候选的按距离分类的虚拟关系。具体来说,虚拟关系的类型定义为 v i r : d vir: d vir:d,其中 d d d表示单词与触发词候选之间的距离。最后,我们进行语义角色标注,在其他词和谓语动词之间附加语义关系,并执行与上述相同的过程。

经过上述处理得到的图就是对偶关系图。它有两个相同级别的子图:语法关系子图,将语法信息收敛到触发词候选;语义关系子图,将语义信息收敛到谓语动词。形式上,我们将对偶关系图定义为 G = ( V , E ) G = (V, E) G=(V,E)与边型映射函数 τ : E → T E τ: E→T_E τ:ETE相关。 V V V表示句子中的单词节点集合, E E E表示关系边集合。 T E T_E TE表示所有类型的关系,包括句法关系、语义关系和虚拟关系。将单词节点 i i i和单词节点 j j j之间的关系边定义为 e i j e_{ij} eij

3.2.2 对偶关系图的优势

对偶关系图在事件检测方面具有独特的优势。首先,为每个触发词候选对象定制对偶关系图,减少引入噪声的触发词未知信息;其次,基于谓语动词的语义关系可以提高对偶关系图的鲁棒性。第三,双关系图结构有利于事件检测模型捕获任务感知信息。我们使用三个简单的示例来说明上述优点,如图3所示。

首先,例子(a)和例子(b)是两个自定义的对偶关系图,用于同一句中不同的触发词候选。现有的方法倾向于将striking识别为Attack事件的触发词,因为在原始依赖树中,strickingenemytroops之间存在很强的关联。而“striking”的对偶关系图,则剪去了“trigger-不可知论”的关系,清楚地说明了stricking只是distance的形容词修饰语(amod)。此外,thrust的对偶关系图可以帮助ED模型捕捉到它与throughmake的联系,而不受原始依赖树中噪声依赖关系的干扰。因此,ED方法倾向于将thrust识别为Transport事件的触发词,而不是striking

此外,例©可以说明语义关系的重要性。例©中,紫色箭头为原句法关系,橙色箭头为对偶关系图的附加语义关系。基于原有的句法关系,ED方法倾向于将War识别为Attack事件的触发词,因为WarWin之间有很强的联系。即使剔除了触发词无关的句法关系,正确的触发词Former仍然不能得到足够的重视。而语义关系可以使深层语义信息从now流向Former。“ARGM-TMP”关系引入了时间信息,以帮助识别Former作为结束位置事件的触发词。

最后,如例(a)和(b)所示,对偶关系图没有复杂的相互作用。对偶关系图的结构清晰且聚合。它可以减少噪声相互作用的干扰,降低ED模型捕获触发词相关信息的难度。

3.3 增强关系图注意力网络

为了更有效地编码用于事件检测的二元关系图,我们提出了一种增强关系图注意网络(ARGAT),通过引入额外的上下文信息来编码由句子中的单词构建的图。

3.3.3 图注意力网络

图神经网络(Scarselli et al, 2009)已被广泛用于编码事件检测的依赖树,因为它们可以基于信息聚合方案有效地捕获相关信息(Cao et al, 2021)。此外,大量工作表明,图卷积网络(Schlichtkrull et al, 2018)不能有效利用多跳关系信息(Yan et al, 2019)。直观地说,事件检测任务的核心是捕获带有触发词候选词的相关单词。因此,我们应用图注意力网络(Velickovic et al, 2018),它可以更有效地利用单词之间的关系来编码对偶关系图。

形式上,给定一个具有 L L L个词节点的对偶关系图 G G G,节点 i i i的邻域节点集定义为 N i N_i Ni。第 l l l层节点i的特征向量记为 h i l ( h i l ∈ R F ) h^l_i(h^l_i∈\mathbb{R}^F ) hil(hilRF) F F F为节点特征的维度。对于 l + 1 l+1 l+1层的节点 i i i,多头图注意网络的计算定义如下:
h a t t i l + 1 = ∥ k = 1 K σ ( ∑ j ∈ N i α i j l k W k l h j l ) h_{att_i}^{l+1}=\parallel_{k=1}^{K} \sigma \left( \sum_{j \in N_i } \alpha_{ij}^{lk}W_k^lh_j^l \right) hattil+1=k=1Kσ jNiαijlkWklhjl

α i j l k = exp ⁡ ( f 1 ( a T [ W k l h i l ∥ W k l h j l ] ) ) ∑ t ∈ N i exp ⁡ ( f 1 ( a T [ W k l h i l ∥ W k l h t l ] ) ) \alpha_{ij}^{lk}=\frac{\exp (f_1(a^T [W_k^l h_i^l \parallel W_k^l h_j^l]))}{\sum_{t \in N_i} \exp (f_1(a^T [W_k^l h_i^l \parallel W_k^l h_t^l]))} αijlk=tNiexp(f1(aT[WklhilWklhtl]))exp(f1(aT[WklhilWklhjl]))

其中 h a t t i l + 1 h_{att_i}^{l+1} hattil+1为第 l + 1 l+1 l+1层节点 i i i的注意力头, W k l W^l_k Wkl为变换矩阵,f 1 ( ⋅ ) 1(·) 1()为LeakyReLU的函数, a a a为权重向量, K K K为head数, ∥ k = 1 K \parallel_{k=1}^{K} k=1K表示 h 1 h_1 h1 h K h_K hK的向量拼接。

3.3.2 AR-GAT

关系图注意力网络(Wang et al, 2020a)扩展了原始图注意力网络,增加了额外的头部,以利用边缘的类型信息。然而,关系图注意力网络与对偶关系图的编码并不完全兼容。一方面,最初生成的原始句法和语义关系可能是错误的。另一方面,在对偶关系图的构造过程中,重塑和修剪可能进一步导致源于解析器的错误传播。因此,关系头不足以准确控制来自邻近节点的信息流。

为了克服上述问题,我们建议从单词节点引入额外的上下文信息,以更准确地控制信息流。因子分解机制的效果已经在许多任务中得到了证明(Guo et al, 2017)。受到因子分解机制的启发,我们应用了一个内积单元用于组合上下文信息和类型信息。

形式上,初始关系嵌入矩阵定义为 W t ∈ R N t × F W_t∈\mathbb{R}^{N_t×F} WtRNt×F, N t N_t Nt为关系类型的个数。对于 l + 1 l+1 l+1层的节点 i i i,多头增强关系图注意力网络的计算定义如下:
h r e l i l + 1 = ∥ m = 1 M σ ( ∑ j ∈ N i β i j l m W m l h j l ) {h}_{r e l_{i}}^{l+1}=\|_{m=1}^{M} \sigma\left(\sum_{j \in {N}_{i}} \beta_{i j}^{l m} {W}_{m}^{l} {h}_{j}^{l}\right) \\ hrelil+1=m=1Mσ jNiβijlmWmlhjl

R i j m = ( W m 1 f 2 ( τ ( e i j ) , W t ) + b m 1 ) ⊙ σ ( W m 2 ( h i ∥ h j ) + b m 2 ) R_{i j}^{m}=\left({W}_{m 1} f_{2}\left(\tau\left(e_{i j}\right), {W}_{t}\right)+b_{m 1}\right) \odot \sigma\left({W}_{m 2}\left({h}_{i} \| {h}_{j}\right)+b_{m 2}\right) \\ Rijm=(Wm1f2(τ(eij),Wt)+bm1)σ(Wm2(hihj)+bm2)

g i j l m = σ ( ( r e l u ( R i j m W m 3 + b m 3 ) W m 4 + b m 4 ) ) g_{ij}^{lm}=\sigma (\left( relu \left(R_{i j}^{m} {W}_{m 3}+b_{m 3}\right) {W}_{m 4}+b_{m 4}\right)) gijlm=σ((relu(RijmWm3+bm3)Wm4+bm4))

β i j l m = exp ⁡ ( g i j l m ) ∑ j ∈ N i exp ⁡ ( g i j l m ) \beta_{ij}^{lm}=\frac{\exp (g_{ij}^{lm})}{\sum_{j \in N_i} \exp (g_{ij}^{lm})} βijlm=jNiexp(gijlm)exp(gijlm)

其中 h r e l i l + 1 h^{l+1}_{rel_i} hrelil+1表示节点 i i i在第 l + 1 l+1 l+1层的增强关系注意头, M M M为头数, f 2 ( τ ( e i j ) , W t ) f_2(τ(e_{ij}),W_t) f2(τ(eij),Wt)为根据关系嵌入矩阵 W t W_t Wt将边 e i j e_{ij} eij映射到相应的关系嵌入的映射函数,计算节点i的最终表示形式为:
o i l + 1 = h a t t i l + 1 ∥ h r e l i l + 1 o_i^{l+1}=h_{att_i}^{l+1} \parallel h_{rel_i}^{l+1} oil+1=hattil+1hrelil+1

h i l + 1 = r e l u ( W l + 1 o i l + 1 + b l + 1 ) h_i^{l+1}=relu \left(W_{l+1}o_i^{l+1} + b_{l+1} \right) hil+1=relu(Wl+1oil+1+bl+1)

3.4 事件检测

我们使用BERT (Devlin et al, 2019)来获得图节点的词嵌入,将词 x i x_i xi的嵌入定义为 h i 0 h^0_i hi0。我们分别使用 h t 0 h^0_t ht0 h v 0 h^0_v hv0表示触发词候选节点和谓词谓词节点的初始嵌入。然后应用AR-GAT分别对对偶关系图的两个子图进行编码,得到它们的根表示 h t l h^l_t htl h v l h^l_v hvl h t l h^l_t htl h v l h^l_v hvl分别聚合句法和语义信息。

为了在这两种类型的信息之间有效地交换相关特征,我们采用了相互Biaffine转换(Li et al, 2021b)。交互过程为:
h t l ′ = softmax ( h t l W 1 ( h v l ) T ) h v l h_t^{l'}=\text{softmax}(h_t^lW_1(h_v^l)^T)h_v^l htl=softmax(htlW1(hvl)T)hvl

h v l ′ = softmax ( h v l W 2 ( h t l ) T ) h t l h_v^{l'}=\text{softmax}(h_v^lW_2(h_t^l)^T)h_t^l hvl=softmax(hvlW2(htl)T)htl

W 1 , W 2 W_1,W_2 W1,W2是可训练参数。

最终,我们连接 h t l ′ , h v l ′ h_t^{l'},h_v^{l'} htl,hvl的表示:
x = h t l ′ ∥ h v l ′ x= h_t^{l'}\parallel h_v^{l'} x=htlhvl
最终的表示 x x x将送入全连接层,经过softmax函数进行分类:
p ( t ) = softmax ( W p x + b p ) p(t)=\text{softmax}(W_p x+ b_p) p(t)=softmax(Wpx+bp)

4、实验

数据集:ACE2005。

评估指标:precision,recall,f1.

baseline

  • 基于句法的模型:GCN-ED,SA-GRCN,EE-GCN,GatedGCN。
  • 基于外部知识的方法:PLMEE,DNR,SS-JDN。

实验结果

消融实验

5、总结

在本文中,我们提出了一个简单而有效的模型DualGAT (Dual Relational Graph Attention Networks,双关系图注意网络),以解决基于语法的事件检测任务方法的缺点。为了便于从句子的不同角度准确捕捉关键信息,我们设计了一个对偶关系图,它将句法和语义关系聚集到图中的关键节点上。为了有效地编码二元关系图,我们提出了增强关系图注意网络,引入上下文信息来计算更健壮的注意力权重。实验结果表明,该方法具有较好的性能。

我们打算在未来进一步探讨我们工作的几个方面。首先,我们将改进语义信息引入的方式。其次,我们将开发一种更有效的方法来融合句法和语义信息。第三,我们将探讨增强关系图注意力网络在其他任务中的作用。

【论文速递 | 精选】

论坛地址:https://bbs.csdn.net/forums/paper

最近工作

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

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

相关文章

Spring系列(六) --- SpringBoot 与 Servlet 的比较及 Spring 读取配置文件的方式

SpringSpringBoot VS ServletSpring 读取配置文件的方式yml 和 properties 的区别SpringBoot VS Servlet Spring 读取配置文件的方式 1 Value 注解获取单个配置项 如在 yml 中定义一个 qq 音乐的 token; 然后输出, 如下: 2 针对对象的读取: ConfigurationProperties 在 yml 中…

笔记本电脑连接不上WiFi怎么办?4个实用解决方法!

案例:笔记本电脑连接不上WiFi怎么办 “朋友们,想问问大家知道为什么我的笔记本电脑连接不上WiFi呢?试了好几遍还是无法连接,遇到这种情况我应该怎么解决呢?感谢大家!” 在现代生活中,笔记本电…

HTTP协议详解(二)

目录 1.HTTP 响应详解 1.1认识状态码(status code) 1.2 认识响应报头(header) 1.3 认识响应正文(body) 2.构造 HTTP 请求 2.1 通过form表单构造请求 2.2 通过ajax构造请求 2.3 使用第三方工具构造请求 开始之前我们先复习一下http协议格式 1.HTTP 响应详解 我们先抓包…

【JavaScript】四个常用功能/案例:表格排序 | 替换链接 | 倒计时 | 双色球机选一注

CSDN话题挑战赛第2期 参赛话题:学习笔记 🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述&am…

《文章复现》考虑用户舒适度的冷热电多能互补综合能源系统优化调度

说明书 免费:https://download.csdn.net/download/qq_50594161/87625438 MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度 关键词:用户舒适度 综合能源 PMV 优化调度 参考文档:《冷热电气多能互补的微能源网鲁…

点击开关按钮,js实现电灯开关效果

初识js,跟大家分享js实现电灯开关灯效果的具体代码,利用简单的htmljs模拟电灯开关的小案例。 首先进行案例分析: 1.获取图片属性 2.判断变量的值 3.点击时切换图片 通过点击按钮实现电灯开关 以下是两张需要的图片,接下来添加…

vue3路由配置及路由跳转传参

1、安装路由 npm i vue-router 2、编写需要展示的路由 在src目录下创建pages文件夹&#xff0c;里面创建两个vue文件命名为student.vue,person.vue 分别编写两个vue文件 student.vue和person.vue <template>学生 </template><script setup></script…

后端架构token授权认证机制:spring security JSON Web Token(JWT)简例

后端架构token授权认证机制&#xff1a;spring security JSON Web Token&#xff08;JWT&#xff09;简例 在基于token的客户端-服务器端认证授权以前&#xff0c;前端到服务器端的认证-授权通常是基于session&#xff0c;自从token机制出现并流行起来后&#xff0c;基于token…

微信小程序详细登录流程(图解+代码流程)

&#x1f482; 个人网站:【紫陌】【笔记分享网】&#x1f485; 想寻找共同学习交流、共同成长的伙伴&#xff0c;请点击【前端学习交流群】微信小程序的登录和web端的登录有一点是不同的&#xff0c;小程序需要和微信的服务通信验证。1.小程序登录流程官网图官网图地址2.认识op…

【node进阶】深度解析Express框架--路由、中间件

✅ 作者简介&#xff1a;一名普通本科大三的学生&#xff0c;致力于提高前端开发能力 ✨ 个人主页&#xff1a;前端小白在前进的主页 &#x1f525; 系列专栏 &#xff1a; node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 &#x1f340; 学习格言: ☀️ 打不倒你的会使你更强&a…

完全卸载vscode

背景 由于插件崩溃、不正确操作等导致vscode出现异常现象&#xff0c;如&#xff1a;代码高亮失效、无法进行转到定义等&#xff0c;此时的vscode就需要重新完全卸载删除再安装&#xff0c;恢复初始化。 步骤 1、卸载vscode&#xff1a; 任何方法都可以&#xff0c;比如win…

vue 遍历数组

1.forEach(): 遍历数组 需要一个回调函数作为参数 回调函数的形参: ①. value: 遍历数组的内容 ②.index: 对应数组的索引 ③.array: 数组本身 forEach() 方法主要是用于调用数组的每个元素&#xff0c;并将元素传递给回调函数。 注:对于空数组不会执行回调函数 语法: ar…

jsoup 框架的使用指南

概述 参考&#xff1a; 官方文档jsoup的使用JSoup教程jsoup 在 GitHub 的开源代码 概念简介 jsoup 是一款基于 Java 的 HTML 解析器&#xff0c;它提供了一套非常省力的 API&#xff0c;不但能直接解析某个 URL 地址、HTML 文本内容&#xff0c;而且还能通过类似于 DOM、CS…

刷题日常计~JS①

作者 : SYFStrive 博客首页 : 点击跳转HomePage &#x1f4dc;&#xff1a; 初编程JavaScript之每天10题 &#x1f449; 从质变到量变&#x1f4aa; &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f5…

Vue常见报错及解决方案

写代码的过程中一定会遇到报错&#xff0c;遇到报错不要担心&#xff0c;认真分析就可以解决报错&#xff0c;同时积累经验&#xff0c;早日成为大牛&#x1f44d; 本文会整理一些在编码过程中遇到的常见报错&#xff0c;共同学习。 一、报错结构 二、常见问题总结及解决方法 …

微信小程序跳转外部链接

微信小程序跳转外部链接 在开发小程序过程中&#xff0c;我们可能会有这样的需求&#xff0c;在小程序中打开H5或者外部链接 实现方法如下&#xff1a; 1、配置业务域名 小程序管理后台——开发(开发管理)——开发设置&#xff1a;新增业务域名 在这里将你需要的外部链接域…

超详细的正则表达式的使用方法,学不会找我

正则表达式的基本使用 前言&#xff1a; 在我们开发过程中&#xff0c;有很多地方需要用到正则表达式。如验证用户登录信息、手机号、邮箱地址等等。那你都会正则表达式的哪几个方法呢&#xff1f; 首先&#xff0c;我们要知道什么是正则表达式。 正则表达式的定义&#xff…

节流还在用JS吗?CSS也可以实现哦

函数节流是一个我们在项目开发中常用的优化手段&#xff0c;可以有效避免函数过于频繁的执行。一般函数节流用在scroll页面滚动&#xff0c;鼠标移动等。 为什么需要节流呢&#xff0c;因为触发一次事件就会执行一次事件&#xff0c;这样就形成了大量操作dom,会出现卡顿的情况…

ES6模块化(默认导入导出、按需导入导出、直接导入)

一、介绍ES6模块化 ES6 模块化规范是浏览器端与服务器端通用的模块化规范&#xff0c;ES6模块化的出现前端开发者不再需要额外的学习其他的模块化规范。 二、ES6 模块化规范中定义&#xff1a; 1.每个 js 文件都是一个独立的模块 2.导入其它模块成员使用 import 关键字 3.向外…

React组件——类组件

一、组件的概念 使用组件的方式进行编程&#xff0c;可以提高开发效率&#xff0c;提高组件的复用性、提高代码的可维护性和可扩展性 React定义组件的方式有两种 类组件:React16.8版本之前几乎React使用的都是类组件 函数组件:React16.8之后&#xff0c;函数式组件使用的越…