Mapping Entities with Corresponding MeSH Codes

Description

This model maps entities extracted from text to their corresponding MeSH (Medical Subject Headings) codes.

It performs a direct lookup against the full training text, providing fast, exact-match code mapping without requiring embeddings at inference time.

Trained on the current NLM MeSH descriptor, entry-term, and supplemental-concept dataset (release 2026).

Live Demo Open in Colab Copy S3 URI

How to use


document_assembler = DocumentAssembler()\
    .setInputCol("text")\
    .setOutputCol("document")

doc2chunk = Doc2Chunk()\
    .setInputCols(["document"])\
    .setOutputCol("ner_chunk")

mesh_mapper = ChunkMapperModel.pretrained("mesh_mapper_2026", "en", "clinical/models")\
    .setInputCols(["ner_chunk"])\
    .setOutputCol("mappings")\
    .setRels(["mesh_code"])

pipeline = Pipeline(stages=[
    document_assembler, doc2chunk, mesh_mapper
])

data = spark.createDataFrame([["diabetes mellitus"],["aspirin"],["rabies"],["diet"]]).toDF("text")
result = pipeline.fit(data).transform(data)


document_assembler = nlp.DocumentAssembler()\
    .setInputCol("text")\
    .setOutputCol("document")

doc2chunk = nlp.Doc2Chunk()\
    .setInputCols(["document"])\
    .setOutputCol("ner_chunk")

mesh_mapper = medical.ChunkMapperModel.pretrained("mesh_mapper_2026", "en", "clinical/models")\
    .setInputCols(["ner_chunk"])\
    .setOutputCol("mappings")\
    .setRels(["mesh_code"])

pipeline = nlp.Pipeline(stages=[
    document_assembler, doc2chunk, mesh_mapper
])

data = spark.createDataFrame([["diabetes mellitus"],["aspirin"],["rabies"],["diet"]]).toDF("text")
result = pipeline.fit(data).transform(data)


val documentAssembler = new DocumentAssembler()
    .setInputCol("text")
    .setOutputCol("document")

val doc2Chunk = new Doc2Chunk()
    .setInputCols(Array("document"))
    .setOutputCol("ner_chunk")

val meshMapper = ChunkMapperModel.pretrained("mesh_mapper_2026", "en", "clinical/models")
    .setInputCols(Array("ner_chunk"))
    .setOutputCol("mappings")
    .setRels(Array("mesh_code"))

val pipeline = new Pipeline().setStages(Array(
    documentAssembler, doc2Chunk, meshMapper
))

val data = Seq("diabetes mellitus","aspirin","rabies","diet").toDF("text")
val result = pipeline.fit(data).transform(data)

Results

| ner_chunk         | mesh_code   |
|:------------------|:------------|
| diabetes mellitus | D003920     |
| aspirin           | D001241     |
| rabies            | D011818     |
| diet              | D004032     |

Model Information

Model Name: mesh_mapper_2026
Compatibility: Healthcare NLP 6.4.1+
License: Licensed
Edition: Official
Input Labels: [ner_chunk]
Output Labels: [mappings]
Language: en
Size: 24.8 MB