使用 shibing624/text2vec-base-chinese 模型实现中文句子语义匹配

【免费下载链接】text2vec-base-chinese 【免费下载链接】text2vec-base-chinese 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/text2vec-base-chinese

在自然语言处理领域,句子语义匹配是一项关键技术,广泛应用于信息检索、文本聚类、问答系统等场景。shibing624/text2vec-base-chinese 是一个基于 CoSENT 方法训练的中文句子嵌入模型,能够将句子映射到 768 维的密集向量空间,为中文文本语义匹配任务提供强有力的支持。

模型简介

shibing624/text2vec-base-chinese 模型采用 CoSENT(Cosine Sentence)方法训练,基于 hfl/chinese-macbert-base 预训练模型在中文 STS-B 数据集上进行微调。该模型能够有效捕捉中文句子的语义信息,在多个中文文本匹配评测任务中表现出色。

模型架构包含两个主要组件:

  • Transformer 编码器:基于 BertModel,最大序列长度为128
  • 池化层:采用均值池化方式,输出768维句子向量

环境准备

使用该模型前需要安装必要的Python库:

pip install -U text2vec transformers sentence-transformers

模型使用方式

方法一:使用 text2vec 库(推荐)

from text2vec import SentenceModel

sentences = ['如何更换花呗绑定银行卡', '花呗更改绑定银行卡']
model = SentenceModel('shibing624/text2vec-base-chinese')
embeddings = model.encode(sentences)
print(embeddings)

方法二:使用 HuggingFace Transformers

from transformers import BertTokenizer, BertModel
import torch

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0]
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

tokenizer = BertTokenizer.from_pretrained('shibing624/text2vec-base-chinese')
model = BertModel.from_pretrained('shibing624/text2vec-base-chinese')
sentences = ['如何更换花呗绑定银行卡', '花呗更改绑定银行卡']

encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
    model_output = model(**encoded_input)

sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:", sentence_embeddings)

方法三:使用 sentence-transformers

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("shibing624/text2vec-base-chinese")
sentences = ['如何更换花呗绑定银行卡', '花呗更改绑定银行卡']
sentence_embeddings = model.encode(sentences)
print("Sentence embeddings:", sentence_embeddings)

性能优化方案

为了提升模型推理速度,项目提供了多种优化版本:

ONNX 优化版本

from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    "shibing624/text2vec-base-chinese",
    backend="onnx",
    model_kwargs={"file_name": "onnx/model_O4.onnx"},
)
embeddings = model.encode(["如何更换花呗绑定银行卡", "花呗更改绑定银行卡"])

OpenVINO 优化版本

from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    "shibing624/text2vec-base-chinese",
    backend="openvino",
)
embeddings = model.encode(["如何更换花呗绑定银行卡", "花呗更改绑定银行卡"])

量化优化版本

from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    "shibing624/text2vec-base-chinese",
    backend="onnx",
    model_kwargs={"file_name": "onnx/model_qint8_avx512_vnni.onnx"},
)
embeddings = model.encode(["如何更换花呗绑定银行卡", "花呗更改绑定银行卡"])

模型性能评估

该模型在多个中文文本匹配数据集上的表现:

评测数据集 Spearman 系数
ATEC 31.93%
BQ 42.67%
LCQMC 70.16%
PAWSX 17.21%
STS-B 79.30%

应用场景

shibing624/text2vec-base-chinese 模型适用于以下场景:

  • 句子相似度计算
  • 语义搜索和检索
  • 文本聚类和分类
  • 问答系统匹配
  • 重复内容检测

最佳实践建议

  1. 数据预处理:确保输入文本经过适当的清洗和分词处理
  2. 序列长度:模型最大支持128个token,超长文本需要截断
  3. 批量处理:对于大量文本,建议使用批量处理以提高效率
  4. 相似度计算:获取句子向量后,可使用余弦相似度计算句子间相似性

模型训练细节

该模型基于以下配置训练:

  • 训练数据集:shibing624/nli_zh
  • 最大序列长度:128
  • 输出维度:768
  • 优化方法:CoSENT对比学习

通过合理使用 shibing624/text2vec-base-chinese 模型,开发者可以快速构建高效的中文语义匹配系统,为各种NLP应用提供强大的语义理解能力。

【免费下载链接】text2vec-base-chinese 【免费下载链接】text2vec-base-chinese 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/text2vec-base-chinese

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐