【发布时间】:2014-11-15 04:34:27
【问题描述】:
我使用斯坦福 NER 训练了我自己的 NER 模型。我可以使用以下代码从我的 python 代码中与它交互,它可以正确地注释输入文本中的命名实体。
st = NERTagger('stanford_classifiers/ner-model-custom.ser.gz',
'stanford_classifiers/stanford-ner.jar', 'utf-8')
entities = st.tag(input_text.split())
但是,由于每个文本输入都太慢了,我将模型作为服务器运行,并通过使用以下代码从 python 查询来访问结果。但是我从训练有素的模型中没有得到任何输出。
我这样启动服务器:
java -mx1000m -cp stanford-ner.jar edu.stanford.nlp.ie.NERServer -loadClassifier ner-m
odel-custom.ser.gz -port 8080 -outputFormat inlineXML
我在服务器上收到这条消息:
Loading classifier from XX\XX\stanford_classifiers\ner-model-custom.ser.gz ... done [6.1 sec].
在客户端(python 代码):
tagger = ner.SocketNER(host='localhost', port=8080)
entities = tagger.get_entities(input_text)
当像 english.all.3class.dissim.crf.ser.gz 这样的现有模型作为服务器启动时,相同的代码也能工作。但不适用于服务器模式下的自定义模型。
是否有一种特定的方法可以在服务器版本中启动我们自定义训练的 ner 模型?
这可能是自定义模型训练的问题吗?
【问题讨论】:
-
真的不知道,恐怕。我不太了解 Python 部分,但这看起来应该可以工作 - 如果模型直接使用,那么模型似乎没问题,您应该能够像常规模型一样在 HERServer 中使用自定义模型。我首先要尝试的是查看它是否纯粹在 Java 领域中工作(使用 -client 标志再次调用 NERServer)。如果您可以分享模型,我们也可以尝试看看它有什么问题......
标签: python stanford-nlp