未标注目标语料是否均适合用于跨语言学习?『基于对抗判别器高效利用未标注语料的跨语言NER算法AdvPicker』_iofu728的博客-程序员宅基地

技术标签: Cross-lingual  NLP  对抗学习  

本文公式较多,建议转至博客阅读
(再过几个小时今年的 ACL 就要来了,赶在 ddl 之前,

简单介绍一下韦乐,我,千惠,Börje,Yi Guan 等人在 ACL21 上的这篇工作。

AdvPicker: Effectively Leveraging Unlabeled Data via Adversarial Discriminator for Cross-Lingual NER (ACL-IJCNLP 2021)

Weile Chen, Huiqiang Jiang, Qianhui Wu, Börje F. Karlsson, Yi Guan.

Code in Github

Motivation

事实上,经济实力注定会影响所有科技技术发展的进程。
对于如今大火的标注资源敏感型的一系列深度学习任务,这种冲突更为明显。
迁移学习、自学习、对比学习等方法有效解决了很大一部分问题,但这些方法往往需要大量数据,且仅适用于少量任务或者不能完全解决下游任务问题。

而在拥有丰富高质量的英语语料下(其实还是少数 domain),FLAT NER 任务已经能够做到比较高的准确率,如何将这种能力合适的迁移到其他低资源,甚至无资源的目标语言中,是一个很有挑战性的问题。
之前的工作按照算法设计角度,可以分为着重构造一个能够扑捉跨语言特征的模型的 Feature-based methods 和着重构造目标语言数据标注的 Labeling-based methods。
其中,Feature-based methods 可以通过 mBERT、Meta-learning、Adapter 等方式实现,Labeling-based methods 又可分为 Soft-label 和 Hard-label,可通过预训练好的翻译模型,也可通过利用 Distillation 来实现。

但是这些方法都假设所有未标注语料都具有这种跨语言特性,都适合来做迁移学习,这是一个开放的问题。
我们直觉告诉我们就如同高质量标注数据也存在大量噪声一样(可以用 Co-teaching 的方式来解决),未标注目标语言数据也不应该全部适用跨语言训练中。

本文的目标是设计一个能够与模型蕴含的与语言无关特征一致的数据判别器。

AdvPicker

image

如何去构造这样的一个判别器?既然我们的目标是扑捉 Language-independent 的信息,那么就应该让模型避免拥有 Language-specific 的能力。

这种能力又如何来衡量呢?首先,我们想到的是如果 freeze 掉模型的参数,在模型下游加一个 FFN 去做判断语料来源任务(2 分类任务,0-源语料,1-目标语料),如果模型能很容易判断这个任务的话,就说明模型对于 Language-specific 的特征学习的很好。

简单在 mBERT 和源语言上 Fine-tune 的 mBERT-ft 两个模型上进行测试,如下表所示。

de es nl Avg mBERT 99.08 % 99.66 % 98.98 % 99.24 % mBERT-ft 98.38 % 98.66 % 97.27 % 98.10 % mBERT-TLADV 79.62 % 82.89 % 77.45 % 79.99 % \begin{array}{c|cccc} \hline & \textbf{de} & \textbf{es} & \textbf{nl} & \textbf{Avg} \\ \hline \text{mBERT} & 99.08\% & 99.66\% & 98.98\% & 99.24\% \\ \text{mBERT-ft} & 98.38\% & 98.66\% & 97.27\% & 98.10\% \\ \text{mBERT-TLADV} & 79.62\% & 82.89\% & 77.45\% & 79.99\% \\ \hline \end{array} mBERTmBERT-ftmBERT-TLADVde99.08%98.38%79.62%es99.66%98.66%82.89%nl98.98%97.27%77.45%Avg99.24%98.10%79.99%

上述实验说明(先忽略第三行),在默认或者 Fine-tune 情况下,模型拥有极强的 Language-specific 能力。
这也就导致了直接拿来做迁移学习的话,会导致 Student Model 学习到的基本上都是 Langauge-specific 特征,这不是我们想看到的。

如何去降低这种源模型对于 Language-specific 特征过于敏感的情况,我们想到的是利用对抗学习+多任务,使得源模型在源语言上做 Fine-tune 的同时, 式1,对抗的去学习一个 Token 粒度的语言判别器(Token-levl Adv, TLADV), 式2,即模型流程图的图(a)部分。
整体目标就是使得模型即学习到 Task-specific 的 NER 特征,又能降低学习源语言 Specific 的特征。

P θ ( Y NER ) = softmax ( W NER h + b NER ) \mathcal{P}_{\theta}({\boldsymbol{Y}}^{\text{NER}}) = \text{softmax}(\boldsymbol{W}^{\text{NER}}\boldsymbol{h} + \boldsymbol{b}^{\text{NER}}) Pθ(YNER)=softmax(WNERh+bNER)

P θ ( Y DIS ) = σ ( W DIS1 ReLU ( W DIS2 h ) ) \mathcal{P}_{\theta}({\boldsymbol{Y}}^{\text{DIS}}) = \sigma(\boldsymbol{W}^{\text{DIS1}}\text{ReLU}(\boldsymbol{W}^{\text{DIS2}} \boldsymbol{h})) Pθ(YDIS)=σ(WDIS1ReLU(WDIS2h))

其中 h = E ( x ) \boldsymbol{h} = {\boldsymbol{E}}(\boldsymbol{x}) h=E(x)为 Encoder, W x \boldsymbol{W}^{\text{x}} Wx为可学习参数, P θ ( Y X ) \mathcal{P}_{\theta}({\boldsymbol{Y}}^{\text{X}}) Pθ(YX)任务输出概率估计。

一开始想的挺美好的,但是 Adversarial Learning 的调参过于玄学,此处省略无数实验 work,也许以后可以用 NNI 这种来完成这种工作。

L E = − 1 N ∑ i ∈ [ 1 , N ] log ⁡ P θ ( Y i DIS = y ~ i DIS ) + log ⁡ P θ ( Y i DIS = y i DIS ) \mathcal L^{\text{E}} = - \frac{1}{N} \sum_{i \in [1, N]} \log{\mathcal{P}_{\theta}(Y^{\text{DIS}}_{i} = {\widetilde{y}}^{\text{DIS}}_{i})} + \log{\mathcal{P}_{\theta}(Y^{\text{DIS}}_{i} = {y}^{\text{DIS}}_{i})} LE=N1i[1,N]logPθ(YiDIS=y iDIS)+logPθ(YiDIS=yiDIS)

L DIS = − 1 N ∑ i ∈ [ 1 , N ] log ⁡ P θ ( Y i DIS = y i DIS ) + log ⁡ P θ ( Y i DIS = y ~ i DIS ) \mathcal L^{\text{DIS}} = - \frac{1}{N} \sum_{i \in [1, N]} \log{\mathcal{P}_{\theta}(Y^{\text{DIS}}_{i} = y^{\text{DIS}}_{i})} + \log{\mathcal{P}_{\theta}(Y^{\text{DIS}}_{i} = {\widetilde{y}}^{\text{DIS}}_{i})} LDIS=N1i[1,N]logPθ(YiDIS=yiDIS)+logPθ(YiDIS=y iDIS)

L NER = − 1 N ∑ i ∈ [ 1 , N ] log ⁡ P θ ( Y i NER = y i NER ) \mathcal L^{\text{NER}} = - \frac{1}{N} \sum_{i \in [1, N]} \log{\mathcal{P}_{\theta}(Y^{\text{NER}}_{i} = y^{\text{NER}}_{i})} LNER=N1i[1,N]logPθ(YiNER=yiNER)

整体训练目标如上式所示,分为三个部分:

  1. L E \mathcal L^{\text{E}} LE 只更新 mBERT 参数,目标是让判别器无法正确区分语种;
  2. L DIS \mathcal L^{\text{DIS}} LDIS 只更新判别器 FFN 参数,目标是让判别器正确区分语种;
  3. L NER \mathcal L^{\text{NER}} LNER 不更新 embedding 和底下三层 Transformer 参数,目标是让判别器正确识别源语言实体;

完成上述工作之后,我们就可以获得一个在源语言上 Fine-tune 好的 NER 模型和一个语言判别器(共享一个 mBERT)。
此时拿 mBERT-TLADV 去做上述语料来源任务,这个时候它之中的 Language-specific 的特征就会明显减少。

这个时候如果我们拿 mBERT-TLADV 去做类似 UniTrans 的 Distillation 学习,其实已经是一篇工作了。
但是我们继续想,学习得到的 NER 模型和判别器还有什么用处。

对抗学习的目的是模型判断不出来语料的来源,那么对于判别器学的比较好的数据(这里应该是输出概率接近 0.5 左右的, 式3),所拥有的 Language-independent 信息相对含量(相对于学习得到的 NER 模型而言)就会偏高。
那么我们用这部分来做 Distillation 的话,跨语言学习泛化性应该更好。
这就是模型架构图中的图(b)和图部分。
当我们拿到这部分语料子集 D subset = { x subset T , y ^ subset T-NER } \mathbb{D}_{\text{subset}} = \{x^{\text T}_{\text{subset}}, \boldsymbol{\hat{y}}^{\text{T-NER}}_{\text{subset}}\} Dsubset={ xsubsetT,y^subsetT-NER}之后,利用源语言上 Fine-tune 得到的 NER 模型标注上对应的 soft label,便构造好相对应的数据。

ℓ score ( x T ) = 1 − ∥ P θ ( Y DIS , x T ) − 0.5 ∥ \ell_{\text{score}}(\boldsymbol{x}^{\text{T}}) = 1- \left\|\mathcal{P}_{\theta}({\boldsymbol{Y}}^{\text{DIS}}, \boldsymbol{x}^{\text{T}}) - 0.5\right\| score(xT)=1Pθ(YDIS,xT)0.5

知识蒸馏部分即使用在源语言上 Fine-tune 之后的 NER 模型作为 Teacher 模型 h \boldsymbol{h} h,在目标语言伪样本子集上学习一个目标语言 Student 模型 h stu T \boldsymbol{h}^{\text{T}}_{\text{stu}} hstuT
其损失函数为式4。

P θ ( Y T-NER ) = softmax ( W T-NER h stu T + b T-NER ) \mathcal{P}_{\theta}({\boldsymbol{Y}}^{\text{T-NER}}) = \text{softmax}(\boldsymbol{W}^{\text{T-NER}}\boldsymbol{h}^{\text T}_{\text{stu}} + \boldsymbol{b}^{\text{T-NER}}) Pθ(YT-NER)=softmax(WT-NERhstuT+bT-NER)

L KD = 1 N ∑ i ∈ [ 1 , N ] ( P θ ( Y T-NER ) − y ^ subset T-NER ) 2 \mathcal L^{\text{KD}} = \frac{1}{N} \sum_{i \in [1, N]} (\mathcal{P}_{\theta}({\boldsymbol{Y}}^{\text{T-NER}}) - \boldsymbol{\hat{y}}^{\text{T-NER}}_{\text{subset}}) ^ 2 LKD=N1i[1,N](Pθ(YT-NER)y^subsetT-NER)2

Experiments

在 CoNLL 语料上,对英语[en], 西班牙语[es], 荷兰语[nl]和德语[de]四种语言进行测试。
其中这些数据集的 label 都是相同的四种 PER, LOC, ORG, MISC。
除英语为有标注数据,其他语言均为未标注语料。
选用 mBERT-base 作为 backbone,在训练过程中,freeze embedding layer 和底下三层 Transformer 参数。
超参数 D subset \mathbb{D}_{\text{subset}} Dsubset子集的筛选阈值 ρ \rho ρ设定为 0.8。
(其他训练细节详见 paper)

de es nl Avg Beto 69.56 % 74.96 % 77.57 % 73.57 % mBERT-ADV 71.9 % 74.3 % 77.6 % 74.60 % Meta-Cross 73.16 % 76.75 % 80.44 % 76.78 % UniTrans* 73.61 ± 0.39 % 77.3 ‾ ± 0.78 % 81.2 ‾ ± 0.83 % 77.37 ‾ ± 0.67 % mBERT-ft 72.59 ± 0.31 % 75.12 ± 0.83 % 80.34 ± 0.27 % 76.02 ± 0.47 % mBERT-TLADV 73.89 ‾ ± 0.56 % 76.92 ± 0.62 % 80.62 ± 0.56 % 77.14 ± 0.58 % AdvPicker 75.01 ± 0.50 % 79.00 ± 0.21 % 82.90 ± 0.44 % 78.97 ± 0.38 % \begin{array}{c|cccc} \hline & \textbf{de} & \textbf{es} & \textbf{nl} & \textbf{Avg} \\ \hline \text{Beto} & 69.56\% & 74.96\% & 77.57\% & 73.57\% \\ \text{mBERT-ADV} & 71.9\% & 74.3\% & 77.6\% & 74.60\% \\ \text{Meta-Cross} & 73.16\% & 76.75\% & 80.44\% & 76.78\% \\ \text{UniTrans*} & 73.61 \pm 0.39\% & \underline{77.3} \pm 0.78 \% & \underline{81.2} \pm 0.83 \% & \underline{77.37} \pm 0.67 \% \\ \hline \text{mBERT-ft} & 72.59 \pm 0.31 \% & 75.12 \pm 0.83 \% & 80.34 \pm 0.27 \% & 76.02 \pm 0.47 \% \\ \text{mBERT-TLADV} & \underline{73.89} \pm 0.56 \%& 76.92 \pm 0.62 \% & 80.62 \pm 0.56 \% & 77.14 \pm 0.58 \%\\ \textbf{AdvPicker} & \textbf{75.01} \pm 0.50 \% & \textbf{79.00} \pm 0.21 \% & \textbf{82.90} \pm 0.44 \% & \textbf{78.97} \pm 0.38 \%\\ \hline \end{array} BetomBERT-ADVMeta-CrossUniTrans*mBERT-ftmBERT-TLADVAdvPickerde69.56%71.9%73.16%73.61±0.39%72.59±0.31%73.89±0.56%75.01±0.50%es74.96%74.3%76.75%77.3±0.78%75.12±0.83%76.92±0.62%79.00±0.21%nl77.57%77.6%80.44%81.2±0.83%80.34±0.27%80.62±0.56%82.90±0.44%Avg73.57%74.60%76.78%77.37±0.67%76.02±0.47%77.14±0.58%78.97±0.38%

上表展示了部分 Baselines 和一些对比实验结果。
考虑到 UniTrans 中使用了外部翻译模型数据,为了公平比较,此处比较的是 UniTrans 出去翻译信息的结果。
表中下划线部分为对应语言第二好的结果。
可以看出 AdvPicker 在只使用源语言标注数据和目标语言无标注数据的情况下,超过了目前存在的所有方法。
和之前 SOTA,UniTrans*对比分别在德语上超过了 1.41%,在荷兰语上超过了 1.71%。
即使是和使用了外部翻译数据的 UniTrans,AdvPicker 也是可比较的,在平均 F1 中仅差异 0.04。
相对于 mBERT-ft 和 mBERT-TLADV 在 F1 值上分别提升了 2.95%和 1.83%。

虽然上述结果可以说明 AdvPicker 在 Cross-lingual NER 任务上可以取得很不错的效果,但是我们还是想深入探究这样的操作到底改变了什么。
首先我们对对抗判别器,筛选得到的目标语言 Train Set 子集进行分析,首先看这些 Soft label 的质量高不高,即分别测试 D subset \mathbb{D}_{\text{subset}} Dsubset D ∖ D subset \mathbb{D}\setminus \mathbb{D}_{\text{subset}} DDsubset的准确率。

de es nl Avg D subset 77.87 % 76.45 % 84.33 % 79.55 % D ∖ D subset 63.83 % 69.23 % 66.97 % 66.68 % Δ 14.04 % 7.22 % 17.36 % 12.87 % \begin{array}{c|cccc} \hline & \textbf{de} & \textbf{es} & \textbf{nl} & \textbf{Avg} \\ \hline \mathbb{D}_{\text{subset}} & 77.87\% & 76.45\% & 84.33\% & 79.55\% \\ \mathbb{D}\setminus \mathbb{D}_{\text{subset}} & 63.83\% & 69.23\% & 66.97\% & 66.68\% \\ \Delta & 14.04\% & 7.22\% & 17.36\% & 12.87\% \\ \hline \end{array} DsubsetDDsubsetΔde77.87%63.83%14.04%es76.45%69.23%7.22%nl84.33%66.97%17.36%Avg79.55%66.68%12.87%

可以看出判别器筛选出来的 data 本身具有更好的 Soft label 质量。
这样也进一步提升之后的 Distillation 学习效果。
那么这样的性质是否保留到 AdvPicker 上呢,因为我们知道 Knowledge Distillation 其实也有一定筛选数据质量的能力。
相应的过程同时作用在目标语言的 Test Set 上。

D subset de D de ∖ D subset de D subset es D es ∖ D subset es D subset nl D nl ∖ D subset nl mBERT-ft 73.65 % 70.66 % 77.29 % 70.39 % 81.67 % 69.89 % mBERT-TLADV 74.05 % 72.49 % 78.04 % 73.86 % 81.83 % 77.89 % UniTrans* 74.48 % 71.71 % 77.29 % 73.18 % 83.15 % 70.39 % AdvPicker 75.11 % 73.76 % 79.19 % 75.68 % 84.19 % 79.15 % \begin{array}{c|cccccc} \hline & \mathbb{D}^{\text{de}}_{\text{subset}} & \mathbb{D}^{\text{de}}\setminus \mathbb{D}^{\text{de}}_{\text{subset}} & \mathbb{D}^{\text{es}}_{\text{subset}} & \mathbb{D}^{\text{es}}\setminus \mathbb{D}^{\text{es}}_{\text{subset}} & \mathbb{D}^{\text{nl}}_{\text{subset}} & \mathbb{D}^{\text{nl}}\setminus \mathbb{D}^{\text{nl}}_{\text{subset}} \\ \hline \text{mBERT-ft} & 73.65 \% & 70.66 \% & 77.29 \% & 70.39 \% & 81.67 \% & 69.89 \% \\ \text{mBERT-TLADV} & 74.05 \% & 72.49 \% & 78.04 \% & 73.86 \% & 81.83 \% & 77.89 \% \\ \text{UniTrans*} & 74.48\% & 71.71\% & 77.29\% & 73.18\% & 83.15\% & 70.39\% \\ \textbf{AdvPicker} & 75.11\% & 73.76\% & 79.19\% & 75.68 \% & 84.19\% & 79.15 \% \\ \hline \end{array} mBERT-ftmBERT-TLADVUniTrans*AdvPickerDsubsetde73.65%74.05%74.48%75.11%DdeDsubsetde70.66%72.49%71.71%73.76%Dsubsetes77.29%78.04%77.29%79.19%DesDsubsetes70.39%73.86%73.18%75.68%Dsubsetnl81.67%81.83%83.15%84.19%DnlDsubsetnl69.89%77.89%70.39%79.15%

可以看到虽然 AdvPicker 没有见过训练集中 ℓ score ( x T ) \ell_{\text{score}}(\boldsymbol{x}^{\text{T}}) score(xT)比较小的数据,但是在测试集的 Other 子集上仍然超过所有的 Baselines。
其次,对比 UniTrans*和 mBERT-TLADV, Knowledge Distallation 可以进一步提升模型在两个子集上的效果,而且 mBERT-TLADV 通过对抗学习学习得到的 Language-independent 使得模型具有更好的泛化性,在 Other 子集上甚至超过 UniTrans*。

此外,还进行了一些消融实验,进一步证明了各个组件的作用。

de es nl Avg AdvPicker 75.02 79.00 82.90 78.97 mBERT-ft 72.59 ( − 2.43 ) 75.12 ( − 3.88 ) 80.34 ( − 2.56 ) 76.02 ( − 2.95 ) mBERT-TLADV 73.89 ( − 1.13 ) 76.92 ( − 2.08 ) 80.62 ( − 2.28 ) 77.14 ( − 1.83 ) AdvPicker w/o KD 73.98 ( − 1.04 ) 77.91 ( − 1.09 ) 80.55 ( − 2.35 ) 77.48 ( − 1.49 ) AdvPicker w All-Data 74.02 ( − 1.00 ) 78.72 ( − 0.28 ) 80.69 ( − 2.21 ) 77.81 ( − 1.16 ) \begin{array}{c|cccc} \hline & \textbf{de} & \textbf{es} & \textbf{nl} & \textbf{Avg} \\ \hline \text{AdvPicker} & 75.02 & 79.00 & 82.90 & 78.97 \\ \hline \text{mBERT-ft} & 72.59 (-2.43) & 75.12 (-3.88) & 80.34 (-2.56) & 76.02 (-2.95) \\ \text{mBERT-TLADV} & 73.89 (-1.13) & 76.92 (-2.08) & 80.62 (-2.28) & 77.14 (-1.83) \\ \text{AdvPicker w/o KD} & 73.98 (-1.04) & 77.91 (-1.09) & 80.55 (-2.35) & 77.48 (-1.49) \\ \text{AdvPicker w All-Data} & 74.02 (-1.00) & 78.72 (-0.28) & 80.69 (-2.21) & 77.81 (-1.16) \\ \hline \end{array} AdvPickermBERT-ftmBERT-TLADVAdvPicker w/o KDAdvPicker w All-Datade75.0272.59(2.43)73.89(1.13)73.98(1.04)74.02(1.00)es79.0075.12(3.88)76.92(2.08)77.91(1.09)78.72(0.28)nl82.9080.34(2.56)80.62(2.28)80.55(2.35)80.69(2.21)Avg78.9776.02(2.95)77.14(1.83)77.48(1.49)77.81(1.16)

总结和讨论

本文从 Cross-linugal 任务应该扑捉 Language-independent 特征的角度出发,设计了一个评价 Langauge-specific 程度的任务。
并根据此,设计了一种字符粒度的对抗学习策略从而提升模型学习 Language-independent 特征的程度。
并利用对抗判别器划分无标注目标语言子集,继而构建 Soft label 和 Knowledge Distillation 进一步提升模型在目标语言上的效果。
实验证明在无外部数据的前提下,AdvPicker 在三个语言上均超过之前的 SOTA。
并设计实验对判别器产生效果的原因进行了具体分析。

实际上,这种方式可以看做为一种带权值批处理版本的 Self-training 或者 Co-training。
但事实上,这种 Subset Data 的选择是与 NER 模型和判别器息息相关的,它选择出来的 Data 是在当前 NER 模型下相对 Language-independent。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iofu728/article/details/119303294

智能推荐

马云将于阿里巴巴功成身退?_CSDN资讯的博客-程序员宅基地

作者 |孙冀出品 | 第一财经9月8日,马云将于下周一9月10日教师节当天辞去阿里巴巴董事局主席的消息传遍网络。8号深夜,阿里巴巴方面向第一财经确认,阿里巴巴董事局主席...

【Zabbix】小白入门_Zabbix snmptrap 配置_csjqbl2831的博客-程序员宅基地

服务器通过snmptrap主动上报告警,在zabbix配置snmptrap监控也是很简单的。1.登录被监控的设备的bmc管理系统配置snmptrap地址指向我们的zabbix服务器或代理服务器。...

SQOOP+HADOOP+HIVE+MySQL统计各个区域下最热门的TOP3的商品_csp75739的博客-程序员宅基地

环境:hadoop-2.6.0-cdh5.7.0hive-1.1.0-cdh5.7.0sqoop-1.4.6-cdh5.7.0MySQL5.6.39...

UG二次开发笔记_csdnwsq的博客-程序员宅基地_ug二次开发界面做好后选择c文件保存?

用记事本打开NX安装目录下的“UGII\menus\custom_dirs.dat”文件,添加项目路径。 在项目路径下新建startup和application文件夹。 在startup目录下新建.men文件。 启动UG,新建一个部件文件,单击“启动——所有应用模块——NX 6之前版本UI样式编辑器”,进入UI Styler设计界面。 添加对话框控件,并在资源编辑器和对象浏览器中进行相应设...

Flask项目文件目录_苏幕遮灬淩枫的博客-程序员宅基地_flask文件目录

1 在blue文件夹下创建项目app与项目app同级的文件一般有项目启动文件(文件名随意,这里是manate.py),项目的配置文件(文件名也随意,这里叫config.py)此外跟app同级的还应该有数据库迁移的文件夹和测试文件夹--------------项目配置文件---------------import osbasedir = os.path.abspath(os.path.dir

Maven 配置 Selenium + testNG + reportNG 运行环境_weixin_33933118的博客-程序员宅基地

.markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(56, 58, 66); overflow: auto; background-color: rgb(250, 250, 250); }.markdown-preview:not([data-use-github-...

随便推点

我的离职路_csgkzdk4784的博客-程序员宅基地

遥想03年非典时期,我随着第一批扩招毕业大军揣着可爱的梦想南下,为了工作,感染非典的恐怖无法超越求职心切。广州的赛马场,东莞人才市场,深圳人才市场,这几个地方也只有八年前去过,在脑海中有依稀的印象。无法在求职大...

阿里完成首个可控量子比特研发;45 名谷歌员工举报不公对待;Swoft 2.0.6 正式版发布 | 极客头条..._CSDN资讯的博客-程序员宅基地

快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持。「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道。风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流。整理 | 胡巍巍责编 | 屠敏快讯速知 张建锋:阿里达摩院量子实验室完成第一个可控的量子比特研发工作 ...

用Vue做一个音乐app_Never Yu的博客-程序员宅基地

vue-music简介实现的功能截屏演示移动端演示项目代码构建Tip详细为什么写这个项目获取教程vue-music基于 Vue 包括音乐推荐、搜索、播放、榜单、收藏 欢迎体验:https://neveryu.github.io/music/,在手机上效果更好,...

python之变量与运算符_苏幕遮灬淩枫的博客-程序员宅基地

什么是变量给数据贴标签 或者说是数据的指针 通过变量可以访问他指向的数据变量的命名规则值类型与引用类型按Java中值类型与引用类型的概念 值类型可看做一块内存地址 存在这个内存地址中的数据是固定不变的 引用类型 也是一块内存地址 但是这个地址中的数据可以改变 id()函数可以查看到变量指向的内存地址列表的可变与元祖的不可变运算符号数值运算符比较运算符不只是数字才能做比较运算逻辑运算符

诡异的TNS-12531、ORA-25253错误_cssma46022的博客-程序员宅基地

数据库环境 操作系统:windows 2008R2 数据库版本:oracle 11.2.0.4故障描述 数据库监听服务启动一会后,...

【调剂】大连大学2021年硕士研究生招生考试网上预调剂公告_计算机与软件考研的博客-程序员宅基地

点击文末的阅读原文或者公众号界面左下角的调剂信息或者公众号回复“调剂”是计算机/软件等专业的所有调剂信息集合,会一直更新的。各位考生:根据本校2021年硕士研究生招生考试初试成绩,预计部分...

推荐文章

热门文章

相关标签