예제 #1
0
                              model)
        eval(model, ner_dev_data, dev_data, dev_bl, graph, entity_linking,
             args)

    if args.do_predict:
        utils.load_checkpoint(os.path.join(args.model_dir, 'best.pth.tar'),
                              model)
        model.eval()
        logging.info('Loading graph and entity linking...')
        graph = pickle.load(open('graph/graph.pkl', 'rb'))
        entity_linking = pickle.load(open('graph/entity_linking.pkl', 'rb'))
        while True:
            try:
                logging.info('请输入问题:')
                question = input()
                ner_data = bl.build_ner_data(question)
                ner_bl = bl.batch_loader(ner_data,
                                         None,
                                         args.ner_max_len,
                                         args.re_max_len,
                                         args.batch_size,
                                         is_train=False)
                for batch_data in ner_bl:
                    batch_data = tuple(
                        tmp.to(args.device) for tmp in batch_data)
                    head_logits, tail_logits = (
                        tmp.cpu()
                        for tmp in model(batch_data, 0, False))  # (bz, seqlen)
                    head = head_logits[0].argmax().item()
                    tail = tail_logits[0][head:].argmax().item() + head
                    tokens = ner_data[0]['tokens']