lang-model/naive-nlu/tree_nlu/cli.py

66 lines
1.6 KiB
Python
Raw Normal View History

2017-09-21 23:00:09 +00:00
import logging
2017-09-29 23:32:04 +00:00
import datetime
from .session.org_mode import (
global_session as session,
create_global_session,
)
2017-09-18 02:01:59 +00:00
from .knowledge_base import KnowledgeBase
2017-09-29 22:53:42 +00:00
from .visualization import (
show_knowledge,
show_samples,
)
2017-09-18 02:01:59 +00:00
from .tests import gac_100
from .modifiable_property import (
ModifiableProperty,
ModifiablePropertyWithAst,
is_modifiable_property,
)
bye_phrases = ['bye', 'exit']
2017-09-21 01:04:04 +00:00
2017-09-29 23:32:04 +00:00
def gen_session_name():
now = datetime.datetime.utcnow()
return "treeNLU-cli-session-{}.org".format(
now.strftime("%y_%m_%d %H:%M:%S_%f"))
2017-09-21 01:04:04 +00:00
2017-09-18 02:01:59 +00:00
def main():
2017-09-29 23:32:04 +00:00
create_global_session(gen_session_name())
2017-09-21 23:00:09 +00:00
logging.getLogger().setLevel(logging.INFO)
2017-09-18 02:01:59 +00:00
knowledge = gac_100.main()
2017-09-21 23:00:09 +00:00
logging.getLogger().setLevel(logging.DEBUG)
2017-09-18 02:01:59 +00:00
while True:
try:
data = input("> ").strip()
except EOFError:
print("bye")
break
if data.lower() in bye_phrases:
break
if not data:
continue
2017-09-21 23:00:39 +00:00
if data == '/show':
show_knowledge(knowledge)
2017-09-21 01:04:04 +00:00
continue
2017-09-29 22:53:42 +00:00
elif data == '/samples':
show_samples(knowledge)
continue
2017-09-21 01:04:04 +00:00
2017-10-01 15:10:50 +00:00
with session().log(data):
ret = knowledge.process(data)
if ret:
result, _, _ = ret
if not is_modifiable_property(result):
print("<", result)
else:
result.setter()
print("OK")
elif ret is None:
print("- Couldn't understand that, oops... -")
2017-09-18 02:01:59 +00:00
else:
2017-10-01 15:10:50 +00:00
print("Unhandled response:", ret)
2017-09-18 02:01:59 +00:00
print("< Bye!")