当前位置: 首页 > 面试题库 >

加载自定义NER模型Stanford CoreNLP

哈宪
2023-03-14
问题内容

我已经创建了自己的NER模型与斯坦福大学“斯坦福大学NER”软件,并按照这些方向。

我知道CoreNLP按照以下顺序开箱即用地加载了三个NER模型:

  1. edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz
  2. edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz
  3. edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz

我现在想将我的NER模型包括在上面的列表中,并先用NER模型标记文本。

我已经找到了关于该主题的两个以前问题,它们是“使用自定义NER模型的Stanford OpenIE[”和“为什么Stanford CoreNLP
NER注释器默认加载3个模型?”

这两个职位都有很好的答案。答案的一般信息是您必须编辑文件中的代码。

使用定制的NER模型的Stanford OpenIE

从这篇文章中说可以编辑,corenlpserver.sh但在Stanford CoreNLP下载的软件中找不到该文件。谁能指出我该文件的位置?

默认情况下,Stanford CoreNLP NER注释器会加载3个模型吗?

这篇文章说,我可以使用参数-ner.model专门调用要加载的NER模型。我将此参数添加到初始服务器命令(java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000 -ner.model *modlefilepathhere*)中。由于服务器仍加载了所有三个模型,因此无法正常工作。

它还指出您必须更改一些Java代码,尽管它没有明确指出进行更改的位置。

我是否需要props.put("ner.model", "model_path1,model_path2");在CoreNLP软件中修改此代码或将其添加到特定的类文件中?

问题:
从我的研究看来,我需要添加/修改一些代码来调用我独特的NER模型。上面概述了这些“编辑”,并且此信息已从其他StackOverflow问题中提取。我需要专门编辑哪些文件?这些文件到底在哪里(例如edu
/ Stanford / nlp / …等)?

编辑: 我的系统在本地服务器上运行,并且我正在使用API​​ pycorenlp来打开到我的本地服务器的管道并向其发出请求。python /
pycorenlp代码的两个关键行是:

  1. nlp = StanfordCoreNLP('http://localhost:9000')
  2. output = nlp.annotate(evalList[line], properties={'annotators': 'ner, openie','outputFormat': 'json', 'openie.triple.strict':'True', 'openie.max_entailments_per_clause':'1'})

认为这会影响我打电话给我的独特NER模型的能力,但我想提出,以获得最佳的答案,我可以在所有情境数据。


问题答案:

如果要自定义服务器使用的管道,请创建一个名为的文件server.properties(也可以根据需要调用它)。

然后-serverProperties server.properties,在使用java命令启动服务器时添加此选项。

在该.properties文件中,您应该包括 ner.model = /path/to/custom_model.ser.gz

通常,您可以在.properties文件中自定义服务器将使用的管道。例如,您还可以在其中用行annotators = tokenize,ssplit,pos,lemma,ner,parse等设置注释器列表。

更新以解决评论:

  1. 在您的Java命令中,您不需要 -ner.model /path/to/custom_model.ser.gz

  2. .properties文件中可以包含无限数量的属性设置,每行一个设置(空白行将被忽略,#号行被忽略)

  3. 当您运行Java命令时,默认情况下它将在您正在运行该命令的目录中查找文件。因此,如果您的命令包含-serverProperties server.properties该命令,则将假定该文件server.properties位于该命令运行所在的目录中。如果提供绝对路径,则-serverProperties /path/to/server.properties可以从任何地方运行命令。

  4. 因此,为了清楚起见,您可以使用以下命令启动服务器(在包含所有jar的文件夹中运行):

java -Xmx8g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000 -serverProperties server.properties

并且server.properties应该是这样的文件:

ner.model = /path/to/custom_model.ser.gz

server.properties 可能看起来像这样:

annotators = tokenize,ssplit,pos,lemma,ner,depparse
ner.model = /path/to/custom_model.ser.gz
parse.maxlen = 100

仅作为示例…您应将所有设置 server.properties

您似乎正在使用我不太了解的pycorenlp库。另外2个选项是我在该答案或stanza我们制作的程序包中显示的一些代码。上面那个答案的细节。



 类似资料:
  • null 我发现了之前关于这个主题的两个StackOverflow问题,它们是“Stanford OpenIE使用定制的NER模型”和“为什么Stanford CoreNLP NER-annotator默认加载3个模型?” 这两个帖子都有很好的答案。答案的一般信息是,您必须在文件中编辑代码。 使用自定义NER模型的斯坦福OpenIE 是否需要修改或添加此代码到CoreNLP软件中的特定类文件中?

  • 我是NLP领域的新手,正在使用入门。 我在这里看了一些留档中给出的命令:https://opennlp.apache.org/documentation/manual/opennlp.html (我正在使用命令行界面开始) 我使用已经可用的示例模型来试验不同的工具,最后决定创建一个自定义NER模型。 我遵循了上述链接中给出的说明。 将给出的例句复制到文件(我只是创建了一个具有该扩展名的新文件,并将

  • 我们有一个报告编写工具,我们正在尝试添加搜索功能。基本上,用户可以输入一个问题,并根据句子中的标准返回一份报告。我们正在尽可能地保持开放性,不需要特定的句子结构,这就是为什么我们想尝试OpenNLP-NER。 例如: “上季度的艺术出勤率是多少?” 标记为: 我们试着用不同的部门,不同的过滤器等提出不同的问题。。我们还没有达到15k,只有14.6k,所以我们还在努力。 就分析问题而言,这是问题的开

  • 我正在尝试为多个实体训练自定义NER模型。以下是示例训练数据: 方法采用字符串参数。这个参数有什么用途?还有,我如何为多个实体(例如,在我的例子中,,,)训练一个模型 }

  • 问题内容: 在Keras中,如果您需要自定义损失以及其他参数,我们可以像https://datascience.stackexchange.com/questions/25029/custom- loss-function-with-additional-parameter-in- 凯拉斯 当我训练模型时,上述方法有效。但是,一旦训练了模型,我将很难加载模型。当我尝试在load_model中使用c

  • 如果您是一位经验丰富的ML开发人员,而且ML Kit的预训练的模型不能满足您的需求,您可以通过ML Kit使用定 的TensorFlow Lite模型。 使用Firebase托管您的TensorFlow Lite模型或将其与您的应用程序打包在一起。然后,使用ML Kit SDK来使用您的自定义模型的最佳版本构建应用。如果您使用Firebase托管您的模型,ML Kit会自动更新您的用户的所用版本。