# sbert中文文本相似度预测
**Repository Path**: 2943/sbert-evaluate
## Basic Information
- **Project Name**: sbert中文文本相似度预测
- **Description**: 使用sentence-transformers(SBert)训练文本相似度数据集并进行评估,包括后端接口及前端页面
- **Primary Language**: Python
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 8
- **Created**: 2023-12-11
- **Last Updated**: 2023-12-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# sbert_text_similarity
详细说明:[sentence-transformers(SBert)中文文本相似度预测(附代码)](https://blog.csdn.net/weixin_54218079/article/details/128687878)
使用sentence-transformers(SBert)训练文本相似度数据集并进行评估。
Bert缺点在于推理速度慢,对资源要求更高
孪生网络具有相同的编码器(文本转换为高维向量的部分),网络随后对两段文本的特征进行交互,最后完成分类/相似预测。结构简单,训练稳定,具体用途是衡量两个输入文本的相似程度
SBert是孪生网络和Bert的强强联合,一万条句子在一块现代V100GPU上使用Bert计算,将消耗65小时,SBert只需要5秒
# python文件说明
使用的数据是蚂蚁金融文本相似度数据集,具体数据在data文件夹下。
--preprocess.py:获取数据,并划分训练集和测试集。
--train_sentence_bert.py:使用自己的数据集利用sbert训练文本相似度任务。
--evaluate.py:评估训练好的模型。
--predict.txt:保存预测的结果。
--singleSentence.py:后端接口,用训练好的模型计算文本相似度。
# 结果
```python
['开通花呗连接', '怎么开通了花呗'] 0
总共有数据:102477条,其中正样本:18685条,负样本:83792条
训练数据:71733条,其中正样本:13141条,负样本:58592条
测试数据:30744条,其中正样本:5544条,负样本:25200条
precision recall f1-score support
0 0.88 0.93 0.90 25200
1 0.57 0.43 0.49 5544
accuracy 0.84 30744
macro avg 0.73 0.68 0.70 30744
weighted avg 0.83 0.84 0.83 30744
```
## 后端及sbert运行步骤
1. 先去[chinese-roberta-wwm-ext](https://huggingface.co/hfl/chinese-roberta-wwm-ext/tree/main)把预训练模型下载下来放进model_hub文件夹(其它预训练模型也行,但是chinese-roberta-wwm-ext是测试下来效果最好的)
2. 每个文件用到路径的地方都改成自己文件夹的位置
3. 运行preprocess.py划分训练集和测试集
4. 运行train_sentence_bert.py利用sbert训练文本相似度任务
5. 运行evaluate.py评估训练好的模型
6. 运行singleSentence.py开启后端接口再运行前端
## 前端运行步骤
```she
yarn install
yarn serve
```