| from transformers import RobertaConfig, AutoConfig |
| from transformers import AutoTokenizer, AutoModelForTokenClassification |
| from Model.NER.VLSP2021.Ner_CRF import PhoBertCrf,PhoBertSoftmax,PhoBertLstmCrf |
| from Model.NER.VLSP2021.Predict_Ner import ViTagger |
| import torch |
| from spacy import displacy |
| import re |
| device = 'cuda' if torch.cuda.is_available() else 'cpu' |
| MODEL_MAPPING = { |
| 'vinai/phobert-base': { |
| 'softmax': PhoBertSoftmax, |
| 'crf': PhoBertCrf, |
| 'lstm_crf': PhoBertLstmCrf |
| }, |
| } |
| if device == 'cpu': |
| checkpoint_data = torch.load('/Model/NER/VLSP2016/best_model.pt', map_location='cpu') |
| else: |
| checkpoint_data = torch.load('/Model/NER/VLSP2016/best_model.pt') |
|
|
| configs = checkpoint_data['args'] |
| print(configs.model_name_or_path) |
| tokenizer = AutoTokenizer.from_pretrained(configs.model_name_or_path) |
| model_clss = MODEL_MAPPING[configs.model_name_or_path][configs.model_arch] |
| config = AutoConfig.from_pretrained(configs.model_name_or_path, |
| num_labels=len(checkpoint_data['classes']), |
| finetuning_task=configs.task) |
| model = model_clss(config=config) |
| model.resize_token_embeddings(len(tokenizer)) |
| model.to(device) |
| model.load_state_dict(checkpoint_data['model'],strict=False) |
| print(model) |
|
|
|
|
|
|