JasonForJoy / SA-BERT

CIKM 2020: Speaker-Aware BERT for Multi-Turn Response Selection in Retrieval-Based Chatbots
75 stars 13 forks source link

关于论文中所提到的 speaker embeddings #9

Closed bott1eee closed 2 years ago

bott1eee commented 2 years ago

个人没怎么搞清楚这个 speaker embeddings 是怎么得来的,能否麻烦作者稍微具体讲解一下这个 speaker embeddings 是怎样处理得来的呢?

JasonForJoy commented 2 years ago

@bott1eee 可以类比BERT中的segment embedding帮助理解 segment embedding是为了区分前面一个segment,和后一个segment 类似地,对于每一个句子,需要区分哪些句子是speaker A说的,哪些句子是speaker B说的 所以我们设计了speaker embedding将其叠加在原始的token representation

bott1eee commented 2 years ago

@JasonForJoy 你好,不好意思我的表述可能有点问题。我的意思是 speaker embedding 具体是对句子做怎样的处理得来的 embedding,或者说这个 embedding 是怎么做到能够区分不同的说话人的呢?感谢

JasonForJoy commented 2 years ago

@bott1eee 首先随机初始化一个speaker embedding table。如果这是一个两方对话,即随机初始化一个768*2的speaker embedding table。 如果utterance 1是speaker A说的,即把table中的第一个embedding vector抽取出来当作该句的speaker embedding;同样地, 如果utterance 2是speaker B说的,即把table中的第二个embedding vector抽取出来当作该句的speaker embedding。 speaker embedding赋给该句中的所有token,将其叠加在原始的token representation上,就像segment embedding一样,即可区分不同的句子来自不同的说话人

bott1eee commented 2 years ago

@JasonForJoy 那请问代码 modeling_switch.py 中的 line496~510 就是处理 speaker embeddings 的地方吗?

JasonForJoy commented 2 years ago

@bott1eee 是

bott1eee commented 2 years ago

@JasonForJoy 好的,非常感谢您耐心详细的回答!