如何提高天赋NER模型结果?

问题描述 投票:0回答:1

我对 NER 和 NLP 总体来说是新手,我想知道我是否正确理解了这些材料。 例如,我有预训练的模型“ner-english-large”。 我正在使用一个模型,结果发现该模型无法识别正确的实体。

(在此示例中,“Dsl”未标记为 ORG)

from flair.data import Sentence
from flair.models import SequenceTagger
from flair.data import Corpus
from flair.trainers import ModelTrainer

tagger = SequenceTagger.load("flair/ner-english-large")
sentence = Sentence("Dsl hit 100% success in sales across all the world")
tagger.predict(sentence)
sentence.get_spans('ner')
#output
[]

所以我想改进我的模型。 我正在以适当的格式将这句话上传到语料库。

columns = {0 : 'text', 1 : 'ner'}
data_folder = "train"
corpus: Corpus = ColumnCorpus(data_folder, columns)
label_type = 'ner'
label_dict = corpus.make_label_dictionary(label_type=label_type)

然后我正在初始化

trainer

tagger = SequenceTagger.load("flair/ner-english-large")
trainer = ModelTrainer(tagger, corpus)

但是在此之后我对下一步应该做什么有点困惑。 在此之前,我尝试过

train
方法并且有效。数据(之前被错误识别的数据)根据需要被识别。

trainer.train('fine/taggers/continued_model',
              learning_rate=0.01,
              mini_batch_size=32,
              max_epochs=6)

但我不知道这是正确的方法还是我需要使用

fine-tune
?您能解释一下哪种方法更正确吗?

python nlp named-entity-recognition flair
1个回答
0
投票

培训后,您可以例如:保存模型。

方法

fine_tune
train
非常相似——它们使用不同的超参数进行训练。因此,如果您不提供训练参数,那么
fine_tune
方法通常应该给出更好的结果。

© www.soinside.com 2019 - 2024. All rights reserved.