🚀 fio-base-japanese-v0.1
fio-base-japanese-v0.1 是 Fio 系列日語嵌入模型的概念驗證和首個版本。它基於 cl-tohoku/bert-base-japanese-v3,並在單 GPU 上使用有限的數據量進行訓練。該模型可用於句子相似度計算等任務,為日語相關的自然語言處理提供支持。
🚀 快速開始
本模型需要安裝 fugashi
和 unidic-lite
:
pip install -U fugashi unidic-lite
如果用於檢索任務,你必須在查詢前加上 "関連記事を取得するために使用できるこの文の表現を生成します: "
。
✨ 主要特性
- 基於
cl-tohoku/bert-base-japanese-v3
開發。
- 在多個日語數據集上進行訓練,可用於句子相似度和檢索等任務。
📦 安裝指南
使用 sentence-transformers
此模型通過 sentence-transformers 使用效果最佳。若未安裝,可輕鬆安裝:
pip install -U sentence-transformers
使用 HuggingFace Transformers
若不使用 sentence-transformers,可按如下方式使用模型:首先將輸入傳遞給變壓器模型,然後對上下文詞嵌入應用正確的池化操作。
💻 使用示例
基礎用法(Sentence-Transformers)
from sentence_transformers import SentenceTransformer
sentences = ["こんにちは、世界!", "文埋め込み最高!文埋め込み最高と叫びなさい", "極度乾燥しなさい"]
model = SentenceTransformer('bclavie/fio-base-japanese-v0.1')
embeddings = model.encode(sentences)
print(embeddings)
高級用法(HuggingFace Transformers)
from transformers import AutoTokenizer, AutoModel
import torch
def cls_pooling(model_output, attention_mask):
return model_output[0][:,0]
sentences = ['This is an example sentence', 'Each sentence is converted']
tokenizer = AutoTokenizer.from_pretrained('{MODEL_NAME}')
model = AutoModel.from_pretrained('{MODEL_NAME}')
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = cls_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)
📚 詳細文檔
數據集
相似度/蘊含任務
- JSTS (訓練集)
- JSNLI (訓練集)
- JNLI (訓練集)
- JSICK (訓練集)
檢索任務
- MMARCO (多語言 Marco) (訓練集,12.4 萬個句子對,佔全量數據的不到 1%)
- Mr.TyDI (訓練集)
- MIRACL (訓練集,50% 樣本)
JSQuAD (訓練集,50% 樣本,無大語言模型增強) 發佈版本中未使用 JSQuAD,用作未見測試集。
結果
⚠️ 重要提示
fio-base-japanese-v0.1 在訓練過程中接觸過文本蘊含任務,而此表中的其他日語模型並非如此。這使 Fio 相對於之前的最佳結果 cl-nagoya/sup-simcse-ja-[base|large]
具有不公平的優勢。在訓練中期評估中,這似乎並未對性能產生重大影響,然而,JSICK (NLI 集) 包含在訓練數據中,因此目前無法完全消除這種影響。我打算在未來版本中修復此問題,但在查看結果時請牢記這一點(有關完全未見數據的比較,請參閱相關博客文章中的 JSQuAD 結果,儘管主要關注檢索任務)。
此表格改編自 oshizo 的基準測試 GitHub 倉庫 並進行了截斷(僅保留最流行的模型),如需更多信息,請查看該倉庫並給它點個星,它非常有用!
斜體表示在較小模型優於較大模型時該尺寸下的最佳模型(base/large | 768/1024),粗體表示整體最佳。
模型 |
JSTS valid-v1.1 |
JSICK test |
MIRACL dev |
平均值 |
bclavie/fio-base-japanese-v0.1 |
0.863 |
0.894 |
0.718 |
0.825 |
cl-nagoya/sup-simcse-ja-base |
0.809 |
0.827 |
0.527 |
0.721 |
cl-nagoya/sup-simcse-ja-large |
0.831 |
0.831 |
0.507 |
0.723 |
colorfulscoop/sbert-base-ja |
0.742 |
0.657 |
0.254 |
0.551 |
intfloat/multilingual-e5-base |
0.796 |
0.806 |
0.845 |
0.816 |
intfloat/multilingual-e5-large |
0.819 |
0.794 |
0.883 |
0.832 |
pkshatech/GLuCoSE-base-ja |
0.818 |
0.757 |
0.692 |
0.755 |
text-embedding-ada-002 |
0.790 |
0.789 |
0.7232 |
0.768 |
📄 許可證
引用與作者
bclavie-fio-embeddings,
author = {Benjamin Clavié},
title = {Fio Japanese Embeddings},
year = {2023},
howpublished = {\url{https://ben.clavie.eu/fio}}
}