ONNX 模型库
返回模型

说明文档

模型描述

vietnamese-embedding 是越南语嵌入模型。该模型是一个专门针对越南语训练的句子嵌入模型,利用了 PhoBERT(基于 RoBERTa 架构的预训练语言模型)的强大能力。

该模型使用 PhoBERT 将越南语句子编码到 768 维向量空间中,支持从语义搜索到文本聚类的广泛应用。嵌入向量捕捉了越南语句子的细微含义,反映了语言的词汇和上下文层面。

完整模型架构

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: RobertaModel 
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)

训练和微调过程

该模型经历了严格的四阶段训练和微调过程,每个阶段都旨在增强其生成精确且符合上下文的越南语句子嵌入的能力。以下是这些阶段的概述:

阶段一:初始训练

阶段二:继续微调

  • 数据集:XNLI-vn
  • 方法:使用 Multi-Negative Ranking Loss 继续微调。这一阶段专注于提高模型区分和排序句子语义细微差异的能力。

阶段三:针对 STS Benchmark 语义文本相似性的继续微调

  • 数据集:STSB-vn
  • 方法:使用配置了 'sentence-transformers' 库的 Siamese BERT-Networks 针对语义文本相似性基准进行微调。这一阶段提高了模型在各种越南语文本类型中捕捉语义相似性的精度。

阶段四:高级增强微调

  • 数据集:STSB-vn(从黄金样本生成银样本
  • 方法:采用结合了 Cross-Encoder 和 Bi-Encoder 模型的配对采样策略的 Augmented SBERT 高级策略。这一阶段通过动态丰富训练数据进一步优化了嵌入向量,增强了模型理解和处理复杂越南语结构的能力和准确性。

使用方法

安装 sentence-transformers 后,使用此模型变得非常简单:

pip install -U sentence-transformers
pip install -q pyvi

然后你可以这样使用该模型:

from sentence_transformers import SentenceTransformer
from pyvi.ViTokenizer import tokenize

sentences = ["Hà Nội là thủ đô của Việt Nam", "Đà Nẵng là thành phố du lịch"]
tokenizer_sent = [tokenize(sent) for sent in sentences]

model = SentenceTransformer('dangvantuan/vietnamese-embedding')
embeddings = model.encode(tokenizer_sent)
print(embeddings)

评估

可以在 越南语 stsb 数据集 上按以下方式评估该模型:

from sentence_transformers import SentenceTransformer
from sentence_transformers import SentenceTransformer
from sentence_transformers.readers import InputExample
from datasets import load_dataset
from pyvi.ViTokenizer import tokenize

def convert_dataset(dataset):
    dataset_samples=[]
    for df in dataset:
        score = float(df['score'])/5.0  # Normalize score to range 0 ... 1
        inp_example = InputExample(texts=[tokenize(df['sentence1']), 
                                    tokenize(df['sentence2'])], label=score)
        dataset_samples.append(inp_example)
    return dataset_samples

# Loading the dataset for evaluation
vi_sts = load_dataset("doanhieung/vi-stsbenchmark")["train"]
df_dev = vi_sts.filter(lambda example: example['split'] == 'dev')
df_test = vi_sts.filter(lambda example: example['split'] == 'test')

# Convert the dataset for evaluation

# For Dev set:
dev_samples = convert_dataset(df_dev)
val_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(dev_samples, name='sts-dev')
val_evaluator(model, output_path="./")

# For Test set:
test_samples = convert_dataset(df_test)
test_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(test_samples, name='sts-test')
test_evaluator(model, output_path="./")

测试结果:

使用 Pearson 和 Spearman 相关系数衡量性能:

  • 在开发集上
模型 Pearson 相关系数 Spearman 相关系数 参数数量
dangvantuan/vietnamese-embedding 88.33 88.20 135M
VoVanPhuc/sup-SimCSE-VietNamese-phobert-base 84.65 84.59 135M
keepitreal/vietnamese-sbert 84.51 84.44 135M
bkai-foundation-models/vietnamese-bi-encoder 78.05 77.94 135M

语义文本相似性 STS Benchmark 所有数据集的指标

你可以在这个 Colab 上运行评估

Pearson 分数

模型 [STSB] [STS12] [STS13] [STS14] [STS15] [STS16] [SICK] 平均
dangvantuan/vietnamese-embedding 84.87 87.23 85.39 82.94 86.91 79.39 82.77 84.21
VoVanPhuc/sup-SimCSE-VietNamese-phobert-base 81.52 85.02 78.22 75.94 81.53 75.39 77.75 79.33
keepitreal/vietnamese-sbert 80.54 78.58 80.75 76.98 82.57 73.21 80.16 78.97
bkai-foundation-models/vietnamese-bi-encoder 73.30 67.84 71.69 69.80 78.40 74.29 76.01 73.04

Spearman 分数

模型 [STSB] [STS12] [STS13] [STS14] [STS15] [STS16] [SICK] 平均
dangvantuan/vietnamese-embedding 84.84 79.04 85.30 81.38 87.06 79.95 79.58 82.45
VoVanPhuc/sup-SimCSE-VietNamese-phobert-base 81.43 76.51 79.19 74.91 81.72 76.57 76.45 78.11
keepitreal/vietnamese-sbert 80.16 69.08 80.99 73.67 82.81 74.30 73.40 76.34
bkai-foundation-models/vietnamese-bi-encoder 72.16 63.86 71.82 66.20 78.62 74.24 70.87 71.11

引用

@article{reimers2019sentence,
   title={Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks},
   author={Nils Reimers, Iryna Gurevych},
   journal={https://arxiv.org/abs/1908.10084},
   year={2019}
}

@article{martin2020camembert,
   title={CamemBERT: a Tasty French Language Mode},
   author={Martin, Louis and Muller, Benjamin and Suárez, Pedro Javier Ortiz and Dupont, Yoann and Romary, Laurent and de la Clergerie, Éric Villemonte and Seddah, Djamé and Sagot, Benoît},
   journal={Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics},
   year={2020}
}

@article{thakur2020augmented,
  title={Augmented SBERT: Data Augmentation Method for Improving Bi-Encoders for Pairwise Sentence Scoring Tasks},
  author={Thakur, Nandan and Reimers, Nils and Daxenberger, Johannes and Gurevych, Iryna},
  journal={arXiv e-prints},
  pages={arXiv--2010},
  year={2020}
}

dangvantuan/vietnamese-embedding

作者 dangvantuan

sentence-similarity sentence-transformers
↓ 185.4K ♥ 50

创建时间: 2024-04-20 14:31:07+00:00

更新时间: 2025-10-23 11:28:46+00:00

在 Hugging Face 上查看

文件 (21)

.gitattributes
1_Pooling/.ipynb_checkpoints/config-checkpoint.json
1_Pooling/config.json
README.md
added_tokens.json
bpe.codes
config.json
config_sentence_transformers.json
model.safetensors
modules.json
onnx/added_tokens.json
onnx/bpe.codes
onnx/config.json
onnx/model.onnx ONNX
onnx/special_tokens_map.json
onnx/tokenizer_config.json
onnx/vocab.txt
sentence_bert_config.json
special_tokens_map.json
tokenizer_config.json
vocab.txt