🚀 FremyCompany/BioLORD-2023
このモデルは、臨床文や生物医学概念に対して意味のある表現を生成するための新しい事前学習戦略であるBioLORDを使用して学習されました。最新の手法では、同じ概念を指す名前の表現の類似度を最大化し、対照学習によって崩壊を防ぐことが行われています。しかし、生物医学的な名前が必ずしも自明ではないため、時には非意味的な表現が生じることがあります。
BioLORDは、定義と生物医学オントロジーから構成される多関係知識グラフから導出された短い説明を使用して概念表現を基盤とすることで、この問題を克服しています。この基盤により、当社のモデルはオントロジーの階層構造により密接に一致する、より意味的な概念表現を生成します。BioLORD-2023は、臨床文(MedSTS)と生物医学概念(EHR-Rel-B)の両方におけるテキスト類似性に関して新たな最先端技術を確立しています。
このモデルは、sentence-transformers/all-mpnet-base-v2をベースに、BioLORD-DatasetとAutomatic Glossary of Clinical Terminology (AGCT)からのLLM生成定義でさらに微調整されました。
🚀 クイックスタート
このモデルは、文や段落を768次元の密ベクトル空間にマッピングし、クラスタリングや意味検索などのタスクに使用できるsentence-transformersモデルです。このモデルは生物医学分野向けに微調整されています。汎用テキストの埋め込みを生成する能力も維持していますが、EHRレコードや臨床ノートなどの医療文書を処理しようとしている場合には、より有用です。文とフレーズの両方を同じ潜在空間に埋め込むことができます。
sentence-transformersをインストールすると、このモデルの使用が簡単になります。
pip install -U sentence-transformers
その後、次のようにモデルを使用できます。
from sentence_transformers import SentenceTransformer
sentences = ["Cat scratch injury", "Cat scratch disease", "Bartonellosis"]
model = SentenceTransformer('FremyCompany/BioLORD-2023')
embeddings = model.encode(sentences)
print(embeddings)
✨ 主な機能
- 臨床文や生物医学概念に対して意味のある表現を生成する。
- 最新の手法の問題を克服し、より意味的な概念表現を生成する。
- 臨床文と生物医学概念の両方におけるテキスト類似性に関して新たな最先端技術を確立する。
- 文や段落を768次元の密ベクトル空間にマッピングし、クラスタリングや意味検索などのタスクに使用できる。
- 生物医学分野向けに微調整されている。
📦 インストール
pip install -U sentence-transformers
💻 使用例
基本的な使用法
from sentence_transformers import SentenceTransformer
sentences = ["Cat scratch injury", "Cat scratch disease", "Bartonellosis"]
model = SentenceTransformer('FremyCompany/BioLORD-2023')
embeddings = model.encode(sentences)
print(embeddings)
高度な使用法
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 = ["Cat scratch injury", "Cat scratch disease", "Bartonellosis"]
tokenizer = AutoTokenizer.from_pretrained('FremyCompany/BioLORD-2023')
model = AutoModel.from_pretrained('FremyCompany/BioLORD-2023')
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("Sentence embeddings:")
print(sentence_embeddings)
📚 ドキュメント
兄弟モデル
このモデルには、BioLORD-2023シリーズの他のモデルが付随しており、確認することをお勧めします。
また、昨年のモデルと論文も見ることができます。
学習戦略
3フェーズの概要

対照学習フェーズ:詳細

自己蒸留フェーズ:詳細

引用
このモデルは、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},
}
📄 ライセンス
このモデルに対する私自身の貢献はMITライセンスの対象となります。ただし、このモデルの学習に使用されたデータはUMLSとSnomedCTに由来するため、このモデルを使用する前に、UMLSとSnomedCTの適切なライセンスを取得していることを確認する必要があります。UMLSとSnomedCTはほとんどの国で無料ですが、アカウントを作成し、データの使用状況を毎年報告する必要がある場合があります。