Conversation
|
最近又检查了一下数字对不上的问题出在哪里,发现有两点:
修复这两点以后,现在的实验数字就跟苏神汇报的一模一样了 https://github.com/blmoistawinde/bert4vec/blob/main/examples/compare_models.ipynb 另外,之前用bert的转换代码来转换roformer总是有点奇怪,所以自己研究了一下roformer的转换代码,也附在里面了 |
你好,我发现你提供的 roformer-ft 测试例子都是苏神原博客的几个例子,但我在下面数据上进行测试发现,roformer-ft 计算出来的相似度区分性不够:
roformer-ft 计算出的余弦相似度矩阵为: [[0.7833775 0.18097427 0.3469231 0.48279086 0.32417536] 观察最后一行,“我喜欢北京” 这个句子和 "眼睛好看吗?" 的相似度达到 0.56831586,和 “我不喜欢北京” 的相似度只有 0.532035。我做这个工具的出发点是相似文本检索,如果说因为加了一个 “不” 字,导致召回出其他毫不相关的句子,那我觉得意义不大。 |
|
嗯嗯,对于什么样的句子算“相似”,这个定义确实在不同的场景和需求下可以是很不同的。 我这边也只是增加了一些选项。如果使用的用户面对的场景类似于那个模型finetune的数据集,比如金融、搜索领域的相似query检索等,或者对于是否、颜色等属性的区别要求敏感的,那么这些新的模型会有优势。如果不需要的话,那就继续用原来的模型就行了。 |
你好,感谢你写的这个工具库,接口包装得用起来很方便!
注意到苏建林老师后面又提供了有监督训练增强的roformer-sim-ft,得到的相似度结果会一般会更加符合人的直觉,不过目前在这个库中还没有得到支持。
所以我仿照了你提到的方法对苏神release的ckpt做了转换和上传,然后在代码里添加了相应模型的支持。
https://huggingface.co/blmoistawinde/roformer-sim-ft-small-chinese
https://huggingface.co/blmoistawinde/roformer-sim-ft-base-chinese
我比较了增强前后的模型(实验代码也放在里面了),发现ft模型确实能体现出更符合普通常规认知的相似度打分,比如加了“不”字后相似度明显降低。(虽然跟苏神原文中的数字有一点点不同,不知道是转化中出现了误差还是什么别的问题,但是感觉输出的效果基本上还是挺好的)。如果你觉得可以的话,就把这个PR merge一下吧。