经过一番研究,我得到了答案。我们可以使用ner.model加载特定的模型。想知道我们是否可以在StanfordCoreNLP库jar中引用已经打包的模型,而不是为此目的在项目工作目录中具有模型的副本。
Properties configuration = new Properties(); configuration.put("annotators", "tokenize,ssplit,pos,lemma,ner"); configuration.put("ner.model", "english.all.3class.distsim.crf.ser.gz"); StanfordCoreNLP coreNLP = new StanfordCoreNLP(configuration);
是的,如果在模型罐中指定路径,则应该没问题。
基本上你可以将“ner.model”设置为你想要使用的序列化crf的逗号分隔列表,所以如果要排除其中一个,只需提供你想要的两个模型就行了。
为了提供一些清晰度,这三个模型已经在不同的数据集上进行了培训。
all.3class在7个数据源上进行了训练,这些数据源标记了(人,组织,位置,无)。
muc.7class受到来自MUC-7命名实体任务的数据的培训,包括(日期,地点,金钱,组织,百分比,人,时间)。更多信息:
https://catalog.ldc.upenn.edu/LDC2001T02
http://www-nlpir.nist.gov/related_projects/muc/proceedings/ne_task.html
conll.4class对来自CONLL 2003 NER语料库的数据进行了训练,包括(人员,组织,位置,misc)。
http://www.cnts.ua.ac.be/conll2003/ner/