gpt4 book ai didi

java - 如何将序列化的 CRFClassifier 与 StanfordCoreNLP prop 'ner' 一起使用

转载 作者:搜寻专家 更新时间:2023-11-01 03:21:03 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com