Spaces:
Runtime error
Runtime error
Upload with huggingface_hub
Browse files- app.py +57 -0
- ner.pmpt.tpl +10 -0
- requirements.txt +3 -0
app.py
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# # NER
|
2 |
+
|
3 |
+
# Notebook implementation of named entity recognition.
|
4 |
+
# Adapted from [promptify](https://github.com/promptslab/Promptify/blob/main/promptify/prompts/nlp/templates/ner.jinja).
|
5 |
+
|
6 |
+
import json
|
7 |
+
|
8 |
+
import minichain
|
9 |
+
|
10 |
+
# Prompt to extract NER tags as json
|
11 |
+
|
12 |
+
class NERPrompt(minichain.TemplatePrompt):
|
13 |
+
template_file = "ner.pmpt.tpl"
|
14 |
+
|
15 |
+
def parse(self, response, inp):
|
16 |
+
return json.loads(response)
|
17 |
+
|
18 |
+
# Use NER to ask a simple queston.
|
19 |
+
|
20 |
+
class TeamPrompt(minichain.Prompt):
|
21 |
+
def prompt(self, inp):
|
22 |
+
return "Can you describe these basketball teams? " + \
|
23 |
+
" ".join([i["E"] for i in inp if i["T"] =="Team"])
|
24 |
+
|
25 |
+
def parse(self, response, inp):
|
26 |
+
return response
|
27 |
+
|
28 |
+
# Run the system.
|
29 |
+
|
30 |
+
with minichain.start_chain("ner") as backend:
|
31 |
+
p1 = NERPrompt(backend.OpenAI())
|
32 |
+
p2 = TeamPrompt(backend.OpenAI())
|
33 |
+
prompt = p1.chain(p2)
|
34 |
+
results = prompt(
|
35 |
+
{"text_input": "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.",
|
36 |
+
"labels" : ["Team", "Date"],
|
37 |
+
"domain": "Sports"
|
38 |
+
}
|
39 |
+
)
|
40 |
+
print(results)
|
41 |
+
|
42 |
+
# View prompt examples.
|
43 |
+
|
44 |
+
# + tags=["hide_inp"]
|
45 |
+
NERPrompt().show(
|
46 |
+
{
|
47 |
+
"input": "I went to New York",
|
48 |
+
"domain": "Travel",
|
49 |
+
"labels": ["City"]
|
50 |
+
},
|
51 |
+
'[{"T": "City", "E": "New York"}]',
|
52 |
+
)
|
53 |
+
# -
|
54 |
+
|
55 |
+
# View log.
|
56 |
+
|
57 |
+
minichain.show_log("ner.log")
|
ner.pmpt.tpl
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
You are a highly intelligent and accurate {{ domain }} domain Named-entity recognition(NER) system. You take Passage as input and your task is to recognize and extract specific types of {{ domain }} domain named entities in that given passage and classify into a set of following predefined entity types:
|
2 |
+
|
3 |
+
{% for l in labels %}
|
4 |
+
* {{ l }}
|
5 |
+
{% endfor %}
|
6 |
+
|
7 |
+
Your output format is only {{ output_format|default('[{"T": type of entity from predefined entity types, "E": entity in the input text}]') }} form, no other form.
|
8 |
+
|
9 |
+
Input: {{ text_input }}
|
10 |
+
Output:
|
requirements.txt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
gradio
|
2 |
+
git+https://github.com/srush/minichain
|
3 |
+
manifest-ml
|