我试着用斯坦福大学的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和这里的法国型号。在这方面,日志看起来很好:
[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)这是胡说八道,这也不例外,我测试了很多句子,并且总是得到这样的输出。这就是为什么我想我使用了一个糟糕的配置文件。
任何帮助都将不胜感激!
发布于 2017-04-14 07:39:45
对于那些有兴趣的人来说,斯坦福CoreNLP现在已经更新了他们的模型,并且现在运作得很好。
发布于 2016-09-16 13:26:33
这是因为CoreNLP依赖解析器希望获得作为输入的通用依赖项POS标记,而CoreNLP提供的法语POS标记将输出法语Treebank POS标记。
我已经做了一个补丁来转换法语POS标签输出,以便获得通用的依赖项POS标签:https://github.com/askplatypus/CoreNLP/commit/e6215bdc5d4903bc3e2d2fb533da7e3938fa825f
https://stackoverflow.com/questions/36634101
复制相似问题