def update(weights, predicts, sentence, edge_feats): for i, word in enumerate(sentence): h_predict = predicts[i] h_gold = word.head if h_predict != h_gold: for fidx in edge_feats.get((h_predict, i), []): weights[fidx] = weights[fidx] - 1 for fidx in edge_feats.get((h_gold, i), []): weights[fidx] = weights[fidx] + 1 return weights def main(args): if len(args) < 2: Log.w("Arguments Error") return path = args[0] iteration = int(args[1]) Log.i("Training file: %s" % path) Log.i("----------------") sentences = c.readconllfile(path) featdict, weights = train(sentences, iteration) c.save(featdict, weights) if __name__ == "__main__": Log.setConfig(loglevel=Log.DEBUG, verbose=True) main(c.readargs()) Log.finalize()
total = total + 1 result.append(line) results.append(result) return results, float(correct / total) def main(args): if len(args) < 2: Log.w("Arguments Error") return path = args[0] mfile = args[1] Log.i("Training file: %s" % path) Log.i("----------------") sentences = c.readconllfile(path) Log.i("Model file: %s" % mfile) Log.i("----------------") featdict, weights = c.load(mfile) output, score = parse(sentences, weights) for each in output: for token in each: print(token) print() Log.i("[DONE] accuracy: {:.2%}".format(score)) if __name__ == "__main__": Log.setConfig(loglevel=Log.DEBUG, verbose=True) main(c.readargs()) Log.finalize()