|
|
|
|
|
desc = """ |
|
### Named Entity Recognition |
|
|
|
Chain that does named entity recognition with arbitrary labels. [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/srush/MiniChain/blob/master/examples/ner.ipynb) |
|
|
|
(Adapted from [promptify](https://github.com/promptslab/Promptify/blob/main/promptify/prompts/nlp/templates/ner.jinja)). |
|
""" |
|
|
|
|
|
|
|
|
|
from minichain import prompt, transform, show, OpenAI |
|
import json |
|
|
|
@prompt(OpenAI(), template_file = "ner.pmpt.tpl") |
|
def ner_extract(model, kwargs): |
|
return model(kwargs) |
|
|
|
@transform() |
|
def to_json(chat_output): |
|
return json.loads(chat_output) |
|
|
|
@prompt(OpenAI()) |
|
def team_describe(model, inp): |
|
query = "Can you describe these basketball teams? " + \ |
|
" ".join([i["E"] for i in inp if i["T"] =="Team"]) |
|
return model(query) |
|
|
|
|
|
def ner(text_input, labels, domain): |
|
extract = to_json(ner_extract(dict(text_input=text_input, labels=labels, domain=domain))) |
|
return team_describe(extract) |
|
|
|
|
|
|
|
gradio = show(ner, |
|
examples=[["An NBA playoff pairing a year ago, the 76ers (39-20) meet the Miami Heat (32-29) for the first time this season on Monday night at home.", "Team, Date", "Sports"]], |
|
description=desc, |
|
subprompts=[ner_extract, team_describe], |
|
code=open("ner.py", "r").read().split("$")[1].strip().strip("#").strip(), |
|
) |
|
|
|
if __name__ == "__main__": |
|
gradio.queue().launch() |
|
|