🚀 SHerbert - 波蘭語 SentenceBERT
SentenceBERT 是對預訓練 BERT 網絡的一種改進,它使用孿生網絡和三元組網絡結構來導出具有語義意義的句子嵌入,這些嵌入可以使用餘弦相似度進行比較。訓練基於原始論文 用於語義文本相似度 (STS) 任務的孿生 BERT 模型,並對訓練數據的使用方式進行了輕微修改。該模型的目標是根據給定文本的語義和主題相似度生成不同的嵌入。
語義文本相似度分析用於分析兩段文本的相似程度。
在我們的 博客文章 中可以瞭解更多關於該模型的訓練過程。
基礎訓練模型是波蘭語 HerBERT。HerBERT 是一個基於 BERT 的語言模型。更多詳細信息,請參考:“HerBERT: Efficiently Pretrained Transformer-based Language Model for Polish”。
✨ 主要特性
- 基於改進的 BERT 網絡,能生成語義有意義的句子嵌入。
- 訓練數據使用方式有輕微調整,以適應語義和主題相似度分析。
- 基於波蘭語 HerBERT 模型進行訓練。
📦 安裝指南
文檔未提及具體安裝步驟,可參考 Hugging Face 相關模型的通用安裝方式。
💻 使用示例
基礎用法
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
print(pairwise.cosine_similarity(x[0], x[1]))
print(pairwise.cosine_similarity(x[0], x[2]))
📚 詳細文檔
語料庫
該模型僅在 維基百科 上進行訓練。
分詞器
與原始 HerBERT 實現一樣,訓練數據集使用字符級字節對編碼(CharBPETokenizer)分詞為子詞,詞彙表大小為 50k 個標記。分詞器本身使用 tokenizers 庫進行訓練。
我們強烈建議使用分詞器的快速版本,即 HerbertTokenizerFast。
結果
模型 |
準確率 |
來源 |
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
👨💻 引用說明
如果您使用此模型,請引用以下論文(文檔未給出具體論文信息)。
👥 作者
該模型由 Voicelab.ai 的 NLP 研究團隊訓練。
您可以 在此 與我們聯繫。