Noetico
Turning biomedical literature into a knowledge graph, and answering questions over it.
Biomedical findings are scattered across the literature, one relation at a time: this gene with that disease, this drug with that target. At Noetico I worked on turning them into a knowledge graph, which records how genes, diseases, drugs, and other entities relate to one another, and on answering questions over it in plain English.
Extracting facts from text
The pipeline used HunFlair to find biomedical entities in text, but it recognised only some of the entity types the client's graph needed. I extended it with training data built from its own mistakes: comparing its output with 10,000 annotated sentences and keeping only the sentences where it had missed an entity. On those sentences its existing taggers were fine-tuned and new ones trained for anatomy, drugs, gene groups, and phenotypes, then recombined into one model.
I then linked each entity to the client's own ontology, through eight knowledge bases covering about 220,000 concepts, one per entity type. The linking doubled as a filter: a fact was kept only if both of its entities linked, which removed many of the recogniser's false positives and gave every fact the same identifiers as the graph. Relations between pairs of entities were classified with a pretrained biomedical relation model, used as supplied.
Answering questions over the graph
I also built a knowledge-graph agent for the question-answering service, in which an LLM, given the graph's schema and worked examples, turned a plain-English question into a TypeQL query, ran it against TypeDB, and wrote the answer from the result.