我需要从大型语料库的英语和德语文本中提取句子,标记,pos标签和引理。所以,我使用了Stanford CoreNLP工具。它的输出很完美。然而,问题是时间复杂性。英语版快速执行,但德语模型需要很长时间来注释文本。我用这些代码初始化模型:
// To initialize English model
propsEN = new Properties();
propsEN.setProperty("annotators", "tokenize, ssplit, pos, lemma");
propsEN.setProperty("tokenize.language", "en");
corenlpEN = new StanfordCoreNLP(propsEN);
// To initialize German model
propsDE = new Properties();
propsDE.setProperty("annotators", "tokenize, ssplit, pos, lemma");
propsDE.setProperty("tokenize.language", "de");
corenlpDE = new StanfordCoreNLP(propsDE);
为了表示执行时间的差异,我计算了每个文本的长度以及每个模型在文本上运行所花费的时间。为了计算执行时间,我使用了System.currentTimeMillis()指令:
英文文本长度= 1587 --- Elapse time = 57
英文文本长度= 15906 --- Elapse time = 160
英文文本长度= 44286 --- Elapse time = 3287
英文长度= 19814 --- Elapse time = 1809
英文文本长度= 1427 --- Elapse time = 166
英文文本长度= 56787 --- Elapse time = 2374
德文长度= 979 --- Elapse time = 401
德文长度= 22039 --- Elapse time = 15285
德文长度= 30632 --- Elapse time = 21659
德文长度= 42019 --- Elapse time = 21767
德文长度= 2944 --- Elapse time = 2005
德文长度= 76248 --- Elapse time = 48857
为什么德国模特需要多次?我犯了什么错吗?有什么解决方案可以解决这个问题吗?
感谢您提供有关此主题的任何信息。
答案 0 :(得分:1)
我不知道这是否有帮助,但是您没有使用德语的语音标记器。您可以使用pos.model
属性进行设置。
以下是选项列表(确保您拥有德国型号的罐子):
edu/stanford/nlp/models/pos-tagger/german/german-fast.tagger
edu/stanford/nlp/models/pos-tagger/german/german-hgc.tagger
edu/stanford/nlp/models/pos-tagger/german/german-fast-caseless.tagger
edu/stanford/nlp/models/pos-tagger/german/german-ud.tagger
德语也没有lemma
。