🚀 OpenBioNER
OpenBioNERは、オープンドメインの生物医学NERに特化した軽量のBERTベースのモデルです。このモデルは、自然言語の説明のみに基づいて未知のターゲットエンティティタイプを見つけることができ、再トレーニングの必要がありません。
OpenBioNERは、LLMの自己教師付き学習によって生成された合成シルバーアノテーションで事前学習されています。多数の実験により、OpenBioNERはUniNERやGPT - 4oなどの特殊なLLMを上回り、さまざまな生物医学ベンチマークでゼロショット設定において最大10%のF1スコアの向上を達成します。GLiNERなどの小規模なベースラインと比較して、パラメータを最大4倍少なく使用しながら、より良い性能を達成します。
🚀 クイックスタート
OpenBioNERは、オープンドメインの生物医学NERに特化した軽量のBERTベースのモデルです。自然言語の説明のみで未知のエンティティタイプを検出でき、再トレーニング不要です。事前学習には合成シルバーアノテーションを使用し、多くのベンチマークで高い性能を発揮します。
✨ 主な機能
- 自然言語の説明のみで未知のエンティティタイプを検出。
- 再トレーニング不要で多様な生物医学データセットに対応。
- 事前学習に合成シルバーアノテーションを使用し、高い汎化性能を実現。
- 小規模なパラメータで高性能を達成。
📦 インストール
このモデルを使用するには、IBM Zshotライブラリをインストールする必要があります(次のリリース前はメインブランチから)。
!pip install git+https://github.com/IBM/zshot.git@main gliner --quiet
!python -m spacy download en_core_web_sm
💻 使用例
基本的な使用法
import spacy
from zshot import PipelineConfig, displacy
from zshot.linker import LinkerSMXM
from zshot.evaluation.metrics._seqeval._seqeval import Seqeval
from zshot.utils.data_models import Entity
from zshot.evaluation.zshot_evaluate import evaluate, prettify_evaluate_report
entities = [
Entity(name='BACTERIUM', description='A bacterium refers to a type of microorganism that can exist as a single cell and may cause infections or play a role in various biological processes. Examples include species like Streptococcus pneumoniae and Streptomyces ahygroscopicus.', vocabulary=None),
]
nlp = spacy.blank("en")
nlp_config = PipelineConfig(
linker=LinkerSMXM(model_name="disi-unibo-nlp/openbioner-base"),
entities=entities,
device='cuda'
)
nlp.add_pipe("zshot", config=nlp_config, last=True)
sentence = "Impact of cofactor - binding loop mutations on thermotolerance and activity of E. coli transketolase"
doc = nlp(sentence)
displacy.render(doc, style="ent")
📚 ドキュメント
リンク
性能
OpenBioNERは、すべての競合モデルを上回り、すべてのデータセットで最高の平均性能を達成します。
モデル |
サイズ |
AnatEM |
NCBI |
JNLPBA |
BC2GM |
BC4CHEMD |
BC5CDR |
JNLPBA - R |
MedMentions - R |
平均 |
GPT - 4o |
- |
38.7 |
50.0 |
41.9 |
37.3 |
36.4 |
66.4 |
26.6 |
49.1 |
43.3 |
UniNER |
7B |
25.1 |
60.4 |
48.1 |
46.2 |
47.9 |
68.0 |
50.2 |
53.4 |
49.9 |
GLiNER_large - v1 |
459M |
33.3 |
61.9 |
57.1 |
47.9 |
43.1 |
66.4 |
51.9 |
53.4 |
51.9 |
OpenBioNER (Ours) |
110M |
35.2 |
58.5 |
57.1 |
49.1 |
48.0 |
60.4 |
63.9 |
50.9 |
52.9 |
⚠️ 重要な注意事項
zshot
ライブラリを使用して評価を実行すると、論文で報告されている結果とは若干異なる結果になる場合があります。この不一致は、トークンアラインメントの違いによるものです。zshot
はspaCyの文字ベースのスパンマッチングを使用していますが、私たちの実験ではBERTベースのNERパイプラインによって処理されるトークンレベルのアラインメントを使用しています。これらの違いは、特にサブワードトークナイゼーションや句読点のある場合に、エンティティスパンのマッチングと評価に影響を与える可能性があります。
🧬 効果的なエンティティタイプの説明の書き方
エンティティタイプの説明は、OpenBioNERの汎化性能を向上させるために重要です。適切に書かれた説明は、モデルがタイプを曖昧さを解消し、まれなクラスを処理し、多様なデータセットでの実際の使用に合わせるのに役立ちます。
✅ ベストプラクティス
- 明確な定義から始める: エンティティタイプが何であるかを簡潔に説明します。
- 機能やコンテキストを含める: それが何をするか、その目的、またはそれが現れる場所を追加します。
- 3 - 5個の具体的な例を列挙する: ドメインに関連する例(例えば、実際の病気、タンパク質、または食品)を使用します。
- サブタイプや同義語を記載する(オプション): 語彙のバリエーションやまれな言及を捉えるのに役立ちます。
- 簡潔に保つ: 構造がよく整った1 - 3文が理想的です。
⚠️ 避けるべき一般的な間違い
- 曖昧または過度に一般的な説明
- 例がない
- 単なる用語のリスト
- 冗長または循環的な表現
🧪 テンプレート(推奨形式)
A [TYPE] refers to [concise definition]. It includes examples such as [example1], [example2], and [example3].
👥 作者
📬 連絡先
質問、協力、またはフィードバックについては、自由に連絡してください。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。