pipeline_tag: 句子相似度
tags:
PatentSBERTa专利语义模型
PatentSBERTa:基于深度NLP的混合模型,采用增强型SBERT实现专利距离计算与分类
奥尔堡大学商学院AI增长实验室
论文链接:https://arxiv.org/abs/2103.11933
代码仓库:https://github.com/AI-Growth-Lab/PatentSBERTa
这是一个sentence-transformers模型:能够将句子和段落映射到768维稠密向量空间,适用于聚类或语义搜索等任务。
使用方法(Sentence-Transformers库)
安装sentence-transformers后即可便捷使用:
pip install -U sentence-transformers
调用示例:
from sentence_transformers import SentenceTransformer
sentences = ["这是一个示例句子", "每个句子都会被转换"]
model = SentenceTransformer('AI-Growth-Lab/PatentSBERTa')
embeddings = model.encode(sentences)
print(embeddings)
使用方法(HuggingFace Transformers库)
若不使用sentence-transformers库,可通过以下方式调用:
from transformers import AutoTokenizer, AutoModel
import torch
def cls_pooling(model_output, attention_mask):
return model_output[0][:,0]
sentences = ['这是一个示例句子', '每个句子都会被转换']
tokenizer = AutoTokenizer.from_pretrained('AI-Growth-Lab/PatentSBERTa')
model = AutoModel.from_pretrained('AI-Growth-Lab/PatentSBERTa')
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("句子嵌入向量:")
print(sentence_embeddings)
评估结果
模型自动化评估请参见句子嵌入基准测试:https://seb.sbert.net
训练参数
数据加载器:
长度5的torch.utils.data.dataloader.DataLoader
,参数配置:
{'batch_size': 16, 'sampler': '随机采样器', 'batch_sampler': '批采样器'}
损失函数:
sentence_transformers.losses.CosineSimilarityLoss.CosineSimilarityLoss
训练方法参数:
{
"训练轮次": 1,
"评估步长": 0,
"评估器": "无",
"最大梯度范数": 1,
"优化器": "AdamW",
"优化参数": {"学习率": 2e-05},
"调度器": "线性预热",
"每轮步数": null,
"预热步数": 100,
"权重衰减": 0.01
}
完整模型架构
SentenceTransformer(
(0): Transformer({'最大序列长度': 512, '小写转换': False}) with MPNetModel
(1): Pooling({'词嵌入维度': 768, 'CLS标记池化': True, '均值标记池化': False, '最大标记池化': False, '平方根长度均值池化': False})
)
引用与作者
@article{bekamiri2021patentsberta,
title={PatentSBERTa专利语义模型:基于增强型SBERT的专利距离计算与分类混合模型},
author={贝卡米里, 哈米德 and 海因, 丹尼尔 and 尤罗维茨基, 罗曼},
journal={arXiv预印本 arXiv:2103.11933},
year={2021}
}