我认为您应该在升级硬件之前进行算法相关的更改。
减少句子大小
确保训练样本中没有不必要的长句子。这样的句子不会提高性能,但会对计算产生巨大影响。(不确定顺序)我一般在 200 字/句处截断。还要仔细查看特征,这些是默认特征生成器
two kinds of WindowFeatureGenerator with a default window size of only two
OutcomePriorFeatureGenerator
PreviousMapFeatureGenerator
BigramNameFeatureGenerator
SentenceFeatureGenerator
这些特征生成器在给定句子中为单词生成以下特征:Robert
.
Sentence: Robert, creeley authored many books such as Life and Death, Echoes and Windows.
Features:
w=robert
n1w=creeley
n2w=authored
wc=ic
w&c=robert,ic
n1wc=lc
n1w&c=creeley,lc
n2wc=lc
n2w&c=authored,lc
def
pd=null
w,nw=Robert,creeley
wc,nc=ic,lc
S=begin
ic
是初始资本,lc
是小写
这些特征S=begin
是唯一的句子依赖特征,它标志着Robert
发生在句子的开头。
我的意思是解释一个完整的句子在训练中的作用。您实际上可以删除 SentenceFeatureGenerator 并进一步减小句子大小,以仅在所需实体的窗口中容纳几个单词。这也可以。
我相信这将对复杂性产生巨大影响,而对性能影响很小。
你考虑过抽样吗?
正如我上面所描述的,这些特征是上下文的非常稀疏的表示。正如特征生成器所见,您可能有很多重复的句子。尝试检测这些并以一种表示具有不同模式的句子的方式进行采样,即。应该不可能只编写几个匹配它们的正则表达式。根据我的经验,具有不同模式的训练样本比仅代表少数模式的训练样本表现更好,即使前者的句子数量要少得多。以这种方式采样根本不应该影响模型性能。
谢谢你。