EmbedRank: Simple Unsupervised Keyphrase Extraction using Sentence Embeddings
EmbedRank筛选关键词是通过关键词句子的嵌入和完整文档的嵌入之间的距离获得的信息量;由候选短语本身之间的距离表示的多样性。**EmbedRank++**极大的保证了关键字的多样性,且不用F-Score来进行评估。
EmbedRank实现
(1) 基于词性序列从文本中提取候选短语。更准确地说,我们只保留那些由零个或多个形容词组成的短语,后跟一个或多个子名词。
(2) 使用句子嵌入来表示(嵌入)候选短语和文档本身在同一高维向量空间。(计算每个候选词向量、句子(段落)向量、文档向量)
(3) 对候选短语进行排序,以选择输出关键短语。
细节:句子(段落)级向量作者使用的是Sent2Vec模型,文档级向量作者使用的是Doc2vec。相似度计算使用的是**Cosine Similarity(余弦相似度)**方法。
EmbedRank++实现
EmbedRank模型抽取的关键字可能存在语义重复,例如:“molecular equivalence numbers”和“molecular equivalence indices”是表示一样的意思的短语。这样的现象可能导致用户有不好的使用体验。所以在此基础上,作者开拓了候选关键词语义的多样性,使用MMR(Maximal Marginal Relevance)。
MMR算法实现可以参照参考文献[1],广泛应用于信息检索和文本摘要领域。MMR的计算公式如下式(1)所示:
M
M
R
:
=
a
r
g
m
a
x
D
i
∈
R
\
S
[
λ
⋅
S
i
m
1
(
D
i
,
Q
)
−
(
1
−
λ
)
m
a
x
D
i
∈
S
S
i
m
2
(
D
i
,
D
j
)
]
MMR:=\mathop{argmax}\limits_{D_i\in{R \backslash S}}[\lambda \cdot {Sim_1}(D_i,Q)-(1-\lambda)\mathop{max}\limits_{D_i\in{S}}{Sim_2}(D_i,D_j)]
MMR:=Di∈R\Sargmax[λ⋅Sim1(Di,Q)−(1−λ)Di∈SmaxSim2(Di,Dj)]
R
R
R代表所有的检索文档,
Q
Q
Q为输入的查询关键词,
S
S
S为最开始初始化的空集合(代表对于问题
Q
Q
Q得出的最优回答),
D
i
D_i
Di和
D
j
D_j
Dj表示被检索的文档,
S
i
m
1
Sim_1
Sim1和
S
i
m
2
Sim_2
Sim2表示相似度度量函数。当
λ
=
1
\lambda=1
λ=1时,MMR计算标准的相关性排序列表,而当
λ
=
0
\lambda=0
λ=0时,它计算
R
R
R文档中的最大多样性排序。
为了将其应用到关键词抽取中,作者将其改为公式2:
M
M
R
:
=
a
r
g
m
a
x
C
i
∈
C
\
K
[
λ
⋅
c
o
s
s
i
m
~
(
C
i
,
d
o
c
)
−
(
1
−
λ
)
m
a
x
C
i
∈
K
c
o
s
s
i
m
~
(
C
i
,
C
j
)
]
MMR:=\mathop{argmax}\limits_{C_i\in{C\backslash K}}[\lambda \cdot \widetilde{cos_{sim}}(C_i,doc)-(1-\lambda)\mathop{max}\limits_{C_i\in{K}}\widetilde{cos_{sim}}(C_i,C_j)]
MMR:=Ci∈C\Kargmax[λ⋅cossim
(Ci,doc)−(1−λ)Ci∈Kmaxcossim
(Ci,Cj)]
其中
C
C
C表示候选关键词,
K
K
K代表为抽取的关键词,
d
o
c
doc
doc是全文的向量表示,
C
i
C_i
Ci和
C
j
C_j
Cj分别表示关键词
i
i
i和
j
j
j,
c
o
s
s
i
m
~
\widetilde{cos_{sim}}
cossim
是余弦相似度的计算公式。
通过MMR算法,EmbedRank++相对于EmbedRank算法所得的结果会更加考虑到候选关键词的多样性,可能可以更加有效地改善用户的使用体验。
EmbedRank实验
数据集:Inspec、DUC2001、NUS。
实现代码参考:
graph-tool:https://graph-tool.skewed.de.
co-occurence window on new sentence:https://github.com/boudinfl/pke
Sent2Vec:https://github.com/epfml/sent2vec
Doc2vec:https://github.com/jhlau/doc2vec
EmbedRank & EmbedRank++:https://github.com/swisscom/ai-research-keyphrase-extraction