license: other
license_name: public-domain
license_link: LICENSE
MedCPT 简介
MedCPT 能够生成生物医学文本的嵌入向量,可用于语义搜索(密集检索)。该模型包含两个编码器:
本仓库包含 MedCPT 查询编码器。
MedCPT 通过前所未有的 2.55 亿对 PubMed 搜索日志中的查询-文章对进行了预训练,并在多个零样本生物医学信息检索数据集上实现了最先进的性能。一般来说,有以下三种使用场景:
- 使用两个编码器进行查询到文章的搜索。
- 使用查询编码器进行查询表示以用于聚类或查询到查询的搜索。
- 使用文章编码器进行文章表示以用于聚类或文章到文章的搜索。
更多详情,请参阅我们的论文(《生物信息学》,2023 年)。请注意,发布的版本与论文中报告的版本略有不同。
案例 1. 使用 MedCPT 查询编码器
import torch
from transformers import AutoTokenizer, AutoModel
model = AutoModel.from_pretrained("ncbi/MedCPT-Query-Encoder")
tokenizer = AutoTokenizer.from_pretrained("ncbi/MedCPT-Query-Encoder")
queries = [
"糖尿病治疗",
"如何治疗糖尿病?",
"一名 45 岁男性患者在过去 3 个月内出现口渴加重和尿频症状。",
]
with torch.no_grad():
encoded = tokenizer(
queries,
truncation=True,
padding=True,
return_tensors='pt',
max_length=64,
)
embeds = model(**encoded).last_hidden_state[:, 0, :]
print(embeds)
print(embeds.size())
输出结果如下:
tensor([[ 0.0413, 0.0084, -0.0491, ..., -0.4963, -0.3830, -0.3593],
[ 0.0801, 0.1193, -0.0905, ..., -0.5380, -0.5059, -0.2944],
[-0.3412, 0.1521, -0.0946, ..., 0.0952, 0.1660, -0.0902]])
torch.Size([3, 768])
这些嵌入向量与 MedCPT 文章编码器生成的嵌入向量处于同一空间。
案例 2. 使用您的查询在 PubMed 中进行语义搜索
我们已在 https://ftp.ncbi.nlm.nih.gov/pub/lu/MedCPT/pubmed_embeddings/ 提供了由 MedCPT 文章编码器生成的所有 PubMed 文章的嵌入向量。
您可以下载这些嵌入向量,使用您的查询在 PubMed 中进行搜索。
致谢
本工作由美国国立卫生研究院、美国国家医学图书馆的内部研究计划支持。
免责声明
此工具展示了美国国家生物技术信息中心/国家医学图书馆计算生物学分部的科研成果。本网站生成的信息未经临床专业人员审核和监督,不适用于直接诊断或医疗决策。个人不应仅基于本网站提供的信息改变其健康行为。美国国立卫生研究院不会独立验证本工具生成信息的有效性或实用性。如对本网站提供的信息有疑问,请咨询医疗专业人士。更多关于美国国家生物技术信息中心免责政策的信息,请参阅相关页面。
引用
如果您觉得本仓库对您有所帮助,请引用 MedCPT:
@article{jin2023medcpt,
title={MedCPT: Contrastive Pre-trained Transformers with large-scale PubMed search logs for zero-shot biomedical information retrieval},
author={Jin, Qiao and Kim, Won and Chen, Qingyu and Comeau, Donald C and Yeganova, Lana and Wilbur, W John and Lu, Zhiyong},
journal={Bioinformatics},
volume={39},
number={11},
pages={btad651},
year={2023},
publisher={Oxford University Press}
}