CoSENT 比Sentence-BERT更有效的句向量方案

Overview

CoSENT

比Sentence-BERT更有效的句向量方案

介绍

效果

train训练、test测试:

ATEC BQ LCQMC PAWSX STS-B Avg
BERT+CoSENT 49.74 72.38 78.69 60.00 80.14 68.19
Sentence-BERT 46.36 70.36 78.72 46.86 66.41 61.74
RoBERTa+CoSENT 50.81 71.45 79.31 61.56 81.13 68.85
Sentence-RoBERTa 48.29 69.99 79.22 44.10 72.42 62.80

NLI训练、test测试:

ATEC BQ LCQMC PAWSX STS-B Avg
BERT+CoSENT 28.93 41.84 66.07 20.49 73.91 46.25
Sentence-BERT 28.19 42.73 64.98 15.38 **74.88 45.23
RoBERTa+CoSENT 31.84 46.65 68.43 20.89 74.37 48.43
Sentence-RoBERTa 31.87 45.60 67.89 15.64 73.93 46.99

环境

需要bert4keras >= 0.10.8。个人实验环境是tensorflow 1.15 + keras 2.3.1 + bert4keras 0.10.8。

交流

QQ交流群:808623966,微信群请加机器人微信号spaces_ac_cn

You might also like...
Comments
  • 老师好,想问问为什么powell里边针对Acc的最小值优化需要加个np.tanh(t)

    老师好,想问问为什么powell里边针对Acc的最小值优化需要加个np.tanh(t)

    源码如下:

    def optimal_threshold(y_true, y_pred): """最优阈值的自动搜索 """ loss = lambda t: -np.mean((y_true > 0.5) == (y_pred > np.tanh(t))) result = minimize(loss, 1, method='Powell') return np.tanh(result.x), -result.fun

    老师好,想问问为什么powell里边针对Acc的最小值优化需要加个np.tanh(t),如果直接为 (y_pred > t) 为什么不好呢? 想知道两个的区别,想了一晚上没想明白,希望老师能点一下思路

    opened by skykiseki 2
  • 关于 spearman 得分很高但检索很差的询问

    关于 spearman 得分很高但检索很差的询问

    数据集是 0-1 格式的数据集,0 表示不相似,1 表示相似,各有10 万对。语料库中总共有 200 万个句子,也就是说有些样本没参与训练。不太一样的就是:第一个句子很短,5 6 个字左右,第二个句子很长,50字左右。比如淘宝搜索:XXX零食,推荐的结果会有:XXX商店XXX口味XXX面包。

    我使用 CoSENT 进行训练,在 bert 后接入一个降维层,生成文本的 128 维度特征向量,期待相似样本的距离近,不相似样本距离远。微调 3 个 epoch 左右,spearman 得分在 0.86 左右。

    而后,将所有文本生成特征向量,构建向量索引(这里用的别人成熟的框架,不是构建索引出错),并查询距离最近的向量,发现很难查回正样本,MRR 指标也很差,这个问题我怀疑是距离还是没有拉开,请问您在使用这个方法的时候有没有遇到过类似问题呢?~~仿佛偏题了~~

    opened by muyuuuu 2
Owner
苏剑林(Jianlin Su)
科学爱好者
苏剑林(Jianlin Su)
CoSENT、STS、SentenceBERT

CoSENT_Pytorch 比Sentence-BERT更有效的句向量方案

null 102 Dec 7, 2022