--- tags: - flair - entity-mention-linker --- ## biosyn-sapbert-bc5cdr-chemical-no-ab3p Biomedical Entity Mention Linking for chemical: - Model: [dmis-lab/biosyn-sapbert-bc5cdr-chemical](https://huggingface.co/dmis-lab/biosyn-sapbert-bc5cdr-chemical) - Dictionary: [CTD Chemicals](https://ctdbase.org/help/chemDetailHelp.jsp) (See [License](https://ctdbase.org/about/legal.jsp)) NOTE: This model variant does not perform abbreviation resolution via [A3bP](https://github.com/ncbi-nlp/Ab3P) ### Demo: How to use in Flair Requires: - **[Flair](https://github.com/flairNLP/flair/)>=0.14.0** (`pip install flair` or `pip install git+https://github.com/flairNLP/flair.git`) ```python from flair.data import Sentence from flair.models import Classifier, EntityMentionLinker from flair.tokenization import SciSpacyTokenizer sentence = Sentence( "The mutation in the ABCD1 gene causes X-linked adrenoleukodystrophy, " "a neurodegenerative disease, which is exacerbated by exposure to high " "levels of mercury in dolphin populations.", use_tokenizer=SciSpacyTokenizer() ) # load hunflair to detect the entity mentions we want to link. tagger = Classifier.load("hunflair-chemical") tagger.predict(sentence) # load the linker and dictionary linker = EntityMentionLinker.load("chemical-linker-no-abbres") linker.predict(sentence) # print the results for each entity mention: for span in sentence.get_spans(tagger.label_type): for link in span.get_labels(linker.label_type): print(f"{span.text} -> {link.value}") ``` As an alternative to downloading the already precomputed model (much storage). You can also build the model and compute the embeddings for the dataset using: ```python from flair.models.entity_mention_linking import BioSynEntityPreprocessor linker = EntityMentionLinker.build("dmis-lab/biosyn-sapbert-bc5cdr-chemical", dictionary_name_or_path="ctd-chemicals", preprocessor=BioSynPreprocessor(), hybrid_search=True) ``` This will reduce the download requirements, at the cost of computation.