Exemple #1
0
def nmt():

    if request.method == 'POST':
        text = request.form['sent']

        EMBED_SIZE = 256

        HIDDEN_SIZE = 512

        DROPOUT_RATE = 0.2

        BATCH_SIZE = 256

        NUM_TRAIN_STEPS = 10

        VOCAB = Vocab.load('VOCAB_FILE')

        vocab_inp_size = len(VOCAB.src) + 1
        vocab_tar_size = len(VOCAB.tgt) + 1

        model = NMT(vocab_inp_size, vocab_tar_size, EMBED_SIZE, HIDDEN_SIZE,
                    BATCH_SIZE)
        sample_hidden = model.encoder.initialize_hidden_state()
        sample_output, sample_hidden = model.encoder(
            tf.random.uniform((BATCH_SIZE, 1)), sample_hidden)
        sample_decoder_output, _, _ = model.decoder(
            tf.random.uniform((BATCH_SIZE, 1)), sample_hidden, sample_output)
        model.load_weights('es_en')

        pred = decode_sentence(model, text, VOCAB)

        return render_template('home.html', result=pred)
        dataset = dataset.batch(BATCH_SIZE, drop_remainder=True)

        print("deleting files not required...")
        del src_sents, tgt_sents, src_pad, tgt_pad

        print("beginning training...")

        train(dataset, EMBED_SIZE, HIDDEN_SIZE, DROPOUT_RATE, BATCH_SIZE,
              NUM_TRAIN_STEPS, BUFFER_SIZE, steps_per_epoch, vocab_inp_size,
              vocab_tar_size, VOCAB)
        print("training complete!")

    if args['decode']:

        print('reading vocabulary file: %s' % args['--vocab'])
        VOCAB = Vocab.load(args['--vocab'])

        vocab_inp_size = len(VOCAB.src) + 1
        vocab_tar_size = len(VOCAB.tgt) + 1

        print('restoring pre-trained model')
        model = NMT(vocab_inp_size, vocab_tar_size, EMBED_SIZE, HIDDEN_SIZE,
                    BATCH_SIZE)
        sample_hidden = model.encoder.initialize_hidden_state()
        sample_output, sample_hidden = model.encoder(
            tf.random.uniform((BATCH_SIZE, 1)), sample_hidden)
        sample_decoder_output, _, _ = model.decoder(
            tf.random.uniform((BATCH_SIZE, 1)), sample_hidden, sample_output)
        model.load_weights(args['--model-file'])
        print("beginning decoding...")
        decode(model, args['--sent-file'], VOCAB, 0)