In [ ]:
from google.colab import drive
drive.mount('/content/gdrive')
import os
os.chdir('/content/gdrive/My Drive/finch/tensorflow1/free_chat/chinese_lccc/main')
In [2]:
%tensorflow_version 1.x
TensorFlow 1.x selected.
In [3]:
import tensorflow as tf
import time

from pathlib import Path

print("TensorFlow Version", tf.__version__)
print('GPU Enabled:', tf.test.is_gpu_available())
TensorFlow Version 1.15.2
GPU Enabled: False
In [4]:
def get_vocab(f_path):
  word2idx = {}
  with open(f_path) as f:
    for i, line in enumerate(f):
      line = line.rstrip('\n')
      word2idx[line] = i
  return word2idx


def parse_fn(text):
  parse = lambda text: [[params['char2idx'].get(c, len(params['char2idx'])) for c in list(text)]]
  return {'words': parse(text)}
In [5]:
params = {'export_dir': '../model/transformer_rnn_export'}

params['char2idx'] = get_vocab('../vocab/char.txt')

params['idx2char'] = {idx: char for char, idx in params['char2idx'].items()}

subdirs = [x for x in Path(params['export_dir']).iterdir()
           if x.is_dir() and 'temp' not in str(x)]
latest = str(sorted(subdirs)[-1])

predict_fn = tf.contrib.predictor.from_saved_model(latest)
WARNING:tensorflow:
The TensorFlow contrib module will not be included in TensorFlow 2.0.
For more information, please see:
  * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md
  * https://github.com/tensorflow/addons
  * https://github.com/tensorflow/io (for I/O related ops)
If you depend on functionality not listed there, please file an issue.

WARNING:tensorflow:From /tensorflow-1.15.2/python3.6/tensorflow_core/contrib/predictor/saved_model_predictor.py:153: load (from tensorflow.python.saved_model.loader_impl) is deprecated and will be removed in a future version.
Instructions for updating:
This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.loader.load or tf.compat.v1.saved_model.load. There will be a new function for importing SavedModels in Tensorflow 2.0.
INFO:tensorflow:Restoring parameters from ../model/transformer_rnn_export/1597653320/variables/variables
In [ ]:
while True:
  text_inp = input('Input:')
  t0 = time.time()
  predictions = predict_fn(parse_fn(text_inp))
  for j in range(3):
    indices = [params['idx2char'].get(idx, len(params['idx2char'])) for idx in predictions['output'][0, :, j] if (idx != 0 and idx != 2)]
    print('Rank_{}:'.format(j+1), ' '.join(indices))
  print('%.2f sec' % (time.time() - t0))
  print()
Input:你好
Rank_1: 你 好
Rank_2: 我 也 好
Rank_3: 你 好 !
1.34 sec

Input:早上好
Rank_1: 早 上 好
Rank_2: 中 午 好
Rank_3: 上 午 好
0.06 sec

Input:晚上好
Rank_1: 晚 上 好
Rank_2: 晚 安
Rank_3: 好 吧
0.17 sec

Input:再见
Rank_1: 再 见
Rank_2: 哈 哈
Rank_3: 再 见 !
0.16 sec

Input:好久不见
Rank_1: 好 久 不 见
Rank_2: 好 久 不 见 了
Rank_3: 好 久 不 见 啊
0.07 sec

Input:想死你了
Rank_1: 哈 哈
Rank_2: 我 也 是
Rank_3: 我 也 想 你
0.17 sec

Input:谢谢你
Rank_1: 不 客 气
Rank_2: 谢 谢
Rank_3: 不 用 谢
0.17 sec

Input:爱你
Rank_1: 爱 你
Rank_2: 我 也 爱 你
Rank_3: 我 爱 你
0.16 sec

Input:你叫什么名字
Rank_1: 名 字
Rank_2: 哈 哈
Rank_3: 好 吧
0.17 sec

Input:你几岁了
Rank_1: 你 猜
Rank_2: 你 猜 我 多 大
Rank_3: 多 大
0.15 sec

Input:现在几点了
Rank_1: 好 吧
Rank_2: 不 知 道
Rank_3: 不 知 道 啊
0.18 sec

Input:今天天气怎么样
Rank_1: 下 雨 了
Rank_2: 今 天 下 雨 了
Rank_3: 今 天 下 雨
0.14 sec

Input:我们现在在哪里
Rank_1: 哈 哈
Rank_2: 你 在 哪
Rank_3: 你 在 哪 里
0.18 sec

Input:你能给我讲个笑话吗
Rank_1: 可 以
Rank_2: 哈 哈
Rank_3: 笑 话
0.24 sec

Input:你是男孩还是女孩呀
Rank_1: 我 是 萌 妹 纸
Rank_2: 你 猜
Rank_3: 我 是 萌 妹 子
0.25 sec

Input:你会几种语言呀
Rank_1: 哈 哈
Rank_2: 不 会 吧
Rank_3: 我 也 不 会
0.26 sec

Input:你能陪我玩吗
Rank_1: 不 能
Rank_2: 可 以
Rank_3: 可 以 的
0.21 sec

Input:说话可以大声一点吗
Rank_1: 可 以
Rank_2: 不 可 以
Rank_3: 可 以 的
0.20 sec

Input:天气真好
Rank_1: 是 啊
Rank_2: 是 的
Rank_3: 天 气 好
0.22 sec

Input:天气太糟糕了
Rank_1: 是 啊
Rank_2: 是 的
Rank_3: 天 气 不 好
0.18 sec

Input:下雨了
Rank_1: 下 雨 了
Rank_2: 下 雨
Rank_3: 我 也 是
0.10 sec

Input:雨好大
Rank_1: 大 雨
Rank_2: 好 的
Rank_3: 下 雨 了
0.09 sec

Input:我讨厌艳阳天
Rank_1: 哈 哈
Rank_2: 我 也 讨 厌
Rank_3: 我 也 是
0.19 sec

Input:好晒啊
Rank_1: 哈 哈
Rank_2: 不 晒
Rank_3: 晒 太 阳
0.15 sec

Input:今天好冷
Rank_1: 好 冷
Rank_2: 好 冷 啊
Rank_3: 我 也 是
0.13 sec

Input:今天好热
Rank_1: 好 热
Rank_2: 我 也 是
Rank_3: 这 么 热
0.11 sec

Input:风好大
Rank_1: 风 大
Rank_2: 大 风
Rank_3: 是 的
0.07 sec

Input:雾太大了看不清路
Rank_1: 哈 哈
Rank_2: 我 也 是
Rank_3: 看 清 楚 了
0.24 sec

Input:打雷了好可怕
Rank_1: 可 怕
Rank_2: 好 可 怕
Rank_3: 哈 哈
0.24 sec

Input:好开心
Rank_1: 不 开 心
Rank_2: 哈 哈
Rank_3: 你 开 心 就 好
0.16 sec

Input:太激动了
Rank_1: 哈 哈
Rank_2: 好 激 动
Rank_3: 不 激 动
0.24 sec

Input:我好难过
Rank_1: 难 过
Rank_2: 好 难 过
Rank_3: 不 难 过
0.08 sec

Input:我想哭
Rank_1: 不 哭
Rank_2: 想 哭
Rank_3: 不 哭 不 哭
0.17 sec

Input:太好笑了
Rank_1: 好 笑
Rank_2: 哈 哈
Rank_3: 好 笑 啊
0.17 sec

Input:我好伤心
Rank_1: 哈 哈
Rank_2: 不 伤 心
Rank_3: 我 也 是
0.24 sec

Input:心好痛
Rank_1: 心 痛
Rank_2: 心 疼
Rank_3: 心 疼 你
0.06 sec

Input:我好累啊
Rank_1: 好 累
Rank_2: 不 累
Rank_3: 哈 哈
0.16 sec

Input:我讨厌你
Rank_1: 讨 厌
Rank_2: 我 讨 厌 你
Rank_3: 我 喜 欢 你
0.16 sec

Input:你真是太棒啦
Rank_1: 谢 谢
Rank_2: 哈 哈
Rank_3: 谢 谢 你
0.17 sec

Input:你好厉害啊
Rank_1: 哈 哈
Rank_2: 我 也 是
Rank_3: 你 好 厉 害
0.16 sec