Skip to main content

Maturity level-1

Kazu - Biomedical NLP Framework

Kazu - Biomedical NLP Framework

Welcome to Kazu (Korea AstraZeneca University), a python biomedical NLP framework built in collaboration with Korea University, designed to handle production workloads.

This library aims to simplify the process of using state of the art NLP research in production systems. Some of the research contained within are our own, but most of it comes from the community, for which we are immensely grateful.

If you want to use Kazu, please cite our EMNLP 2022 publication! (citation link)

Please click here for the web live demo (Swagger UI) from http://kazu.korea.ac.kr/

Please click here for the TinyBERN2 training and evaluation code

Quickstart

Install

Python version 3.9 or higher is required (tested with Python 3.11).

Either:

pip install kazu

or download the wheel from the release page and install locally.

If you intend to use Mypy on your own codebase, consider installing Kazu using:

pip install kazu[typed]

This will pull in typing stubs for kazu's dependencies (such as types-requests for Requests) so that mypy has access to as much relevant typing information as possible when type checking your codebase. Otherwise (depending on mypy config), you may see errors when running mypy like:

.venv/lib/python3.10/site-packages/kazu/steps/linking/post_processing/xref_manager.py:10: error: Library stubs not installed for "requests" [import]

Getting the model pack

For most functionality, you will also need the Kazu model pack. This is tied to each release, and can be found on the release page. Once downloaded, extract the archive and:

export KAZU_MODEL_PACK=<path to the extracted archive>

Kazu is highly configurable (using Hydra), although it comes preconfigured with defaults appropriate for most literature processing use cases. To make use of these, and process a simple document:

import hydra
from hydra.utils import instantiate

from kazu.data.data import Document
from kazu.pipeline import Pipeline
from kazu.utils.constants import HYDRA_VERSION_BASE
from pathlib import Path
import os

# the hydra config is kept in the model pack
cdir = Path(os.environ["KAZU_MODEL_PACK"]).joinpath("conf")


@hydra.main(
    version_base=HYDRA_VERSION_BASE, config_path=str(cdir), config_name="config"
)
def kazu_test(cfg):
    pipeline: Pipeline = instantiate(cfg.Pipeline)
    text = "EGFR mutations are often implicated in lung cancer"
    doc = Document.create_simple_document(text)
    pipeline([doc])
    print(f"{doc.get_entities()}")


if __name__ == "__main__":
    kazu_test()

Documentation

Find our docs here

License

Licensed under Apache 2.0.

Kazu includes elements under compatible licenses (full licenses are in relevant files or as indicated):

  • Some elements are a modification of code licensed under MIT by Explosion.AI - see the README here.
  • The doc build process (conf.py's linkcode_resolve function) uses code modified from pandas, in turn modified from numpy. See PANDAS_LICENSE.txt and NUMPY_LICENSE.txt
  • Elements of the model distillation code are inspired by or modified from Huawei Noah's Ark Lab TinyBERT and DMIS-Lab's BioBERT. See the details in dataprocessor.py, models.py and tiny_transformer.py.
  • PLSapbertModel is inspired by the code from sapbert, licensed under MIT. See the file for details, and see the SapBert section below regarding use of the model.
  • GildaUtils in the string_normalizer.py file is modified from Gilda. See the file for full details including the full BSD 2-Clause license.
  • The AbbreviationFinderStep uses KazuAbbreviationDetector, which is a modified version of SciSpacy's abbreviation finding algorithm, licensed under Apache 2.0 - see the files for full details.
  • The JWTAuthenticationBackend Starlette Middleware in jwtauth.py is originally from starlette-jwt, licensed under BSD 3-Clause.
  • The AddRequestIdMiddleware Starlette Middleware in req_id_header.py is modified from 'CustomHeaderMiddleware' in the Starlette Middleware docs. This is licensed under BSD 3-Clause along with the rest of Starlette.
  • The kazu-jvm folder includes files like gradelw and gradelw.bat distributed by gradle under Apache 2.0 - see the files for details.
  • kazu/data/data.py contains AutoNameEnum, which is AutoName from the Python Enum Docs licensed under Zero-Clause BSD.

Dataset licences

For the version of each ontology currently in use, please see the 'data_origin' field in kazu/conf/ontologies

Under Creative Commons Attribution-Share Alike 3.0 Unported Licence

Chembl

ChEMBL data is from http://www.ebi.ac.uk/chembl

CLO

CLO data is from http://www.ebi.ac.uk/ols/ontologies/clo

UBERON

UBERON data is from http://www.ebi.ac.uk/ols/ontologies/uberon

Under Creative Commons Attribution 4.0 Unported License

MONDO

MONDO data is from http://www.ebi.ac.uk/ols/ontologies/mondo

CELLOSAURUS

CELLOSAURUS data is from https://www.cellosaurus.org/

Gene Ontology

Gene Ontology data is from http://purl.obolibrary.org/obo/go.owl

Other licenced datasets and models

HPO

This service/product uses the Human Phenotype Ontology (version information). Find out more at http://www.human-phenotype-ontology.org

Freely licenced under https://hpo.jax.org/app/license

Sebastian Köhler, Michael Gargano, Nicolas Matentzoglu, Leigh C Carmody, David Lewis-Smith, Nicole A Vasilevsky, Daniel Danis, Ganna Balagura, Gareth Baynam, Amy M Brower, Tiffany J Callahan, Christopher G Chute, Johanna L Est, Peter D Galer, Shiva Ganesan, Matthias Griese, Matthias Haimel, Julia Pazmandi, Marc Hanauer, Nomi L Harris, Michael J Hartnett, Maximilian Hastreiter, Fabian Hauck, Yongqun He, Tim Jeske, Hugh Kearney, Gerhard Kindle, Christoph Klein, Katrin Knoflach, Roland Krause, David Lagorce, Julie A McMurry, Jillian A Miller, Monica C Munoz-Torres, Rebecca L Peters, Christina K Rapp, Ana M Rath, Shahmir A Rind, Avi Z Rosenberg, Michael M Segal, Markus G Seidel, Damian Smedley, Tomer Talmy, Yarlalu Thomas, Samuel A Wiafe, Julie Xian, Zafer Yüksel, Ingo Helbig, Christopher J Mungall, Melissa A Haendel, Peter N Robinson,

The Human Phenotype Ontology in 2021,

Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D1207–D1217, https://doi.org/10.1093/nar/gkaa1043

OPEN TARGETS

Open Targets datasets are kindly provided by www.opentargets.org, which are free for commercial use cases https://platform-docs.opentargets.org/licence

Ochoa, D. et al. (2021). Open Targets Platform: supporting systematic drug–target identification and prioritisation. Nucleic Acids Research. https://doi.org/10.1093/nar/gkaa1027

STANZA

The Stanza framework:

Peng Qi, Yuhao Zhang, Yuhui Zhang, Jason Bolton and Christopher D. Manning. 2020. Stanza: A Python Natural Language Processing Toolkit for Many Human Languages. In Association for Computational Linguistics (ACL) System Demonstrations. 2020. https://arxiv.org/abs/2003.07082

Biomedical NLP models are derived from:

Yuhao Zhang, Yuhui Zhang, Peng Qi, Christopher D. Manning, Curtis P. Langlotz. Biomedical and Clinical English Model Packages in the Stanza Python NLP Library, Journal of the American Medical Informatics Association. 2021. https://doi.org/10.1093/jamia/ocab090

SCISPACY

Biomedical scispacy models are derived from

Mark Neumann, Daniel King, Iz Beltagy, Waleed Ammar ScispaCy: Fast and Robust Models for Biomedical Natural Language Processing Proceedings of the 18th BioNLP Workshop and Shared Task ACL 2019 https://www.aclweb.org/anthology/W19-5034

SAPBERT

Kazu uses a distilled form of SAPBERT, from

Fangyu Liu, Ehsan Shareghi, Zaiqiao Meng, Marco Basaldella, Nigel Collier Self-Alignment Pretraining for Biomedical Entity Representations ACL 2021 https://aclanthology.org/2021.naacl-main.334/

SETH

Kazu's SethStep uses Py4j to call the SETH mutation finder.

Thomas, P., Rocktäschel, T., Hakenberg, J., Mayer, L., and Leser, U. (2016). SETH detects and normalizes genetic variants in text Bioinformatics (2016) http://dx.doi.org/10.1093/bioinformatics/btw234

Opsin

Kazu's OpsinStep uses Py4j to call OPSIN: Open Parser for Systematic IUPAC nomenclature.

Daniel M. Lowe, Peter T. Corbett, Peter Murray-Rust, and Robert C. Glen Chemical Name to Structure: OPSIN, an Open Source Solution Journal of Chemical Information and Modeling 2011 51 (3), 739-753 DOI: 10.1021/ci100384d

Release files for kazu 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kazu 1.5.0
File Size Uploaded
kazu-1.5.0.tar.gz 192.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kazu 1.5.0
File Interpreter ABI Platform
kazu-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 442.6 kB

Release files / kazu-1.5.0.tar.gz

Download URL kazu-1.5.0.tar.gz
Size 192.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9824a5999c7fb8d8017cb7ec6b1b942adb6468d187ca9c01df860a51654ab096
BLAKE2b-256 checksum
How to use checksums
4414a2ce2483d23e5f4e29af459be73e46ec002847dbe33773afc30b4714f859
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.25.0

Release files / kazu-1.5.0-py3-none-any.whl

Download URL kazu-1.5.0-py3-none-any.whl
Size 250.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75b48a835f2866f729b9f394a4d791e6e545f7a79e85bab49f61f9de686b1bcf
BLAKE2b-256 checksum
How to use checksums
9704a47e05e22f8c5c3474ea765d7f7b68b1f51123dc8c3ae26d0602bad2ccca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.25.0

Release history Release notifications | RSS feed

2.4.0

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.5.1

2 release files

This release

1.5.0 This release

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.0

2 release files

0.0.25

1 release file

0.0.24

1 release file

0.0.19

1 release file

0.0.16

1 release file

0.0.15

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page