Esempio n. 1
0
def predict():
    with open(map_path, "rb") as f:
        word_to_id, cat_to_id, seq_length, num_classes = pickle.load(f)
    id_to_cat = {v: k for k, v in cat_to_id.items()}
    config = TRNNConfig()
    config.num_classes = num_classes
    config.vocab_size = len(word_to_id)
    model = TextRNN(config)
    session = tf.Session()
    session.run(tf.global_variables_initializer())
    saver = tf.train.Saver()
    saver.restore(sess=session, save_path=save_path)  # 读取保存的模型
    while True:
        line = input("请输入测试句子:")
        data_id = [[
            word_to_id[x] for x in list(native_content(line))
            if x in word_to_id
        ]]
        x_pad = kr.preprocessing.sequence.pad_sequences(data_id, seq_length)
        y_pred_cls = session.run(model.y_pred_cls,
                                 feed_dict={
                                     model.input_x: x_pad,
                                     model.keep_prob: 1.0
                                 })
        print('sentence : {}, prdict intent : {}'.format(
            line, id_to_cat[y_pred_cls[0]]))
        a = 1
Esempio n. 2
0
    # 评估
    print("Precision, Recall and F1-Score...")
    print(metrics.classification_report(y_test_cls, y_pred_cls, target_names=categories))

    # 混淆矩阵
    print("Confusion Matrix...")
    cm = metrics.confusion_matrix(y_test_cls, y_pred_cls)
    print(cm)

    time_dif = get_time_dif(start_time)
    print("Time usage:", time_dif)


if __name__ == '__main__':
    if len(sys.argv) != 2 or sys.argv[1] not in ['train', 'test']:
        raise ValueError("""usage: python run_rnn.py [train / test]""")

    print('Configuring RNN model...')
    config = TRNNConfig()
    if not os.path.exists(vocab_dir):  # 如果不存在词汇表,重建
        build_vocab(train_dir, vocab_dir, config.vocab_size)
    categories, cat_to_id = read_category()
    words, word_to_id = read_vocab(vocab_dir)
    config.vocab_size = len(words)
    model = TextRNN(config)

    if sys.argv[1] == 'train':
        train()
    else:
        test()
    # 评估
    print("Precision, Recall and F1-Score...")
    print(metrics.classification_report(y_test_cls, y_pred_cls, target_names=categories))

    # 混淆矩阵
    print("Confusion Matrix...")
    cm = metrics.confusion_matrix(y_test_cls, y_pred_cls)
    print(cm)

    time_dif = get_time_dif(start_time)
    print("Time usage:", time_dif)


if __name__ == '__main__':
    if len(sys.argv) != 2 or sys.argv[1] not in ['train', 'test']:
        raise ValueError("""usage: python run_rnn.py [train / test]""")

    print('Configuring RNN model...')
    config = TRNNConfig()
    if not os.path.exists(vocab_dir):  # 如果不存在词汇表,重建
        build_vocab(train_dir, vocab_dir, config.vocab_size)
    categories, cat_to_id = read_category()
    words, word_to_id = read_vocab(vocab_dir)
    config.vocab_size = len(words)
    model = TextRNN(config)

    if sys.argv[1] == 'train':
        train()
    else:
        test()
Esempio n. 4
0
    for f in F1:
        print('\t'.join(['%0.1f'%f[0],str(f[2]),str(f[3]),str(f[4]),str(f[5])]))
    return auc,F1
if __name__ == '__main__':
    tf.reset_default_graph()
    base_dir = sys.argv[1]
    save_dir = sys.argv[2]
    ckpt_dir = sys.argv[3]
    train_dir = os.path.join(base_dir, 'train.txt')
    test_dir = os.path.join(base_dir, 'test.txt')
    val_dir = os.path.join(base_dir, 'val.txt')
    vocab_dir = os.path.join(base_dir, 'vocab.txt')
    predict_dir = os.path.join(base_dir, 'predict.txt')
    save_path = os.path.join(save_dir, 'best_validation')  # 最佳验证结果保存路径
    if len(sys.argv)>4:
        option = sys.argv[4]
    else:
        option = 'train'
    print('Configuring RNN model...')
    config = TRNNConfig()
    tokenizer = Tokenizer(vocab_dir)
    config.vocab_size = len(tokenizer.vocab)
    model = TextRNN(config)
    print('参数总量:%d'%np.sum([np.prod(v.get_shape().as_list()) for v in tf.trainable_variables()]))
    if option == 'train':
        iter = batch_iter(train_dir, tokenizer, epochs=config.num_epochs)
        iter_test = batch_iter_test(val_dir, tokenizer)
        train()
    else:
        test()