Closed daniellebitt closed 3 years ago
Hi @daniellebitt can you give more details about how you trained the model?
Hi - Sure, I used this code:
import sys
from pathlib import Path
from flair.data import Corpus
from flair.datasets import ColumnCorpus
#import flair.data
from flair.data_fetcher import NLPTaskDataFetcher, NLPTask
from flair.visual.training_curves import Plotter
from flair.embeddings import TokenEmbeddings, WordEmbeddings, StackedEmbeddings, CharacterEmbeddings, FlairEmbeddings, BertEmbeddings, ELMoEmbeddings
from typing import List
import argparse
#do not add test file if tuning
parser = argparse.ArgumentParser(description='Flair trainer for concepts')
parser.add_argument('-d','--data_folder', required=True, help='base folder with Conll formatted file with gold standard data')
parser.add_argument('-e', '--conll_train_file', required=True, help='conll train file name')
parser.add_argument('-f', '--conll_test_file', required=False, help='conll test file name')
parser.add_argument('-g', '--conll_dev_file', required=True, help='conll dev file name')
def main(args):
args = parser.parse_args()
#print(args)
# 1. get the corpus
column_dict = {0:'word', 1:'pos', 2:'ner'}
corpus = ColumnCorpus(data_folder=Path(args.data_folder),
column_format=column_dict,
train_file=args.conll_train_file,
test_file=args.conll_test_file,
dev_file=args.conll_dev_file,
tag_to_bioes='ner')
print(corpus)
# 2. what tag do we want to predict?
tag_type = 'ner'
# 3. make the tag dictionary from the corpus
tag_dictionary = corpus.make_tag_dictionary(tag_type=tag_type)
print(tag_dictionary.idx2item)
# 4. initialize embeddings
embedding_types = [
WordEmbeddings('glove'),
# comment in this line to use character embeddings
# CharacterEmbeddings(),
# comment in these lines to use contextual string embeddings
FlairEmbeddings('news-forward'),
FlairEmbeddings('news-backward'),
# comment in these lines to use Bert embeddings
# BertEmbeddings(),
# comment in these lines to use Elmo embeddings
# ELMoEmbeddings(),
]
embeddings = StackedEmbeddings(embeddings=embedding_types)
# 5. initialize sequence tagger
from flair.models import SequenceTagger
tagger = SequenceTagger(hidden_size=64,
embeddings=embeddings,
tag_dictionary=tag_dictionary,
tag_type=tag_type,
use_crf=True)
# 6. initialize trainer
from flair.trainers import ModelTrainer
trainer = ModelTrainer(tagger, corpus)
# 7. start training
trainer.train('resources/taggers/glove5',
learning_rate=0.1,
mini_batch_size=32,
max_epochs=50,
embeddings_storage_mode='gpu',
checkpoint=True,
param_selection_mode=False)
if __name__ == '__main__':
main(sys.argv[1:])
I am sorry, I realized that there was an issue with how my model had been saved. It works now.
Describe the bug NER model fails to load after download inside torch nn
To Reproduce
Expected behavior Tagged sentence
Output
Environment (please complete the following information):