sbert-base-cased-pl项目介绍
sbert-base-cased-pl项目是一个基于波兰语的SentenceBERT模型,旨在通过使用siamese和triplet网络结构,从而得出语义上有意义的句子嵌入,这些嵌入可以通过余弦相似度进行比较。该模型的训练基于Siamese BERT models for the task of semantic textual similarity (STS) 的原始论文,并对训练数据的使用方式做出了轻微修改。其目标是根据文本的语义和主题相似性生成不同的嵌入。
语料库
sbert-base-cased-pl模型只在Wikipedia上进行了训练,这提供了大量的文本数据资料以供模型学习和优化。
分词器
sbert-base-cased-pl使用了在HerBERT原始实现中的同样训练数据集,使用字符级字节对编码(CharBPETokenizer)进行了子词分词,其词汇量规模为5万。分词器的训练使用了tokenizers
库。推荐用户使用分词器的快速版本,亦即HerbertTokenizerFast
。
使用方法
要使用sbert-base-cased-pl模型,仅需几行Python代码。以下是基本的代码示例:
from transformers import AutoTokenizer, AutoModel
from sklearn.metrics import pairwise
sbert = AutoModel.from_pretrained("Voicelab/sbert-base-cased-pl")
tokenizer = AutoTokenizer.from_pretrained("Voicelab/sbert-base-cased-pl")
s0 = "Uczenie maszynowe jest konsekwencją rozwoju idei sztucznej inteligencji i metod jej wdrażania praktycznego."
s1 = "Głębokie uczenie maszynowe jest sktukiem wdrażania praktycznego metod sztucznej inteligencji oraz jej rozwoju."
s2 = "Kasparow zarzucił firmie IBM oszustwo, kiedy odmówiła mu dostępu do historii wcześniejszych gier Deep Blue."
tokens = tokenizer([s0, s1, s2],
padding=True,
truncation=True,
return_tensors='pt')
x = sbert(tokens["input_ids"],
tokens["attention_mask"]).pooler_output
# 句子s0和s1之间的相似度
print(pairwise.cosine_similarity(x[0], x[1])) # 结果: 0.7952354
# 句子s0和s2之间的相似度
print(pairwise.cosine_similarity(x[0], x[2])) # 结果: 0.42359722
在以上代码中,sbert-base-cased-pl模型被用于计算不同句子之间的语义相似度。余弦相似度是衡量句子相似程度的指标之一。
项目成果
使用sbert-base-cased-pl模型时,其准确性为82.31%,这比英语版本SBERT模型略高一筹。
模型 | 准确性 | 来源 |
---|---|---|
SBERT-WikiSec-base (EN) | 80.42% | https://arxiv.org/abs/1908.10084 |
SBERT-WikiSec-large (EN) | 80.78% | https://arxiv.org/abs/1908.10084 |
sbert-base-cased-pl | 82.31% | https://huggingface.co/Voicelab/sbert-base-cased-pl |
sbert-large-cased-pl | 84.42% | https://huggingface.co/Voicelab/sbert-large-cased-pl |
授权信息
该项目使用的是CC BY 4.0许可证。
作者信息
sbert-base-cased-pl模型由Voicelab.ai的NLP研究团队完成训练。如需联系,请点击这里。