语言: 中文
标签:
数据集:
- UMLS
[动态] SapBERT的跨语言扩展版本将亮相ACL 2021主会议!
[动态] SapBERT研究成果将被收录于NAACL 2021会议论文集!
SapBERT-PubMedBERT
本模型基于Liu等人(2020)提出的SapBERT架构,使用UMLS 2020AA英文数据集(仅限英语)训练,并以microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract-fulltext作为基础模型。请使用输出层的均值池化结果作为表征向量。
从SapBERT提取嵌入向量
以下脚本可将实体名称列表转换为嵌入向量:
import numpy as np
import torch
from tqdm.auto import tqdm
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("cambridgeltl/SapBERT-from-PubMedBERT-fulltext-mean-token")
model = AutoModel.from_pretrained("cambridgeltl/SapBERT-from-PubMedBERT-fulltext-mean-token").cuda()
all_names = ["新冠肺炎", "冠状病毒感染", "高烧", "口咽后壁肿瘤"]
bs = 128
all_embs = []
for i in tqdm(np.arange(0, len(all_names), bs)):
toks = tokenizer.batch_encode_plus(all_names[i:i+bs],
padding="max_length",
max_length=25,
truncation=True,
return_tensors="pt")
toks_cuda = {}
for k,v in toks.items():
toks_cuda[k] = v.cuda()
cls_rep = model(**toks_cuda)[0].mean(1)
all_embs.append(cls_rep.cpu().detach().numpy())
all_embs = np.concatenate(all_embs, axis=0)
更多训练与评估细节请参阅SapBERTGitHub仓库。
引用文献
@inproceedings{liu-etal-2021-self,
title = "生物医学实体表征的自对齐预训练",
author = "刘芳宇 和
Shareghi, Ehsan 与
孟再桥 及
Basaldella, Marco 和
Collier, Nigel",
booktitle = "北美计算语言学协会2021年会论文集",
month = "6月",
year = "2021",
address = "线上会议",
publisher = "计算语言学协会",
url = "https://www.aclweb.org/anthology/2021.naacl-main.334",
pages = "4228--4238",
abstract = "尽管基于掩码语言模型(MLM)的自监督学习已取得广泛成功,但在生物医学领域精确捕捉细粒度语义关系仍具挑战性。这对于实体链接等需要建模实体关系(特别是同义关系)的任务至关重要。为此,我们提出SapBERT预训练方案,通过自对齐方式优化生物医学实体的表征空间。我们设计了一个可扩展的度量学习框架,能够利用包含400多万个概念的UMLS生物医学本体库。与以往基于流水线的混合系统相比,SapBERT为医学实体链接(MEL)问题提供了优雅的一体化解决方案,在六个MEL基准数据集上实现了最新最优性能。在科学领域,即使没有任务特定监督,我们仍能达到最优水平。相较于BioBERT、SciBERT和PubMedBERT等领域专用预训练MLM模型,我们的预训练方案展现出显著优势,证明了其有效性和鲁棒性。",
}