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-C
该模型使用BioLORD进行训练,这是一种新的预训练策略,用于为临床句子和生物医学概念生成有意义的表示。
最先进的方法通过最大化指代同一概念的名称在表示中的相似性,并通过对比学习防止崩溃来操作。然而,由于生物医学名称并不总是自解释的,这有时会导致非语义表示。
BioLORD通过使用定义以及从由生物医学本体组成的多关系知识图谱中提取的简短描述来锚定其概念表示,从而克服了这一问题。得益于这种锚定,我们的模型生成了更符合本体层次结构的语义概念表示。BioLORD-2023在临床句子(MedSTS)和生物医学概念(EHR-Rel-B)的文本相似性上均建立了新的最先进水平。
该模型基于sentence-transformers/all-mpnet-base-v2,并进一步在BioLORD数据集和来自自动临床术语词汇表(AGCT)的LLM生成定义上进行了微调。
兄弟模型
该模型属于BioLORD-2023系列,您可能还想查看其他模型:
您还可以查看去年的模型和论文:
训练策略
三阶段概述

对比阶段:详情

自蒸馏阶段:详情

引用
该模型伴随论文BioLORD-2023: Learning Ontological Representations from Definitions发布。当您使用此模型时,请引用原始论文如下:
@article{remy-etal-2023-biolord,
author = {Remy, François and Demuynck, Kris and Demeester, Thomas},
title = "{BioLORD-2023: semantic textual representations fusing large language models and clinical knowledge graph insights}",
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维密集向量空间,可用于聚类或语义搜索等任务。该模型针对生物医学领域进行了微调。虽然它保留了生成通用文本嵌入的良好能力,但如果您尝试处理电子健康记录(EHR)或临床笔记等医学文档,它将更加有用。句子和短语都可以嵌入到相同的潜在空间中。
安装sentence-transformers后,使用此模型变得简单:
pip install -U sentence-transformers
然后您可以像这样使用模型:
from sentence_transformers import SentenceTransformer
sentences = ["猫抓伤", "猫抓病", "巴尔通体病"]
model = SentenceTransformer('FremyCompany/BioLORD-2023-C')
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-C')
model = AutoModel.from_pretrained('FremyCompany/BioLORD-2023-C')
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是免费的,但您可能需要创建一个账户并每年报告数据使用情况以保持有效许可证。