作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 StanfordCoreNLP API 接口(interface)以编程方式执行一些基本的 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 repo 并使用 ant compile
编译。无论如何,我不想无论如何要使用他们的模型,我想使用我训练过的那个)。
如何让 StanfordCoreNLP 接口(interface)在 ner
步骤中使用我的模型?有可能吗?不可能吗?
最佳答案
属性名称是 ner.model
,而不是 ner.models
,因此您的代码仍在尝试加载默认模型。
如果某处记录不正确,请告诉我。
关于java - 如何将序列化的 CRFClassifier 与 StanfordCoreNLP prop 'ner' 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30601875/
我是一名优秀的程序员,十分优秀!