Stanford CoreNLP:您如何将标准但受俄罗斯培训的NER模型与完全自定义模型进行lemmatization集成?

时间:2019-03-17 00:16:49

标签: nlp stanford-nlp ner

作为我的大学项目的一部分,基于斯坦福CoreNLP,我目前正在努力使共指标记算法适应俄语。在大多数情况下,这很容易做到:俄罗斯已经存在用于词形化和PoS标记的模型。但是,至少没有基于CoreNLP的语言就没有NER模型,因此,我不得不自己使用CoreNLP的统计方法来训练这种模型。

问题在于将这种经过训练的新NER模型适应于词形化和PoS标记模型。虽然我的模型纯粹是统计模型,仍然基于原始的CoreNLP代码,但其他两个模型则完全不同。因此,我实际上无法使我的NER集成它们。你怎么能做到?相关代码为:

props.setProperty("annotators", "tokenize,ssplit,pos,custom.lemma,custom.morpho,custom.ner,depparse, mention, coref");
props.setProperty("pos.model", "edu/stanford/nlp/models/pos-tagger/russian-ud-pos.tagger");
props.setProperty("customAnnotatorClass.custom.lemma", "edu.stanford.nlp.international.russian.process.RussianLemmatizationAnnotator");
props.setProperty("custom.lemma.dictionaryPath", "edu/stanford/nlp/international/russian/process/dict.tsv");
props.setProperty("customAnnotatorClass.custom.morpho", "edu.stanford.nlp.international.russian.process.RussianMorphoAnnotator");
props.setProperty("customAnnotatorClass.custom.ner", "edu.stanford.nlp.international.russian.process.RussianMorphoAnnotator");
props.setProperty("custom.morpho.model", "edu/stanford/nlp/models/pos-tagger/russian-ud-mf.tagger");
props.setProperty("ner.model", "C:/Users/Admin/eclipse-workspace/Coreference-Evaluation-master/libs/russian-new-model.ser.gz");
props.setProperty("depparse.model", "edu/stanford/nlp/models/parser/nndep/nndep.rus.model.wiki.txt.gz");
props.setProperty("depparse.language", "russian");
props.setProperty("parse.maxlen", "100");
props.setProperty("ssplit.eolonly", "true");
props.setProperty("tokenize.whitespace","true");
props.setProperty("coref.removeSingletonClusters","false");
pipeline = new StanfordCoreNLP(props);
System.out.println(pipeline);

在您建议我完全改变算法之前:到目前为止,我对Java的了解还不足以对已经存在的代码进行如此根本的改变。

1 个答案:

答案 0 :(得分:0)

您需要使用自定义lemmatizer和词性标记器标记NER训练数据。还要确保令牌化与测试时将使用的令牌化相同。然后使用预测的词条和词性标签训练NER模型。假设您正在将这些功能用作NER模型中的功能。

如果您的NER训练数据中没有词性或引理数据,那么管道应该可以正常工作,因为NER模型不会将这些功能用于决策。我不认为我们分发的NER模型会使用这些功能。