文章目录
本文主要内容是两篇论文的阅读笔记,论文地址如下:
SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-Trained Language Model,其对应的 源码。
Capturing Global Informativeness in Open Domain Keyphrase Extraction,其对应的 源码。
SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-Trained Language Model
SIFRank比较适合短文本的关键词抽取,而SIFRank+大幅增加了长文本的关键词抽取效果。
MODEL OVERVIEW
SIFRank 的架构如下:
(1)人工标注:分词+标词性。
(2)获取候选关键词列表:利用正则表达式确定名词短语(例如:形容词+名词),将名词短语作为候选关键短语。
(3)通过预训练语言模型,得到关键词的embedding。
(4)同样地,得到句子或文档的embedding。
(5)计算(3)与(4)结果的余弦相似度,选取topN作为其最终提取的关键词。
SENTENCE EMBEDDING MODEL(SIF)
经上节描述可知,整篇的难点在于如何计算embedding。预训练语言模型采用ELMo。
采用ELMo的原因是:
1)经过大规模预训练,较TFIDF、TextRank等基于统计和图的具有更多的语义信息;
2)ELMo是动态的,可以改善一词多义问题;
3)ELMo通过Char-CNN编码,对生僻词非常友好;
4)不同层的ELMo可以捕捉不同层次的信息
计算sentence embedding的假设是:文章是由一个topic生成的,文章中的每个句子亦是如此,因此,句子的embedding应该与文章embedding的期望值(topic embedding)相近,有:
得到sentence embedding的计算方式:
其中,a是超参数,一般设置为
[
1
0
−
3
,
1
0
−
4
]
[10^{-3},10^{-4}]
[10−3,10−4]。其实也就是加权求和得到sentence embedding,phase embedding,document embedding。最后再用余弦相似度的结果进行排序。
POSITION-BIASED WEIGHT FOR LONG DOCUMENTS
这是SIFRank+使用的思想,主要就是增加了位置的权重。考虑在长文本中,先出现的词往往具有重要的地位。
计算相似度的公式变为:
该方法在数据集上的结果有兴趣的朋友可以看看该论文。
Capturing Global Informativeness in Open Domain Keyphrase Extraction
BERT-KPE是最近由thunlp提出的方法,在OpenKP和KP20K上都达到了state-of-the-art和良好的鲁棒性。
Methodology
1. 得到候选关键词的词表征
- 对于给定的Document,令 D = { w 1 , ⋯ , w i , ⋯ , w n } D=\{w_1,\cdots,w_i,\cdots,w_n\} D={w1,⋯,wi,⋯,wn},对其使用预训练语言模型BERT,获得词表征,有 H = { h 1 , ⋯ , h i , ⋯ , h n } = B E R T { w 1 , ⋯ , w i , ⋯ , w n } H=\{h_1,\cdots,h_i,\cdots,h_n\}=BERT\{w_1,\cdots,w_i,\cdots,w_n\} H={h1,⋯,hi,⋯,hn}=BERT{w1,⋯,wi,⋯,wn}。
- 使用卷积网络获得N-gram的表征,第
i
i
i个k-gram(
c
i
k
c_i^k
cik=word[i:i+k-1])对应的词表征为:
2.Informative Ranking
为了估计N-gram
c
i
k
c_i^k
cik 在局部语境中包含的信息量,使用一个前馈网络使
g
i
k
g_i^k
gik转变为可量化的数:
然后,开始计算每个phase的全局信息。对于一个phase
p
k
p^k
pk 而言,一个文档中可能出现多次,我们将其记为:
{
c
j
k
,
⋯
,
c
m
k
}
\{c_j^k,\cdots,c_m^k\}
{cjk,⋯,cmk},自然地,我们可以得到相应的局部信息:
再此上,接一个max-pooling层,作为其全局信息:
得到每个phase的全局信息后,使用Pairwise ranking loss作为其rank损失:
该损失函数迫使JointKPE将文档D中的keyphrases排在non-keyphrases(非关键词)前面。
3. Keyphrase Chunking
JointKPE直接学习某个N-gram是否是keyphase,对此,采用交叉熵损失:
4. Multi-Task Training
将 2 和 3的损失联合起来,共同训练:
L
=
L
r
a
n
k
+
L
c
h
u
n
k
L = L_{rank}+L_{chunk}
L=Lrank+Lchunk
Experimental Methodology
实验结果如下: