【ACL 2023】Enhancing Document-level EAE with Contextual Clues and Role Relevance

【ACL 2023】Enhancing Document-level Event Argument Extraction with Contextual Clues and Role Relevance

论文:https://aclanthology.org/2023.findings-acl.817/

代码:https://github.com/LWL-cpu/SCPRG-master

Abstract

与句子级推理相比,文档级事件论元抽取在长输入和跨句推理方面提出了新的挑战。然而,大多数先前的工作都集中在捕捉每个事件中候选论元和事件触发词之间的关系,忽略了两个关键点:a)非论元上下文线索信息;b) 论元角色之间的相关性。在本文中,我们提出了一个SCPRG(基于跨度触发词的上下文池化和潜在角色引导)模型,该模型包含两个新颖有效的模块来解决上述问题。基于跨度触发的上下文池化(STCP)基于预训练模型中特定论元-触发词对的上下文注意力权重,自适应地选择和聚合非论元线索词的信息。基于角色的潜在信息引导(RLIG)模块构建潜在角色表示,使其通过角色交互编码进行交互,以获取语义相关性,并将其合并为候选论点。与基本模型相比,STCP和RLIG都引入了不超过1%的新参数,并且可以很容易地应用于其他事件抽取模型,这些模型紧凑且可移植。在两个公共数据集上的实验表明,我们的SCPRG优于以前最先进的方法,在RAMS和WikiEvents上分别改进了1.13 F1和2.64 F1。进一步的分析说明了我们模型的可解释性。

Introduction

然而,先前所有SOTA的作品都忽略了两个关键点:(a)非论元的线索信息;(b) 论点角色之间的相关性。

非论元线索是除目标论元外的上下文文本,可以为预测许多复杂的论元角色提供重要的指导信息。例如,在图1中,对于Conflict and Attack事件,非论元线索被detonated, claim responsibility 和 terrorist attack可以为识别论元explosive belts和Islamic State提供重要的线索信息。然而,以前的许多工作只使用了经过预训练的Transformer编码器隐式获取全局上下文信息,忽略了对于事件中出现的不同论元,他们应该关注与实体和目标事件高度相关的上下文信息。因此,在本文中,我们设计了一个基于跨度触发词的上下文池化(STCP)模块,该模块基于预训练模型中的上下文注意力乘积,将每个论元-触发词对的非论元线索的信息合并,用额外的相关上下文信息增强候选论元的表示。

一些论元角色具有密切的语义相关性,这有利于论元抽取。例如,在图1中,角色injurer和victim之间存在密切的语义相关性,这可以为目标事件Conflict and Attack中这两个角色的论点抽取提供重要的信息指导。此外,许多角色共同发生在多个事件中,这可能具有密切的语义相关性。具体而言,我们统计并可视化了图2中RAMS数据集中15个最频繁角色之间的共现频率。例如,attacker, target 和 instrument的角色经常同时出现,这表明它们在语义上比其他角色更相关。在本文中,我们提出了一个基于角色的潜在信息引导(RLIG)模块,该模块由角色交互编码和角色信息融合组成。具体来说,我们设计了一个角色交互编码器,将角色添加到输入序列中,其中角色嵌入不仅可以学习角色的潜在语义信息,还可以捕捉角色之间的语义相关性。然后,通过池化和串联操作将潜在的角色嵌入合并到候选论元中,为文档级EAE提供信息指导。

针对上述两个问题,本文分别提出了一个有效的文档级EAE模型SCPRG(Span-trigger-based Contextual Pooling and Role-based Potential information Guidance),该模型包含STCP模块和RLIG模块。值得注意的是,这两个模块利用了来自预训练的语言模型的学习良好的注意力权重,引入了不超过1%的新参数,并且很容易应用于其他紧凑且可移植的事件抽取模型。此外,我们试图通过排除有争议的不可能跨度来消除噪声信息。我们的贡献总结如下:

  • 我们提出了一个基于跨度触发词的上下文池化模块,该模块自适应地选择和聚合非论元线索的信息,用相关的上下文信息增强候选论元的表示。
  • 我们提出了一个基于角色的潜在信息指导模块,该模块提供包含角色之间语义相关性的潜在角色信息指导。
  • 大量实验表明,SCPRG的性能优于之前的最新模型,在公共RAMS和WikiEvents数据集上分别提高了1.13 F1和2.64 F1。我们进一步分析了注意力权重和潜在角色表征,这表明了我们模型的可解释性。

Method

文档级时间论元抽取可以作为一个多分类问题。给出一个文档 D D D包含 N N N个单词, D = { w 1 , w 2 , … , w N } D=\{ w_1,w_2,\dots,w_N \} D={w1,w2,,wN},预定义的事件类型集合 E \mathcal{E} E,对应的论元角色集合 R e \mathcal{R}_e Re,触发词 t ∈ D t \in D tD,每一个事件 e ∈ E e \in \mathcal{E} eE。该任务的目的是预测出文档 D D D中的所有事件对 ( r , s ) (r,s) (r,s)。其中 r ∈ R e r \in \mathcal{R}_e rRe是事件 e ∈ E e \in \mathcal{E} eE的论元角色, s ⊆ D s \subseteq D sD

Role-interactive Encoder

Role Type Representation:为了捕捉角色之间的语义相关性,我们将角色类型信息添加到输入序列中,并通过多头注意力在上下文和角色之间进行交互,从而在共享的知识空间中获得上下文和角色的表示。具体来说,我们在预训练的模型中构建具有不同特殊标记的角色的潜在嵌入,其中每个角色类型都有特定的潜在表示。考虑到角色名称也包含有价值的语义信息,我们用特殊的角色类型标记包裹角色名称,并将起始特殊标记的嵌入作为角色嵌入。以角色Place为例,我们最终将其表示为[R0] Place [R0],其中[R0]是 Place 的特殊角色类型表征。

Role-interactive Encoding:对于输入文档 D = { w 1 , w 2 , … , w N } D=\{ w_1,w_2,\dots,w_N\} D={w1,w2,,wN},目标事件 e e e和其对应的论元角色集合 R e = { r 1 , r 2 , r 3 , … } \mathcal{R}_e =\{ r_1,r_2,r_3,\dots\} Re={r1,r2,r3,},我们将其连接成一个序列:
S = [ C L S ] [ E e ] e [ E e ] [ S E P ] w 1 … w N [ S E P ] [ R 1 ] r 1 [ R 2 ] r 2 … [ S E P ] S =[CLS]\ [E_e]\ e\ [E_e]\ [SEP] \ w_1 \dots\ w_N \ [SEP]\ [R1] \ r_1 \ [R2]\ r_2 \dots [SEP] S=[CLS] [Ee] e [Ee] [SEP] w1 wN [SEP] [R1] r1 [R2] r2[SEP]
[ E e ] [E_e] [Ee]是事件 e e e的特殊事件token, [ R 1 ] , [ R 2 ] [R1],[R2] [R1],[R2]是角色类型 r 1 , r 2 r_1,r_2 r1,r2的特殊token。最后的 [ S E P ] [SEP] [SEP]来表示无类别。接下来,我们利用预训练的语言模型作为编码器来获得每个token的嵌入,如下所示:
H s = E n c o d e r ( S ) H^s=Encoder(S) Hs=Encoder(S)
然后我们获取 [ E e ] [E_e] [Ee]的事件嵌入 H e ∈ R 1 × d H^e \in \mathbb{R}^{1 \times d} HeR1×d,上下文表示 H w ∈ R l w × d H^w \in \mathbb{R}^{l_w \times d} HwRlw×d,角色表示 H r ∈ R l r × d H^r \in \mathbb{R}^{l_r \times d} HrRlr×d,其中 l w l_w lw是分词列表的长度, l r l_r lr是角色列表的长度。对于长度超过512的输入序列,我们利用动态窗口对整个序列进行编码,并对不同窗口的重叠token嵌入进行平均,以获得最终表示。

值得注意的是,通过角色交互编码,角色嵌入可以捕捉语义相关性并适应目标事件和上下文,从而更好地指导论元抽取。

Span-Trigger-based Contextual Pooling

Argument-impossible Spans Exclusion:为了消除无用跨度的噪声信息,我们通过排除一些有争议的不可能跨度来减少候选跨度的数量,例如在中间的跨度。有了这样的改进,我们平均减少了四分之一的候选跨度并使我们的模型关注具有有用信息的候选跨度。

Span-Trigger-based Contextual Pooling: 对于从 w i w_i wi w j w_j wj的候选跨度,大多数以前的基于跨度的方法通过该跨度内token的隐藏状态的平均池化来表示: 1 j − i + 1 ∑ k = i j h k w \frac{1}{j-i+1} \sum_{k=i}^j h_k^w ji+11k=ijhkw,其中 h k w h_k^w hkw是从 H w H^w Hw嵌入的第 k k k个token。

然而,平均池化表示忽略了其他非论元词的重要线索信息。尽管预训练编码器的自注意机制可以对token级交互进行建模,但这种全局交互是特定于事件和候选论元的。因此,我们建议选择并融合与由候选跨度和事件触发词组成的每个元组高度相关的有用上下文信息,即 ( s i : j , t ) (s_{i:j},t) (si:j,t)。我们直接利用预训练的基于Transformer的编码器的注意力头进行基于跨度触发词的上下文池化,这将从预训练的语言模型中转移学习良好的依赖关系,而无需从头开始学习新的注意力层。

具体来说,我们在预训练的语言模型中使用来自最后一个Transformer的上下文的token级注意力头 A w ∈ R H × l w × l w A^w∈\mathbb{R}^{H \times l_w \times l_w} AwRH×lw×lw。然后,我们可以通过平均池化获得从 w i w_i wi w j w_j wj的每个候选跨度的上下文注意力 A i : j C ∈ R l w A^C_{i:j}∈\mathbb{R}^{l_w} Ai:jCRlw
A i : j C = 1 H ( j − i + 1 ) ∑ h = 1 H ∑ m = i j A h , m w A_{i:j}^C=\frac{1}{H(j-i+1)} \sum_{h=1}^H \sum_{m=i}^j A_{h,m}^w Ai:jC=H(ji+1)1h=1Hm=ijAh,mw
然后,对于跨度触发词对 ( s i : j , t ) (s_{i:j},t) (si:j,t),我们通过乘以注意力和归一化来获得对候选跨度重要的上下文线索信息 c s i : j ∈ R d c^{s_{i:j}}∈\mathbb{R}^d csi:jRd
p i : j c = s o f t m a x ( A i : j C ⋅ A t C ) , c s i : j = H w p i : j c p_{i:j}^c=softmax(A_{i:j}^C \cdot A_t^C),\\ c^{s_{i:j}}=H^w p_{i:j}^c pi:jc=softmax(Ai:jCAtC),csi:j=Hwpi:jc
A t c ∈ R l w A_t^c \in \mathbb{R}^{l_w} AtcRlw是触发词 t t t的上下文注意力, p i : j c ∈ R l w p_{i:j}^c \in \mathbb{R}^{l_w} pi:jcRlw是上下文的计算注意力权重向量。

Role-based Latent Information Guidance

RLIG模块通过角色交互编码构建潜在角色嵌入,并通过池化操作进行角色信息融合,为潜在角色信息提供有价值的指导。

Role Information Fusion:为了使每个候选论点都能得到有用的角色信息指导,我们修改了基于跨度触发的上下文池方法,以自适应地选择角色信息。通过上下文池化得到 s i : j s_{i:j} si:j的潜在角色信息 r s i : j ∈ R d r^{s_{i:j}}\in \mathbb{R}^d rsi:jRd
A i : j R = 1 H ( j − i + 1 ) ∑ h = 1 H ∑ m = i j A h , m r , p i : j r = s o f t m a x ( A i : j R ⋅ A t R ) , r s i : j = H r p i : j r A_{i:j}^R=\frac{1}{H(j-i+1)} \sum_{h=1}^H \sum_{m=i}^j A_{h,m}^r,\\ p_{i:j}^r=softmax(A_{i:j}^R \cdot A_t^R),\\ r^{s_{i:j}}=H^r p_{i:j}^r Ai:jR=H(ji+1)1h=1Hm=ijAh,mr,pi:jr=softmax(Ai:jRAtR),rsi:j=Hrpi:jr
A r ∈ R H × l w × l r A^r \in \mathbb{R}^{H \times l_w \times l_r} ArRH×lw×lr是来自预训练语言模型中最后一个transformer层的角色的注意力。 A i : j R ∈ R l r A^R_{i:j} \in \mathbb{R}^{l_r} Ai:jRRlr是每个候选跨度的角色注意力, A t R ∈ R l r A^R_t \in \mathbb{R}^{l_r} AtRRlr是触发词 t t t的角色注意力。 p i : j r ∈ R l r p^r_{i:j} \in \mathbb{R}^{l_r} pi:jrRlr为角色的计算注意力权重向量。

对于候选跨度 s i : j s_{i:j} si:j,我们如下融合平均池化表示、上下文线索信息 c s i : j c^{s_{i:j}} csi:j和潜在角色信息 r s i : j r^{s_{i:j}} rsi:j
s i : j = tanh ⁡ ( W 1 [ 1 j − i + 1 ∑ k = i j h k w ; c s i : j ; r s i : j ] ) s_{i:j}=\tanh (W_1 [\frac{1}{j-i+1} \sum_{k=i}^{j} h_k^w;c^{s_{i:j}};r^{s_{i:j}}]) si:j=tanh(W1[ji+11k=ijhkw;csi:j;rsi:j])
W 1 ∈ R 3 d × d W_1 \in \mathbb{R}^{3d \times d} W1R3d×d是可学习参数。

Classification Module

Boundary Loss:由于我们抽取跨度级别的论元,其边界可能是模糊的,因此我们使用全连接神经网络构建开始和结束表示,以增强候选跨度的表示: H s t a r t = W s t a r t H s H^{start}=W^{start}H^{s} Hstart=WstartHs H e n d = W e n d H s H^{end}=W^{end}H^s Hend=WendHs,其中 H s H^s Hs是输入序列 S S S的隐藏表示。在此基础上,我们通过将上下文和角色信息与基于跨度触发词的上下文池化集成来增强开始和结束表示,如下所示:
z i : j s t a r t = H s t a r t p i : j , z i : j e n d = H e n d p i : j , h i : j s t a r t = tanh ⁡ ( W 2 [ h i s t a r t ; z i : j s t a r t ] ) , h i : j e n d = tanh ⁡ ( W 3 [ h j e n d ; z i : j e n d ] ) z_{i:j}^{start}=H^{start}p_{i:j},\\ z_{i:j}^{end}=H^{end}p_{i:j},\\ h_{i:j}^{start}=\tanh(W_2[h_i^{start};z_{i:j}^{start}]),\\ h_{i:j}^end=\tanh(W_3[h_j^{end};z_{i:j}^{end}]) zi:jstart=Hstartpi:j,zi:jend=Hendpi:j,hi:jstart=tanh(W2[histart;zi:jstart]),hi:jend=tanh(W3[hjend;zi:jend])
h i s t a r t , h j e n d h_i^{start},h_j^{end} histart,hjend H s t a r t , H e n d H^{start},H^{end} Hstart,Hend的第 i , j i,j i,j个向量。 W 2 , W 3 ∈ R 2 d × d W_2,W_3 \in \mathbb{R}^{2d \times d} W2,W3R2d×d是可学习参数,我们获得最终的候选片段表征 s ~ i : j \tilde{s}_{i:j} s~i:j s ~ i : j = W s [ h i : j s t a r t ; s i : j ; h i : j e n d ] \tilde{s}_{i:j} = W^s[h_{i:j}^{start};s_{i:j};h_{i:j}^{end}] s~i:j=Ws[hi:jstart;si:j;hi:jend] W s ∈ R 3 d × d W^s \in \mathbb{R}^{3d \times d} WsR3d×d是可学习参数。

最终的边界损失被定义去检测开始和结束位置:
L b = ∑ i = 1 ∣ D ∣ [ y i s log ⁡ P i s + ( 1 − y i s ) log ⁡ ( 1 − P i s ) + y i e log ⁡ P i e + ( 1 − y i e ) log ⁡ ( 1 − P i e ) ] \mathcal{L}_b=\sum_{i=1}^{|\mathcal{D}|}[y_i^s \log P_i^s + (1-y_i^s) \log (1-P_i^s)+y_i^e \log P_i^e + (1-y_i^e) \log (1-P_i^e)] Lb=i=1D[yislogPis+(1yis)log(1Pis)+yielogPie+(1yie)log(1Pie)]
其中 y i s y^s_i yis y i e y^e_i yie表示标准标注,并且 P i s = s i g m o i d ( W 4 h i s t a r t ) P^s_i=sigmoid(W_4h^{start}_i) Pissigmoid(W4histart) P i s = s i g m o i d ( W 5 h i e n d ) P^s_i=sigmoid(W_5h^{end}_i) Pissigmoid(W5hiend)是单词 w i w_i wi被预测为正确论元跨度的第一个或最后一个单词的概率。

Classification Loss:对于事件 e e e中的候选跨度 s i : j s_{i:j} si:j,我们将跨度表示 s ~ i : j \tilde{s}_{i:j} s~i:j、触发词表示 h t h_t ht、它们的绝对差 ∣ h t − s ~ i : j ∣ |h_t−\tilde{s}_{i:j}| hts~i:j、逐元素乘法 h t ⊙ s ~ i : j h_t \odot \tilde{s}_{i:j} hts~i:j,事件类型嵌入 H e H^e He和跨度长度嵌入 E l e n E_{len} Elen连接起来,并通过前馈网络获得候选跨度 s i : j s_{i:j} si:j的预测 P ( r i : j ) P(r_{i:j}) P(ri:j)
I i : j = [ s ~ i : j ; h t ; ∣ h t − s ~ i : j ∣ ; h t ⊙ s ~ i : j ; H e ; E l e n ] , P ( r i : j ) = F F N ( I i : j ) I_{i:j}=[\tilde{s}_{i:j};h_t;|h_t - \tilde{s}_{i:j}|;h_t \odot \tilde{s}_{i:j};H^e;E_{len}],\\ P(r_{i:j})=FFN(I_{i:j}) Ii:j=[s~i:j;ht;hts~i:j;hts~i:j;He;Elen],P(ri:j)=FFN(Ii:j)
考虑到大多数候选论点都是负样本和不平衡的角色分布,我们采用focal loss来使训练过程更多地关注有用的正样本,其中 α α α γ γ γ是超参数。
L c = − ∑ i = 1 ∣ D ∣ ∑ j = 1 ∣ D ∣ α [ 1 − P ( r i : j = y i : j ) ] γ ⋅ log ⁡ P ( r i : j = y i : j ) \mathcal{L}_c=-\sum_{i=1}^{|\mathcal{D}|} \sum_{j=1}^{|\mathcal{D}|} \alpha [1-P(r_{i:j}=y_{i:j})]^{\gamma} \cdot \log P(r_{i:j}=y_{i:j}) Lc=i=1Dj=1Dα[1P(ri:j=yi:j)]γlogP(ri:j=yi:j)
最后,训练损失被定义如下:
L = L c + λ L b \mathcal{L}=\mathcal{L}_c + \lambda \mathcal{L}_b L=Lc+λLb

Experiments






Conclusion

在本文中,我们提出了一种新的用于文档级EAE的SCPRG框架,该框架主要由两个紧凑、有效且可移植的模块组成。具体来说,我们的STCP自适应地聚合了非论元线索词的信息,RLIG提供了包含角色之间语义相关性的潜在角色信息指导。实验结果表明,SCPRG的性能优于现有最先进的EAE模型和进一步的分析表明,我们的方法既有效又可解释。对于未来的工作,我们希望将SCPRG应用于更多的信息抽取任务,如关系抽取和多语言抽取,其中上下文信息发挥着重要作用。

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

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

相关文章

ZigBee学习——在官方例程基础实现点灯

IAR版本 :10.10.1 Z-stack版本 :3.0.2 文章目录 一、买的板子原理图二、实现过程2.1 重定义LED的物理映射(HAL层)2.2 创建LED事件(应用层)2.2.1 定义用户事件2.2.2 修改zclGenericApp_event_loop() 2.3 触发事件 一、买的板子原理图 二、实现过程 2.1 重定义LED的物理映射(HAL…

服务攻防-端口协议桌面应用QQWPS等RCEhydra口令猜解未授权检测

知识点: 1、端口协议-弱口令&未授权&攻击方式等 2、桌面应用-社交类&文档类&工具类等 章节点: 1、目标判断-端口扫描&组合判断&信息来源 2、安全问题-配置不当&CVE漏洞&弱口令爆破 3、复现对象-数据库&中间件&…

使用Logstash将MySQL中的数据同步至Elasticsearch

目录 1 使用docker安装ELK 1.1 安装Elasticsearch 1.2 安装Kibana 1.3 安装Logstash 2 数据同步 2.1 准备MySQL表和数据 2.2 运行Logstash 2.3 测试 3 Logstash报错(踩坑)记录 3.1 记录一 3.1.1 报错信息 3.1.2 报错原因 3.1.3 解决方案 3.2 记录二 3.2.1 报错信…

图像异或加密、解密的实现

很多论文提到了从左上角开始做异或,逐行推导得到结果。 解密过程是加密的逆过程。 先看其基本方法: 参考文献: A Chaotic System Based Image Encryption Scheme with Identical Encryption and Decryption Algorithm 大多数论文都用了这个思路,我们使用MATLAB实现代码…

Leetcode 热门百题斩(第一天)

介绍 针对leetcode的热门一百题,解决大多数实习生面试的基本算法题。通过我自己的思路和多种方法,供大家参考。 1.两数之和(题号:1) 方法一 最先想到的就是两个for去遍历匹配。 class Solution {public int[] twoSum(int[]…

重写Sylar基于协程的服务器(2、配置模块的设计)

重写Sylar基于协程的服务器(2、配置模块的设计) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模…

vue3使用is动态切换组件报错Vue received a Component which was made a reactive object.

vue3使用is动态切换组件,activeComponent用ref定义报错 Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with markRaw or using shallowRef ins…

cesium 多边形渐变颜色

cesium画一个渐变颜色的多边形 方式一:用一张颜色渐变的图片作为材质,结合color属性,可设置多边形的颜色,达到渐变效果。图片指向正北方向。 viewer.entities.add({polygon: {hierarchy: Cesium.Cartesian3.fromDegreesArray([115…

bs4模块

bs4模块与案例 使用指南 bs4,全称BeautifulSoup 4,是Python中一个强大的网页解析库,它可以帮助我们方便地从网页中提取数据。bs4将复杂HTML文档转换成树形结构,每个节点都是Python对象,所有对象可以归纳为4种&#xf…

【PaddleSpeech】语音合成-男声

环境安装 系统:Ubuntu > 16.04 源码下载 使用apt安装 build-essential sudo apt install build-essential 克隆 PaddleSpeech 仓库 # github下载 git clone https://github.com/PaddlePaddle/PaddleSpeech.git # 也可以从gitee下载 git clone https://gite…

EBC金融英国CEO:高波动性周期下,如何寻找市场的稳定性?

利率主导的市场,将在2024年延续。目前,固收市场对于降息的定价,正通过利率传导至不同资产中。尽管市场迫切利用通胀去佐证降息,但各国央行仍囿于通胀目标的政策桎梏。政策和市场预期的博弈将继续牵动市场脉搏,引发价格…

基于SSM+MySQL的的新闻发布系统设计与实现

目录 项目简介 项目技术栈 项目运行环境 项目截图 代码截取 源码获取 项目简介 新闻发布系统是一款基于Servletjspjdbc的网站应用程序,旨在提供一个全面且高效的新闻发布平台。该系统主要包括后台管理和前台新闻展示两个平台,涵盖了新闻稿件的撰写…

充电桩项目实战:搞定多数据源!

你好,我是田哥 最近,我在对充电桩项目进行微服务升级中,既然是项目升级,难免会遇到各种各样的问题。比如:分布式事务问题、多数据源问题、分布式锁问题等。 项目技术栈: SpringSpring BootSpring Cloud Ali…

JavaScript基础(二)—— 运算符、表达式与语句(if、switch、循环)

学习目标: 掌握常见运算符,为程序“能思考”做准备 掌握分支语句,让程序具备判断能力 掌握循环语句,让程序具备重复执行能力 一、运算符 1. 赋值运算符 对变量进行赋值的运算符,能够使用赋值运算符简化代码。 …

推荐系统|概要03_AB测试

文章目录 A/B测试问题流量不够用解决方案——分层实验 Holdout 机制 A/B测试 其中小流量是指对部分的用户先尝试改进的算法模型,而非全部。若为全部,如果算法模型存在问题,可能会导致用户体验差,导致用户流失,而小流量…

深入探究iframe:网页嵌入的魔法盒子(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

DATAX改造支持geometry类型数据同步

数据库使用postgresql安装了postgis插件存储了geometry空间数据,想使用datax做数据同步,但datax本身不支持geometry类型数据,如何改造呢? 1.首先下载已改造支持geometry类型的datax引擎,下载地址 https://download.c…

Jmeter性能测试: Jmeter 5.6.3 分布式部署

目录 一、实验 1.环境 2.jmeter 配置 slave 代理压测机 3.jmeter配置master控制器压测机 4.启动slave从节点检查 5.启动master主节点检查 6.运行jmeter 7.观察jmeter-server主从节点变化 二、问题 1.jmeter 中间请求和响应乱码 一、实验 1.环境 (1&#…

oracle数仓rac两个节点查询耗时不一致问题处理

问题描述 数据库节点1查询比节点2查询慢。现场操作应用发现发现同一sql语句在节点2上只要2分钟左右,在节点1,该条sql执行要超过30分钟。 处理过程 根据问题,初步判断是由于错误的执行计划,导致性能问题,但实际上对两…

编程流程图

对于复杂流程,我做开发之前一般会 先画一下流程图。特别是多个部门有交叉的情况下: processOn: 这个是我之前 一直的选择,他可以画上面的这些,流程图,网页操作,但是他不是免费的,查过…