gpt4 book ai didi

nlp - 限制斯坦福 NER 中的迭代次数

转载 作者:行者123 更新时间:2023-12-03 02:29:49 25 4
gpt4 key购买 nike

我正在自定义数据集上训练斯坦福 NER CRF 模型,但用于训练模型的迭代次数现在已经达到333次迭代——即而这个训练过程现在已经持续了几个小时。以下是终端中打印的消息 -

Iter 335 evals 400 <D> [M 1.000E0] 2.880E3 38054.87s |5.680E1| {6.652E-6} 4.488E-4 - 
Iter 336 evals 401 <D> [M 1.000E0] 2.880E3 38153.66s |1.243E2| {1.456E-5} 4.415E-4 -
-

下面给出了正在使用的属性文件 - 有什么方法可以将迭代次数限制为 20。

location of the training file
trainFile = TRAIN5000.tsv
#location where you would like to save (serialize to) your
#classifier; adding .gz at the end automatically gzips the file,
#making it faster and smaller
serializeTo = ner-model_TRAIN5000.ser.gz

#structure of your training file; this tells the classifier
#that the word is in column 0 and the correct answer is in
#column 1
map = word=0,answer=1

#these are the features we'd like to train with
#some are discussed below, the rest can be
#understood by looking at NERFeatureFactory
useClassFeature=true
useWord=true
useNGrams=true
#no ngrams will be included that do not contain either the
#beginning or end of the word
noMidNGrams=true
useDisjunctive=true
maxNGramLeng=6
usePrev=true
useNext=true
useSequences=true
usePrevSequences=true
maxLeft=1
#the next 4 deal with word shape features
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
wordShape=chris2useLC
saveFeatureIndexToDisk = true
printFeatures=true
flag useObservedSequencesOnly=true
featureDiffThresh=0.05

最佳答案

我尝试通过 Stanford CoreNLP CRF 分类器 在 IOB 标记的标记化文本上训练生物医学 (BioNER) 模型,如 https://nlp.stanford.edu/software/crf-faq.html 中所述。 。

我的语料库(来自下载的源)非常大(约 150 万行;6 个特征:GENE;...)。由于训练似乎无限期地进行,我绘制了值的比率以了解进度:

plot of ratio of CRF training Values per Iteration

Grepping Java源代码,我发现默认的TOL(tolerance;用于决定何时终止训练 session )值为1E-6(0.000001) ,在 .../CoreNLP/src/edu/stanford/nlp/optimization/QNMinimizer.java 中指定。

看那个情节,我原来的训练类(class)永远不会完成。 [该图还显示设置更大的 TOL 值,例如tolerance=0.05 将触发训练提前终止,因为该 TOL 值是由训练类(class)开始时出现的“噪音”触发的。我通过 .prop 文件中的 tolerance=0.05 条目确认了这一点;但是,0.010.005 等的 TOL 值是“OK”。]

将“maxIterations=20”添加到属性文件中,如 @StanfordNLPHelp(本线程其他位置)所述,似乎会被忽略,除非我还添加并更改了 tolerance= 值,在我的 bioner.prop 属性文件中;例如

tolerance=0.005
maxIterations=20 ## optional

在这种情况下,分类器快速训练模型 (bioner.ser.gz)。 [当我将 maxIterations 行添加到 .prop 文件中,而不添加 tolerance 行时,模型只是“永远”运行,如下所示之前。]

可以在此处找到可包含在 .prop 文件中的参数列表:

https://nlp.stanford.edu/nlp/javadoc/javanlp-3.5.0/edu/stanford/nlp/ie/NERFeatureFactory.html

关于nlp - 限制斯坦福 NER 中的迭代次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43298610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com