我正在使用StanfordCoreNLP API 接口以编程方式执行一些基本的NLP。我需要在自己的语料库上训练模型,但我想使用StanfordCoreNLP
界面来做到这一点,因为它在幕后处理许多干的机制,我在那里不需要太多的专业知识。
我已经训练了一个 CRFClassifier,我想将其用于 NER,并将其序列化为文件。根据文档,我认为以下内容可行,但它似乎找不到我的模型,而是因无法找到标准模型而感到沮丧(我不确定为什么我没有这些模型文件,但我不关心它,因为我不想使用它们):
// String constants
final String serializedClassifierFilename = "/absolute/path/to/model.ser.gz";
Properties props = new Properties();
props.setProperty("annotators", "tokenize, ssplit, ner");
props.setProperty("ner.models", serializedClassifierFilename);
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
String fileContents = IOUtils.slurpFileNoExceptions("test.txt");
Annotation document = new Annotation(fileContents);
结果是:
Adding annotator tokenize
TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer.
Adding annotator ssplit
Adding annotator ner
Loading classifier from /path/build/edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz ... java.io.FileNotFoundException: edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1554)
等等等等
我知道我没有他们的内置模型(再次,不知道为什么..我只是克隆了他们的 git 存储库并用ant compile
。无论如何,我不想使用他们的模型,我想使用我训练过的模型)。
我怎样才能让StanfordCoreNLP接口在中使用我的模型ner
步?有可能吗?不可能?
属性名称是ner.model
, not ner.models
,因此您的代码仍在尝试加载默认模型。
如果某处记录有误,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)