🚀 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}}
}