File size: 1,475 Bytes
f2878d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""The quick start from the model card, in Python.

    python examples/quickstart.py [model_dir]

model_dir holds meta.json and model.bin. The default is the folder above python/, which is where
they sit in a downloaded TheREZOR/TinyDecide repo.
"""
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent.parent))   # run from a checkout without installing
from tinydecide import TinyDecide  # noqa: E402

model_dir = sys.argv[1] if len(sys.argv) > 1 else Path(__file__).resolve().parent.parent.parent
model = TinyDecide.load(model_dir)

r = model.answer(
    "Book a table for 4 at an Italian place near the station on Friday at 7:30",
    [
        {"type": "choice", "text": "Which app should handle this?",
         "options": ["reminders", "music", "calendar", "restaurants", "weather"]},
        {"type": "noul", "text": "The message is urgent."},
        {"type": "score", "text": "How positive is the tone?", "options": ["negative", "neutral", "positive"]},
        {"type": "span", "text": "Extract the time."},
    ],
)

app, urgent, tone, time = r["answers"]
options = ["reminders", "music", "calendar", "restaurants", "weather"]
print(f"app:    {options[app['pick']]} (p = {app['probs'][app['pick']]:.2f})")
print(f"urgent: p = {urgent['p']:.2f}")
print(f"tone:   score = {tone['score']:.2f}")
print(f"time:   {time['text']!r} (p_present = {time['p_present']:.2f})")
print(f"{r['tokens']['total']} tokens, {r['ms']:.0f} ms")