-
Notifications
You must be signed in to change notification settings - Fork 0
/
alice.py
86 lines (70 loc) · 2.67 KB
/
alice.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Copyright 2019 XA. All Rights Reserved.
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation, version 3.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <https://www.gnu.org/licenses/>.
#
# =============================================================================
#
# A . L . I . C . E
# A Logically Interacting Computing Entity
#
# =============================================================================
"""
ALICE
========
Alice is the inference script which invokes the precognition via console.
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import os
import re
import sys
import random
import tensorflow as tf
utils_dir = os.path.join(os.getcwd(), 'utils\\')
os.chdir(utils_dir)
sys.path.insert(0, os.getcwd())
from precognition import AlicePrecognition
import alice_config as alice
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
def cognition():
"""Opens console for taking text based input from user."""
with tf.Session() as sess:
precognition = AlicePrecognition(
session=sess,
core_dir=alice.core_dir,
layers_dir=alice.layers_dir,
model_dir=alice.model_dir,
model_name=alice.codename)
# Current Command UI supports only one chat session
session_id = precognition.session_data.add_session()
initial_greeting = random.choice(
['Oh hello!', 'Hi!', 'Hello!', 'Hey there!', 'Hey!'])
print('\nAL: {}'.format(initial_greeting))
# Ask questions
sys.stdout.write('XA: ')
sys.stdout.flush()
question = sys.stdin.readline()
while question:
exit_condition = (question.strip() == 'bye' or question.strip(
) == 'exit' or question.strip() == 'close' or question.strip() == 'goodbye')
if exit_condition:
print(random.choice(['AL: Goodbye.', 'AL: Enjoy yourself.']))
break
print('AL: {}'.format(re.sub(r'_nl_|_np_', '\n', precognition.precognition(
session_id, question)).strip()))
print('XA: ', end='')
sys.stdout.flush()
question = sys.stdin.readline()
if __name__ == '__main__':
cognition()