ag-nli-DeTS-sentence-similarity-v4 项目介绍
项目背景
ag-nli-DeTS-sentence-similarity-v4 是一个用于句子相似度计算的模型。该模型通过 SentenceTransformers 框架中的 Cross-Encoder 类进行训练。它被设计为能够在多语言环境下使用,包括英语、荷兰语、德语、法语、意大利语和西班牙语。
训练数据
为了使模型具备良好的句子相似度判断能力,它被训练于6个不同的NLI(自然语言推理)数据集。从建模意义上讲,模型会对输入的两个句子进行语义相似度打分,分数范围在0到1之间。0表示完全不相似,而1表示非常相似。
如何使用
基础用法
在使用该模型时,可以利用 sentence-transformers 库中的 CrossEncoder 类来对句子对进行相似度评分。在这个基本用法中,将两个句子列表中对应位置的句子进行比较。例如,第一个句子列表中的第一个句子将与第二个句子列表中的第一个句子进行比较,依此类推。以下是一个简单的代码示例:
from sentence_transformers import CrossEncoder
# 加载模型
model = CrossEncoder('abbasgolestani/ag-nli-DeTS-sentence-similarity-v4')
# 两个句子列表
sentences1 = [
'I am honored to be given the opportunity to help make our company better',
'I love my job and what I do here',
'I am excited about our company’s vision'
]
sentences2 = [
'I am hopeful about the future of our company',
'My work is aligning with my passion',
'Definitely our company vision will be the next breakthrough to change the world and I’m so happy and proud to work here'
]
# 将句子对打包
pairs = zip(sentences1, sentences2)
list_pairs = list(pairs)
# 预测相似度分数
scores1 = model.predict(list_pairs, show_progress_bar=False)
# 输出结果
for i in range(len(sentences1)):
print("{} \t\t {} \t\t Score: {:.4f}".format(sentences1[i], sentences2[i], scores1[i]))
其他用法
除了基础用法外,用户也可以通过简单代码对任何两个句子对列表进行批量评分:
from sentence_transformers import CrossEncoder
# 加载模型
model = CrossEncoder('abbasgolestani/ag-nli-DeTS-sentence-similarity-v4')
# 进行预测
scores = model.predict([('Sentence 1', 'Sentence 2'), ('Sentence 3', 'Sentence 4')])
在这个示例中,模型会对句子对 ('Sentence 1', 'Sentence 2') 和 ('Sentence 3', 'Sentence 4') 进行评分。
无sentence_transformers的使用
用户也可以选择不使用 sentence_transformers 库,而仅通过 Transformers 的 AutoModel
类直接使用该模型。这为有特殊需求的开发者提供了更高的灵活性。
ag-nli-DeTS-sentence-similarity-v4 项目为开发者提供了一种简单而有效的方式来对多种语言的句子进行相似度分析。通过对多数据集的训练以及灵活的使用方式,它能够满足各种自然语言处理任务的需求。