模型:

Voicelab/sbert-base-cased-pl

英文

SHerbert - Polish SentenceBERT

SentenceBERT是预训练BERT网络的一种改进版本,它使用连体网络和三元组网络结构来生成语义上有意义的句子嵌入向量,可以使用余弦相似度进行比较。训练是基于原始论文 Siamese BERT models for the task of semantic textual similarity (STS) 进行的,在训练数据的使用方式上稍作修改。该模型的目标是根据给定文本的语义和主题相似性生成不同的嵌入向量。

语义文本相似性分析了两个文本片段的相似程度。

请阅读有关该模型如何准备的更多信息,详见我们的 blog post

基础训练模型是波兰HerBERT。HerBERT是基于BERT的语言模型。更多详细信息,请参阅:"HerBERT: Efficiently Pretrained Transformer-based Language Model for Polish"。

语料库

该模型仅在 Wikipedia 上进行了训练。

分词器

与原始的HerBERT实现一样,训练数据集使用字符级别的字节对编码(CharBPETokenizer)进行子词分词,词汇表大小为50k个标记。分词器本身是使用tokenizers库进行训练的。

我们推荐您使用快速版的分词器,即HerbertTokenizerFast。

用法

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

# similarity between sentences s0 and s1
print(pairwise.cosine_similarity(x[0], x[1])) # Result: 0.7952354

# similarity between sentences s0 and s2
print(pairwise.cosine_similarity(x[0], x[2])) # Result: 0.42359722
   

结果

Model Accuracy Source
SBERT-WikiSec-base (EN) 80.42% 1234321
SBERT-WikiSec-large (EN) 80.78% 1234321
sbert-base-cased-pl 82.31% 1236321
sbert-large-cased-pl 84.42% 1237321

许可证

CC BY 4.0

引用

如果您使用这个模型,请引用以下论文:

作者

该模型是由Voicelab.ai的NLP研究团队训练的。

您可以通过 here 与我们联系。