BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #36861同步于 2020/7/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖

【问题】使用bert一定要有上下文吗?单个词行不行?

Daishijun
2020/7/9镜像同步25 回复
再更新: 今天leader做了一些实验。 1.同一个词,在输入句子和单独输入这个词,产生的embedding计算了余弦相似度。相似度在0.5-0.6之间。 2.利用相似词,来验证embedding的质量。对比了Glove和BERT产生的embedding,用点积计算相似度。 根据产生的top5近邻来看,Glove的效果比较好。BERT找出的5近邻,有2个问题:1)自己和自己不是最相似的;2)某些词和所有词都相似。 同学们说的挺有道理的,我又学加深了一些理解。 === 更新: 似乎从BERT预训练的角度能理解为什么不能用,BERT是通过Mask掉目标词的方式来进行预训练的,所以其embedding应该是依据上下文得到的(还有position embedding),所以只有一个目标词而缺乏上下文的话,就不能用BERT了。 【不知道这个理解是否合理】 遇到一个问题,想不通。来求助下论坛里的大佬。 本人昨天刚开始看BERT,今天被问到,预训练好的BERT,可不可以把单个词作为输入,从而得到这个词的embedding?这种情况下,和Word2vec得到的embedding,哪个的embedding效果很好? 我的想法是,BERT在预训练的时候,使用了大量的数据,所以就算是没有上下文的单个词,BERT得到的embedding也应该比Word2vec要好才对。 但是同事告诉我使用bert必须要有上下文。没有搜到相关的问题和材料。 求大佬帮忙解答一下或者指点一下应该看哪些资料。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
QinYe机器人#1 · 2020/7/9
感觉bert就是个大窗口的Cbow,而且bert代码里也有embeding层,直接用embeding层应该是可以的
Daishijun机器人#2 · 2020/7/9
问题是只有一个词的话,是不是通过BERT来获得这个词的embedding就不太合适了。我的理解是bert主要是通过上下文来得到目标词的embedding,只有一个目标词的话,虽然能有embedding输出,但是不准确,无法反应目标词的意思。 【 在 QinYe 的大作中提到: 】 : 感觉bert就是个大窗口的Cbow,而且bert代码里也有embeding层,直接用embeding层应该是可以的
sjw1996机器人#3 · 2020/7/9
楼主是什么情景需要获取没有上下文的embedding啊 【 在 Daishijun (这里有个大坑) 的大作中提到: 】 : 问题是只有一个词的话,是不是通过BERT来获得这个词的embedding就不太合适了。我的理解是bert主要是通过上下文来得到目标词的embedding,只有一个目标词的话,虽然能有embedding输出,但是不准确,无法反应目标词的意思。
Daishijun机器人#4 · 2020/7/9
这是leader问我的一个问题。我还没上手业务,所以不知道是否真的有这种应用场景。 【 在 sjw1996 的大作中提到: 】 : 楼主是什么情景需要获取没有上下文的embedding啊
mayday机器人#5 · 2020/7/9
word2vec不也是通过上下文来训练的吗。 我觉得直接用 bert 的 embedding 是可以的
shinyruoqaq机器人#6 · 2020/7/9
你直接取embedding层的向量不就是那个词的embedding了吗
huanshuai机器人#7 · 2020/7/9
bert的word embedding 应该随机初始化的吧
thinkwee2767机器人#8 · 2020/7/9
可以,但我感觉意义不大,比如你要和w2v比较embedding效果,怎么比较?放在下游任务当中吗?或者单纯用一些词向量的评估方法?前者的话显然用bert finetune效果好些,后者的话,bert的embedding是做了subword的,中文的话是字向量而不是词向量,想要得到词也还是通过bert编码吧。而且bert这一系列预训练模型往上追溯到elmo,是上下文相关的,不仅是说通过上下文窗口预测词,而且是词向量可以随上下文不同而动态改变,同一个词在不同句子当中有不同的embedding,而w2v就做不到动态。可以找一些研究bert embedding的论文,我感觉应该有人做过相关比对。
ying7214机器人#9 · 2020/7/9
我挺赞同这个同学说的,word2vec和bert都需要借助上下文关系,这么说的话我觉得lz更新的理由不怎么说的过去。bert应该可以训练单个词吧,单个词可以用到字的粒度,用bert训练字与字之间的关系,并且存在动态的语境变化。 【 在 thinkwee2767 (thinkwee) 的大作中提到: 】 : 可以,但我感觉意义不大,比如你要和w2v比较embedding效果,怎么比较?放在下游任务当中吗?或者单纯用一些词向量的评估方法?前者的话显然用bert fin...