shibing624 / text2vec

text2vec, text to vector. 文本向量表征工具,把文本转化为向量矩阵,实现了Word2Vec、RankBM25、Sentence-BERT、CoSENT等文本表征、文本相似度计算模型,开箱即用。
https://pypi.org/project/text2vec/
Apache License 2.0
4.39k stars 392 forks source link

请教bge用自己数据微调的问题 #144

Closed LanceLuoyuan closed 9 months ago

LanceLuoyuan commented 9 months ago

非常棒的开源项目。正好适配目前碰到的一个场景(主要是一些短语匹配的任务),有注意到最新发布的https://huggingface.co/shibing624/text2vec-bge-large-chinese模型在短文本区分度上提升明显,因此想尝试基于这个模型在自己的数据上微调。想实现的目标类似于: 「GMV」能匹配上「销售额」,「pv」能匹配上「访问量」这种需求。因此想请教下作者这块的训练方式,是否可以按下述方式来进行:

  1. 基于开源的这版模型在 SimCLUE这类数据集上做有监督的finetune (因为看到总结这个数据集的数据质量较高,并且数据量也比较多能)
  2. 继续在自己的这些数据集上做无监督的微调。(因为目前自己还没有标注的数据集)

真诚的请教下这个做法是否有问题,或者给出一些其他的建议

shibing624 commented 9 months ago
  1. 可以
  2. 需要改下原数据格式,方法:示例(train_rank.json): {"query": "胡子长得太快怎么办?", "title": "胡子长得快怎么办?", "neg_title": "怎样使胡子不浓密!"} 改为:query, title, label:1; query, neg_title, label:0
  3. cosent模型是有监督模型,只能做监督训练。
LanceLuoyuan commented 9 months ago
  1. 可以
  2. 需要改下原数据格式,方法:示例(train_rank.json): {"query": "胡子长得太快怎么办?", "title": "胡子长得快怎么办?", "neg_title": "怎样使胡子不浓密!"} 改为:query, title, label:1; query, neg_title, label:0
  3. cosent模型是有监督模型,只能做监督训练。

请教下 3. cosent的模型经过有监督样本训练后,还能继续用SimCSE里无监督的方式来训练吗

shibing624 commented 9 months ago

理论上可以,但没必要。cosent也是对比学习,且是在simcse基础上改进的。