项目介绍:japanese-reranker-cross-encoder-xsmall-v1
项目概述
japanese-reranker-cross-encoder-xsmall-v1
是一个专门针对日语开发的重新排序器(Reranker)项目。这一系列模型的主要功能是通过交叉编码器(CrossEncoder)技术,对文本进行更有效的排序。该项目特别适用于需要对日语文本进行重新排序的场景,比如信息检索、问答系统等。
模型配置
这个项目中的模型有多个不同的版本,根据其复杂程度、层数和隐藏层尺寸进行区分。其中,japanese-reranker-cross-encoder-xsmall-v1
是最基础的版本,有6层和384的隐藏层尺寸。这个小型模型设计的初衷是提供高效且快速的文本排序能力。下表列出了该系列的不同版本,以便用户更好地选择适合自己应用需求的模型:
模型名称 | 层数 | 隐藏层尺寸 |
---|---|---|
japanese-reranker-cross-encoder-xsmall-v1 | 6 | 384 |
japanese-reranker-cross-encoder-small-v1 | 12 | 384 |
japanese-reranker-cross-encoder-base-v1 | 12 | 768 |
japanese-reranker-cross-encoder-large-v1 | 24 | 1024 |
japanese-bge-reranker-v2-m3-v1 | 24 | 1024 |
使用指南
使用 SentenceTransformers 库
用户可以使用 SentenceTransformers
库对模型进行简单的调用和使用。例如,可以加载模型,设置设备为 GPU 或 CPU,然后输入查询和文本片段进行得分预测。示例代码如下:
from sentence_transformers import CrossEncoder
import torch
MODEL_NAME = "hotchpotch/japanese-reranker-cross-encoder-xsmall-v1"
device = "cuda" if torch.cuda.is_available() else "cpu"
model = CrossEncoder(MODEL_NAME, max_length=512, device=device)
if device == "cuda":
model.model.half()
query = "感动的电影"
passages = [
"这是一部感人至深的电影,细腻的人物情感描绘让人动容。",
"电影有重要的思想性,但情节略显沉重。",
"情节发展缺乏真实性,希望有更深刻的人性描绘。",
"动作场面精彩,故事简单却很吸引人。",
]
scores = model.predict([(query, passage) for passage in passages])
使用 HuggingFace transformers
同样地,用户也可以通过 HuggingFace transformers
库来加载和使用模型。首先需要加载模型的Tokenizer和模型本体,然后进行文本编码与得分计算。示例代码如下:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from torch.nn import Sigmoid
MODEL_NAME = "hotchpotch/japanese-reranker-cross-encoder-xsmall-v1"
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)
model.to(device)
model.eval()
if device == "cuda":
model.half()
query = "感动的电影"
passages = [
"这是一部感人至深的电影,细腻的人物情感描绘让人动容。",
"电影有重要的思想性,但情节略显沉重。",
"情节发展缺乏真实性,希望有更深刻的人性描绘。",
"动作场面精彩,故事简单却很吸引人。",
]
inputs = tokenizer(
[(query, passage) for passage in passages],
padding=True,
truncation=True,
max_length=512,
return_tensors="pt",
)
inputs = {k: v.to(device) for k, v in inputs.items()}
logits = model(**inputs).logits
activation = Sigmoid()
scores = activation(logits).squeeze().tolist()
项目应用与影响
该模型在多个数据集上进行了评估,包括 JQaRA、JaCWIR、MIRACL 和 JSQuAD。不同版本的模型在这些数据集中表现良好,具体表现可以参考以下评分结果:
Model Name | JQaRA | JaCWIR | MIRACL | JSQuAD |
---|---|---|---|---|
japanese-reranker-cross-encoder-xsmall-v1 | 0.6136 | 0.9376 | 0.7411 | 0.9602 |
许可证
该项目基于 MIT License,用户可以自由地使用、修改和发布该项目的代码,在商业和非商业用途上不受限制。
通过上述各方面的介绍,japanese-reranker-cross-encoder-xsmall-v1
为日语文本处理提供了灵活且高效的方案,在信息技术应用中具备广阔的应用前景。