我试图将斯坦福CoreNLP用于法语文本。 POS标记和解析工作正常,但是根据我的配置,输出依赖性根本没有意义。
我的命令是
java -mx1g -cp "~/stanford-corenlp/stanford-corenlp-full-2015-12-09/*"
edu.stanford.nlp.pipeline.StanfordCoreNLP -props french.conf
-file /tmp/file.txt -outputFormat text
其中french.conf包含:
annotators = tokenize, ssplit, pos, depparse, parse
tokenize.language = fr
pos.model = edu/stanford/nlp/models/pos-tagger/french/french.tagger
parse.model = edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz
depparse.model = edu/stanford/nlp/models/parser/nndep/UD_French.gz
我使用CoreNLP 3.6与法国模型here。在这方面,日志看起来很好:
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator tokenize
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator ssplit
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator pos
Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/french/french.tagger ... done [0,2 sec].
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator depparse
Loading depparse model file: edu/stanford/nlp/models/parser/nndep/UD_French.gz ...
PreComputed 100000, Elapsed Time: 1.43 (s)
Initializing dependency parser done [3,4 sec].
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator parse
[main] INFO edu.stanford.nlp.parser.common.ParserGrammar - Loading parser from serialized file edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz ...
done [3,0 sec].
但是这里的结果是" Le chat mange la souris" (猫正在吃老鼠,具有相同的确切结构)
root(ROOT-0, chat-2)
det(chat-2, Le-1)
case(souris-5, mange-3)
det(souris-5, la-4)
nmod:mange(chat-2, souris-5)
punct(chat-2, .-6)
这只是胡说八道;这不是例外,我测试了很多句子,总是得到这种输出。 这就是为什么我猜我使用了错误的配置文件。
任何帮助将不胜感激!
答案 0 :(得分:1)
对于那些感兴趣的人,Stanford CoreNLP现在已经更新了他们的模型,现在它们的效果非常好。
答案 1 :(得分:0)
这是因为CoreNLP依赖解析器希望获得输入Universal Dependencies POS标签和CoreNLP提供的法国POS标记器输出French Treebank POS标签。
我制作了一个补丁,用于转换法国POS标记输出以获取Universal Dependencies POS标记:https://github.com/askplatypus/CoreNLP/commit/e6215bdc5d4903bc3e2d2fb533da7e3938fa825f