我试图在包含文本页面的一组卷上执行NER。我开始创建一个tokenize,ssplit,pos,lemma,ner
管道。使用默认设置,在16核计算机上,处理1,360页的页面需要 5分钟(手动控制并行,不使用threads
属性 - 这要快得多办法)。鉴于目标是处理可能数千卷,这被认为太慢了。另一项实验涉及通过将ner.useSUTime
和ner.applyNumericClassifiers
设置为false
来尝试关闭各种NER方面。这似乎没有以任何重要的方式提高处理速度。但是,我无法关闭管道所使用的TokensRegexNERAnnotator
。我尝试将ner.regex
设置为false
,但这似乎不起作用。不确定哪个属性(如果有)控制是否启用此注释器。
然后我决定直接使用NERClassifierCombiner
,加载管道加载的相同3个模型(英语)。在相同的音量上运行,这被证明明显更快。它在 15秒中处理整个音量。在比较生成的实体时,它们大部分都是相同的,除了通过管道TokensRegexNERAnnotator
生成的实体,我在这里没有添加(也不需要)。
对于这两种方法,处理单位是一页文本。管道使用Annotation(pageText)
,而直接分类器使用classify(pageText)
。
主要问题是:这两种方法有何不同?在两种方法中,句子分裂和标记化是否以相同的方式完成?
其他问题:
TokensRegexNERAnnotator
吗?pos
和lemma
注释器吗? Documentation似乎表明答案是no
。如果不需要,为什么他们listed as dependencies?