[أخبار | 22 أغسطس 2021] تم دمج Sapbert في مجموعة أدوات التعلم العميقة في NVIDIA ككيان ربطها (شكرًا لك NVIDIA!). يمكنك اللعب معها في Google Colab هذا.
يحمل هذا الريبو الكود والبيانات والأوزان المسبقة لـ (1) نموذج SAPBERT المقدم في ورقة NAACL 2021: تمثيل التحالف الذاتي لتمثيل الكيان الطبي الحيوي ؛ (2) SAPBERT عبر اللغات والكيان الطبيب الحيوي عبر اللغات يربط بين المعيار ( XL-BEL ) المقترح في ورقة ACL 2021: تمثيلات التعلم المتخصصة لربط الكيان الطبيب الحيوي بين اللغات .

SAPBERT القياسية كما هو موضح في [Liu et al. ، NAACL 2021]. تم تدريبه مع UMLS 2020AA (الإنجليزية فقط) ، باستخدام microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract-fulltext كنموذج أساسي. بالنسبة لـ [sapbert] ، استخدم [CLS] (قبل pooler) كتمثيل للمدخلات ؛ بالنسبة لـ [sapbert-mean-token] ، استخدم التجول المتوسط في جميع الرموز.
SAPBERT عبر اللغة كما هو موضح في [Liu et al. ، ACL 2021]. تدرب مع UMLS 2020AB (جميع اللغات) ، باستخدام xlm-roberta-base / xlm-roberta-large كنموذج أساسي. استخدم [CLS] (قبل pooler) كتمثيل للمدخلات.
يتم اختبار الرمز باستخدام Python 3.8 ، Torch 1.7.0 ومحولات Huggingface 4.4.2. يرجى عرض requirements.txt لمزيد من التفاصيل.
يقوم البرنامج النصي التالي بتحويل قائمة الأوتار (أسماء الكيانات) إلى تضمينات.
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" )
model = AutoModel . from_pretrained ( "cambridgeltl/SapBERT-from-PubMedBERT-fulltext" ). cuda ()
# replace with your own list of entity names
all_names = [ "covid-19" , "Coronavirus infection" , "high fever" , "Tumor of posterior wall of oropharynx" ]
bs = 128 # batch size during inference
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 ][:, 0 ,:] # use CLS representation as the embedding
all_embs . append ( cls_rep . cpu (). detach (). numpy ())
all_embs = np . concatenate ( all_embs , axis = 0 )يرجى الاطلاع على الاستدلال/الاستدلال _on_snomed.ipynb للحصول على مثال أكثر شمولاً.
استخراج بيانات التدريب من UMLS كما هو موضح في training_data/generate_pretraining_data.ipynb (لا يمكننا إصدار ملف التدريب مباشرة بسبب مشكلات الترخيص).
يجري:
>> cd train/
>> ./pretrain.sh 0,1 حيث يحدد 0,1 أجهزة GPU.
للتخلي عن مجموعة البيانات المخصصة ، قم بإنشاء بيانات بتنسيق
concept_id || entity_name_1 || entity_name_2
...
حيث entity_name_1 و entity_name_2 عبارة عن أزواج مرادف (تنتمي إلى نفس المفهوم concept_id ) الذي تم أخذ عينات منه من مجموعة بيانات محددة. إذا ارتبط أحد المفاهيم بأسماء كيانات متعددة في مجموعة البيانات ، فيمكنك اجتياز جميع مجموعات الزوجين.
لضرب SAP عبر اللغات مع بيانات متوازية للمجال العام (Muse ، عناوين الويكي ، أو كليهما) ، يمكن العثور على البيانات في training_data/general_domain_parallel_data/ . مثال نص: train/xling_train.sh .
للتقييم (كل من Monlingual و Cross-Lingual) ، يرجى عرض evaluation/README.md للحصول على التفاصيل. evaluation/xl_bel/ يحتوي على معيار XL-BEL المقترح في [Liu et al. ، ACL 2021].
Sapbert:
@inproceedings { liu2021self ,
title = { Self-Alignment Pretraining for Biomedical Entity Representations } ,
author = { Liu, Fangyu and Shareghi, Ehsan and Meng, Zaiqiao and Basaldella, Marco and Collier, Nigel } ,
booktitle = { Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies } ,
pages = { 4228--4238 } ,
month = jun,
year = { 2021 }
}Sapbert عبر اللغات و XL-BEL:
@inproceedings { liu2021learning ,
title = { Learning Domain-Specialised Representations for Cross-Lingual Biomedical Entity Linking } ,
author = { Liu, Fangyu and Vuli{'c}, Ivan and Korhonen, Anna and Collier, Nigel } ,
booktitle = { Proceedings of ACL-IJCNLP 2021 } ,
pages = { 565--574 } ,
month = aug,
year = { 2021 }
}يتم تعديل أجزاء من الكود من Biosyn. نحن نقدر المؤلفين لجعل Biosyn مفتوح المصدر.
Sapbert هو معهد ماساتشوستس للتكنولوجيا مرخصة. انظر ملف الترخيص للحصول على التفاصيل.