Beispiel #1
0
    print "external_embedding", d["external_embedding"]

    stored_opt = Namespace(**d)
    print "Running model with this configuration", stored_opt

    parser = lysfastparse.bcovington.covington.CovingtonBILSTM(
        words, lemmas, cpos, pos, feats, rels, w2i, l2i, stored_opt, None)

    parser.Load(path_model)

    with codecs.open(f_temp.name) as f_temp:

        lookup_conll_data = lysfastparse.utils.lookup_conll_extra_data(f_temp)

        testpath = f_temp.name
        ts = time.time()
        pred = list(parser.Predict(testpath))
        te = time.time()
        print "Took " + str(te - ts) + " seconds"
        lysfastparse.bcovington.utils_bcovington.write_conll(testpath, pred)

        lysfastparse.utils.dump_lookup_extra_into_conll(
            testpath, lookup_conll_data)
        lysfastparse.utils.transform_to_single_root(testpath)

        with codecs.open(path_outfile, "w") as f_out:

            with codecs.open(f_temp.name) as f_out_aux:
                f_out.write(f_out_aux.read())

    os.unlink(f_temp.name)
            words, w2i, c2i, pos, rels, stored_opt = pickle.load(paramsfp)
        stored_opt.external_embedding = None
        print('Loading pre-trained model')
        parser = oldslavdep.OldSlavDep(words, pos, rels, w2i, c2i, stored_opt)
        parser.Load(args.model)

        testoutpath = os.path.join(args.output, args.conll_test_output)
        print('Predicting POS tags and parsing dependencies')
        # ts = time.time()
        # test_pred = list(parser.Predict(options.conll_test))
        # te = time.time()
        # print 'Finished in', te-ts, 'seconds.'
        # utils.write_conll(testoutpath, test_pred)

        with open(testoutpath, 'w') as fh:
            for sentence in parser.Predict(args.conll_test):
                for entry in sentence[1:]:
                    fh.write(str(entry) + '\n')
                fh.write('\n')

    else:
        print("Training file: " + args.conll_train)
        if args.conll_dev != "N/A":
            print("Development file: " + args.conll_dev)

        highestScore = 0.0
        eId = 0

        if os.path.isfile(os.path.join(args.output, args.params)) and \
                os.path.isfile(os.path.join(args.output, os.path.basename(args.model))) :
Beispiel #3
0
 


    if path_tmp_file_oov is not None:
        os.unlink(path_tmp_file_oov)
    
    with codecs.open(args.conll_dev) as f_conll_dev:
        lookup_conll_data = lysfastparse.utils.lookup_conll_extra_data(f_conll_dev)
        
    log_results_file = codecs.open(os.path.join(args.output.rsplit("/",1)[0], args.output.rsplit("/",1)[1]+'.dev_results'),"a")
    
    for epoch in xrange(args.epochs):
        print 'Starting epoch', epoch
        parser.Train(args.conll_train)
        devpath = os.path.join(args.output, 'dev_epoch_' + str(epoch+1) + '.conll')
        lysfastparse.bcovington.utils_bcovington.write_conll(devpath, parser.Predict(args.conll_dev))
        
        lysfastparse.utils.dump_lookup_extra_into_conll(devpath, lookup_conll_data)
        lysfastparse.utils.transform_to_single_root(devpath)
        
        print 'Executing conll17_eval'
        os.system('python '+config[YAML_CONLL17_EVAL]+' '+args.conll_dev + ' '+devpath+ ' > ' + devpath + '.txt ')
        
        with codecs.open(devpath+".txt") as f_devpath:
            content = f_devpath.readlines()
            las_lines = [l for l in content if
                         l.startswith("LAS F1 Score")]
            if len(las_lines) != 1:
                warnings.warn("Cannot determine LAS F1 Score from file")
            else:
                las = float(las_lines[0].split(":")[1])