SIFRank: New Baseline for Unsupervised Keyphrase Extraction Based on Pre-Trained Language Model
SIFRank简介
在社交媒体上,面临着大量的知识和信息,一个有效的关键词抽取算法可以广泛地被应用的信息检索和自然语言处理中。传统的关键词抽取算法很难使用外部的知识信息。在此基础上作者提出了一种新的基于预训练语言模型的无监督关键词提取基线SIFRank。SIFRank结合了句子嵌入模型SIF和自回归预训练语言模型ELMo,在短文档的关键短语提取方面具有最佳性能。我们通过文档分割和上下文单词嵌入对齐来提高SIFRank的速度,同时保持其准确性。对于长文档,我们通过位置偏移权重将SIFRank升级为SIFRank+,大大提高了它在长文档上的性能。与其他baseline相比,我们的模型在三个广泛使用的数据集上达到了最先进的水平。
Although graph-based models are effective, the effect of keyphrase extraction can be improved better by introducing external knowledge or additional features.(尽管基于图的关键词抽取模型是非常有效的,但是它能较好地被外部知识和额外的特征所提升。)
使用预训练语言模型有利于提升基于图的和基于统计的关键词抽取算法。
作者在论文的主要贡献:
- 提出了一种句子级嵌入的模型SIF,去解释句子嵌入和文档主题的之间的关系。使用SIF和ELMo预训练语言模型去计算句子级嵌入和文档级嵌入。然后使用余弦相似度进行计算候选短语和文档主题的距离。SIFRank可以动态实时地在不同领域进行优化,相对于EmbadRank效果更佳。(其实也就是对EmbedRank的改进算法)
- 提出了一种文档分割的方法,可以快速对长文档的字嵌入进行计算。然而,由于文档被分割成较小的部分,关键字提取的效果将降低。作者将同一单词在不同位置和上下文中的上下文嵌入的平均值作为嵌入锚,然后用嵌入锚替换上下文单词嵌入来计算结果,模型的性能明显反弹。(也就是求一个embedding来代替整句的embedding)
- 为了去提升模型在长文档的关键词抽取能力,作者提出了一种基于位置偏置权重。使用词第一次出现的倒数作为位置偏置权重,使用交叉熵对其进行平滑。通过添加了位置偏置,SIFRank算法在DUC2001上表现更佳。
SIFRank方法
总结来说,SIFRank算法可以被分成以下步骤:
- 对文档进行序列标注,标注出文档各个字的词性。
- 抽取出名词短语。这些短语将被作为候选词短语。
- 将tokens序列放到预训练语言模型中去,去抽取每一个token的表示。在这种情况下,这个表示可能具有不同特征的多层字嵌入。说白了就是得到每个单词的词向量表示。
- 通过句子嵌入模型,将名词和文档分别转化为名词嵌入和文档嵌入的形式,这个是时候它们的维度相同。
- 使用余弦相似度来计算两个名词短语嵌入和文档嵌入的距离,这个距离是用来计算候选短语和主体之间的距离。最终按照排名来得到TOP-N个候选词。
P r [ s ∣ c d ] = Π w ∈ s P r ( w ∣ c d ) = Π w ∈ s [ α f w + ( 1 − α ) e x p ( < v w , c d ~ > ) Z c ~ d ] Pr[s|c_d]=\Pi_{w \in s} Pr(w|c_d)=\Pi_{w \in s}[\alpha f_w+(1-\alpha)\frac{exp(<v_w,\widetilde {c_d} >)}{Z_{\widetilde c_d}}] Pr[s∣cd]=Πw∈sPr(w∣cd)=Πw∈s[αfw+(1−α)Zc dexp(<vw,cd >)]
其中
s
s
s代表句子,
c
d
c_d
cd代表主题,
Z
c
~
d
=
∑
w
∈
V
e
x
p
(
<
c
~
d
,
v
w
>
)
Z_{\widetilde c_d}=\sum_{w \in V} exp(<\widetilde c_d, v_w>)
Zc
d=∑w∈Vexp(<c
d,vw>)和
c
~
d
=
β
c
0
+
(
1
−
β
)
c
d
\widetilde c_d=\beta c_0+(1-\beta)c_d
c
d=βc0+(1−β)cd,其中
c
0
⊥
c
d
c_0 \bot c_d
c0⊥cd,
f
w
f_w
fw是一个字出现在大预料的统计概率。
v
s
=
1
∣
S
∣
∑
w
∈
s
a
a
+
f
w
=
1
∣
S
∣
∑
w
∈
s
W
e
i
g
h
t
(
w
)
v
w
v_s=\frac{1}{|S|}\sum_{w \in s} \frac{a}{a+f_w}=\frac{1}{|S|}\sum_{w \in s}Weight(w)v_w
vs=∣S∣1w∈s∑a+fwa=∣S∣1w∈s∑Weight(w)vw
其中
a
a
a的取值范围在[1e-3,1e-4]。
S
I
F
R
a
n
k
(
v
N
P
i
,
v
d
)
=
S
i
m
(
v
N
P
i
,
v
d
)
=
c
o
s
(
v
N
P
i
,
v
d
)
=
v
⃗
N
P
i
,
v
⃗
d
∥
v
⃗
N
P
i
∥
∥
v
⃗
d
∥
SIFRank(v_{NP_i},v_d)=Sim(v_{NP_i},v_d)=cos(v_{NP_i},v_d)=\frac{\vec v_{NP_i},\vec v_d}{\parallel \vec v_{NP_i} \parallel \parallel \vec v_d \parallel}
SIFRank(vNPi,vd)=Sim(vNPi,vd)=cos(vNPi,vd)=∥vNPi∥∥vd∥vNPi,vd
其中
d
d
d代表文档,
v
d
v_d
vd代表文档的嵌入。
v
N
P
v_{NP}
vNP候选关键词NP的嵌入。
对于不同领域的,词的概率分布可能不一样。为了去适应不同领域,我们更改了字在不同句子权重计算方式:
W
e
i
g
h
t
(
w
)
=
λ
W
e
i
g
h
t
c
o
m
(
w
)
+
(
1
−
λ
)
W
e
i
g
h
t
d
o
m
(
w
)
=
λ
a
a
+
f
w
+
(
1
−
λ
)
a
′
a
′
+
f
w
′
Weight(w)=\lambda Weight_{com}(w)+(1-\lambda)Weight_{dom}(w)=\lambda \frac{a}{a+f_w}+(1-\lambda)\frac{a'}{a'+f_w'}
Weight(w)=λWeightcom(w)+(1−λ)Weightdom(w)=λa+fwa+(1−λ)a′+fw′a′
SIFRank实验结果
SIFRank总结
论文基于预训练语言模型提出了一种无监督关键词抽取算法,叫做SIFRank。作者引进句子级嵌入模型SIF并结合预训练语言模型ELMo进行SIFRank中去,再短文档上实现了最好的效果。在长文档中提出了SIFRank+算法,结合位置偏置信息。(其实SIFRank就是对EmbedRank进行改进)
但作者也对其进行总结,就是多模型集成不如单一模型的效果;是否可以将其他信息融入到长文档关键词抽取任务中(除词出现的位置信息)