pipeline_tag: 句子相似度
tags:
- 句子转换器
- 特征提取
- 句子相似度
- 医学
- 生物学
language:
- 英语
- 西班牙语
- 法语
- 德语
- 荷兰语
- 丹麦语
- 瑞典语
license: 其他
license_name: IHTSDO与NLM许可证
license_link: https://www.nlm.nih.gov/databases/umls.html
datasets:
- FremyCompany/BioLORD数据集
- FremyCompany/AGCT数据集
widget:
- source_sentence: 巴尔通体病
sentences:
üôè 如果您有能力,请帮助资助我的开放研究。üôè 感谢您的慷慨!ü§ó |
FremyCompany/BioLORD-2023-M
该模型采用BioLORD进行训练,这是一种新的预训练策略,旨在为临床句子和生物医学概念生成有意义的表示。
目前最先进的方法通过最大化指代同一概念的名称在表示上的相似性,并通过对比学习防止崩溃。然而,由于生物医学名称并不总是自解释的,这有时会导致非语义的表示。
BioLORD通过使用定义以及源自生物医学本体论的多关系知识图谱的简短描述来锚定其概念表示,从而克服了这一问题。得益于这种锚定,我们的模型生成了更符合本体论层次结构的语义概念表示。BioLORD-2023在临床句子(MedSTS)和生物医学概念(EHR-Rel-B)的文本相似度上均确立了新的技术标杆。
该模型基于sentence-transformers/all-mpnet-base-v2,并进一步在BioLORD-Dataset和来自自动临床术语词汇表(AGCT)的LLM生成定义上进行了微调。
它正式支持7种欧洲语言(英语、西班牙语、法语、德语、荷兰语、丹麦语和瑞典语),并非正式支持许多其他语言。
同系列模型
该模型属于BioLORD-2023系列,您可能还想查看以下模型:
您也可以查看去年的模型和论文:
训练策略
三阶段概述

对比阶段:详情

自蒸馏阶段:详情

引用
本模型伴随论文BioLORD-2023:从定义中学习本体表示发布。使用本模型时,请按以下方式引用原始论文:
@article{remy-etal-2023-biolord,
author = {Remy, François and Demuynck, Kris and Demeester, Thomas},
title = "{BioLORD-2023:融合大型语言模型与临床知识图谱洞见的语义文本表示}",
journal = {Journal of the American Medical Informatics Association},
pages = {ocae029},
year = {2024},
month = {02},
issn = {1527-974X},
doi = {10.1093/jamia/ocae029},
url = {https://doi.org/10.1093/jamia/ocae029},
eprint = {https://academic.oup.com/jamia/advance-article-pdf/doi/10.1093/jamia/ocae029/56772025/ocae029.pdf},
}
使用(Sentence-Transformers)
这是一个sentence-transformers模型:它将句子和段落映射到768维的密集向量空间,可用于聚类或语义搜索等任务。该模型针对生物医学领域进行了微调。虽然它保留了生成通用文本嵌入的良好能力,但如果您正在处理如电子健康记录或临床笔记等医疗文档,它将更为有用。句子和短语都可以嵌入到相同的潜在空间中。
安装sentence-transformers后,使用该模型变得简单:
pip install -U sentence-transformers
然后您可以像这样使用模型:
from sentence_transformers import SentenceTransformer
sentences = ["猫抓伤", "猫抓病", "巴尔通体病"]
model = SentenceTransformer('FremyCompany/BioLORD-2023-M')
embeddings = model.encode(sentences)
print(embeddings)
使用(HuggingFace Transformers)
如果没有安装sentence-transformers,您可以这样使用模型:首先将输入传递给transformer模型,然后必须在上下文词嵌入之上应用正确的池化操作。
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
sentences = ["猫抓伤", "猫抓病", "巴尔通体病"]
tokenizer = AutoTokenizer.from_pretrained('FremyCompany/BioLORD-2023-M')
model = AutoModel.from_pretrained('FremyCompany/BioLORD-2023-M')
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
print("句子嵌入:")
print(sentence_embeddings)
许可证
我对该模型的贡献受MIT许可证保护。
然而,由于用于训练该模型的数据源自UMLS和SnomedCT,您在使用该模型前需要确保拥有UMLS和SnomedCT的适当许可。在大多数国家,UMLS和SnomedCT都是免费的,但您可能需要创建一个账户并每年报告数据使用情况以保持有效许可。