首页 > 其他分享 >sentence-transformers(SBert)中文文本相似度预测(附代码)

sentence-transformers(SBert)中文文本相似度预测(附代码)

时间:2023-06-22 11:34:27浏览次数:37  
标签:__ transformers 训练 sentence 模型 model SBert

sentence-transformers(SBert)中文文本相似度预测(附代码)

https://blog.csdn.net/weixin_54218079/article/details/128687878

https://gitee.com/liheng103/sbert-evaluate

https://www.sbert.net/

 

训练模型
创建网络:使用Sbert官方给出的预训练模型sentence_hfl_chinese-roberta-wwm-ext,先载入embedding层进行分词,再载入池化层并传入嵌入后的维度,对模型进行降维压缩,最后载入密集层,选择Than激活函数,输出维度大小为256维。
获取训练数据:构建出新模型后使用InputExample类存储训练数据,它接受文本对字符串列表和用于指示语义相似性的标签,用标准的Pytorch Dataloader包装train_examples,作用是打乱数据并生成特定大小的批次。
计算损失函数:对于每个句子对,通过网络传递句子A和句子B,从而产生嵌入u和v,使用余弦相似度计算相似性,并将结果与标准相似度得分进行比较。这样网络就能够进行微调,更好地识别句子的相似性。
模型调优:通过调用model.fit()来调优模型。向model.fit()中传递train_objective列表(由元组(dataloader, loss_function))组成。也可以传递多个元组,以便在具有不同损失函数的多个数据集上执行多任务学习。在训练过程需要使用sentence_transformers.evaluation评估表现是否有所改善,它包含各种可以传递给fit方法的evaluators。Evaluators会在训练期间定期运行,并且会返回分数,只有得分最高的模型才会存储在磁盘上。
首先运行preprocess.py获取数据,并划分训练集和测试集,之后运行train_sentence_bert.py,使用预训练模型, sbert将数据集用sbert训练相似度任务,得到训练好的模型,最后运行evaluate.py评估训练好的模型,将结果保存在predict.txt中,并输出预测结果。

这部分在详细代码里注释得很全。

后端部分
使用flask编写post接口,接收的数据格式为application/json,将前端传来的两个句子使用训练好的模型对其进行相似度预测,将得到的相似度类型从无法序列化存入json的tensor转成list,并将状态码,信息,数据返回给前端。

from sentence_transformers import SentenceTransformer, util
# 后端接口
from flask import Flask, jsonify, request
import re
# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app = Flask(__name__)
# 使通过jsonify返回的中文显示正常,否则显示为ASCII码
app.config["JSON_AS_ASCII"] = False
model_path = 'D:/xxx模型路径/'
model = SentenceTransformer(model_path)
@app.route("/evaluate",methods=['POST'])
def evalute_sentence():
s1 = request.json.get("s1")
s2 = request.json.get("s2")
if s1 and s2:
embedding1 = model.encode(s1, convert_to_tensor=True)
embedding2 = model.encode(s2, convert_to_tensor=True)
similarity = util.cos_sim(embedding1, embedding2).tolist()
return jsonify({"code": 200, "msg": "预测成功", "data": similarity})
else:
return jsonify({"code": 400, "msg": "缺少字段"})
if __name__ == '__main__':
app.run(debug=True)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
前端部分
————————————————
版权声明:本文为CSDN博主「我先润了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_54218079/article/details/128687878

标签:__,transformers,训练,sentence,模型,model,SBert
From: https://www.cnblogs.com/chinasoft/p/17497611.html

相关文章

  • SentenceTransformers库介绍
     https://blog.csdn.net/m0_47256162/article/details/129380499SentenceTransformer是一个Python框架,用于句子、文本和图像嵌入Embedding。这个框架计算超过100种语言的句子或文本嵌入。然后,这些嵌入可以进行比较,例如与余弦相似度进行比较,以找到具有相似含义的句子,这对于语......
  • transformers
    sentence="Hello,mysoniscuting."input_ids_method1=torch.tensor(tokenizer.encode(sentence,add_special_tokens=True))#Batchsize1  //一次性进行分词和id映射#tensor([101,7592,1010,2026,2365,2003,3013,2075,1012,102])input_token2=......
  • 在Transformers 中使用约束波束搜索引导文本生成
    引言本文假设读者已经熟悉文本生成领域波束搜索相关的背景知识,具体可参见博文如何生成文本:通过Transformers用不同的解码方法生成文本。与普通的波束搜索不同,约束波束搜索允许我们控制所生成的文本。这很有用,因为有时我们确切地知道输出中需要包含什么。例如,在机器翻译任......
  • 【论文阅读】CvT:Introducing Convolutions to Vision Transformers
    ......
  • 编码器 | 基于 Transformers 的编码器-解码器模型
    基于transformer的编码器-解码器模型是表征学习和模型架构这两个领域多年研究成果的结晶。本文简要介绍了神经编码器-解码器模型的历史,更多背景知识,建议读者阅读由SebastionRuder撰写的这篇精彩博文。此外,建议读者对自注意力(self-attention)架构有一个基本了解,可以......
  • Hugging News #0602: Transformers Agents 介绍、大语言模型排行榜发布!
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」,本期HuggingNews有哪些有趣的消息,快来看看吧!重磅更新TransformersAgents发布,通过自......
  • transformers入门使用
    transformers入门使用HuggingFace是一个开源社区,它提供了先进的NLP模型,数据集,以及其他工具。模型:https://huggingface.co/models数据集:https://huggingface.co/datasets主要的模型自然回归:GPT2,Trasnformer-XL,XLNet自编码:BERT,ALBERT,ROBERTa,ELECTRASto......
  • 背景 | 基于 Transformers 的编码器-解码器模型
    !pipinstalltransformers==4.2.1!pipinstallsentencepiece==0.1.95Vaswani等人在其名作Attentionisallyouneed中首创了基于transformer的编码器-解码器模型,如今已成为自然语言处理(naturallanguageprocessing,NLP)领域编码器-解码器架构的事实标准。最近基......
  • End-to-End Object Detection with Transformers论文阅读笔记
    摘要作者提出了一种新的基于Transformer的目标检测模型DETR,将检测视为集合预测问题,无需进行nms以及anchorgeneration等操作。同时,对模型进行简单的修改就可以应用到全景分割任务中。方法ObjectdetectionsetpredictionlossDETR给出的是N个预测,N为预先设定的远大于GT目标框......
  • Hugging Face推出Transformers Agents
    来源:GitHubDailyHuggingFace,作为AI开源圈最为知名的「网红」创业公司,成立仅几年,便在GitHub开源了诸多实用开源项目,受到了不少开发者的赞赏。其中影响力最大的,也被很多人称为初代GPT的Transformers,截至今天,GitHubStar累积将近10万。这几年,在HuggingFace平台上面......