如何让Stanford CoreNLP 3.9.1法语输出包含before和after节点?
解决Stanford CoreNLP 3.9.1法语分词缺失before/after节点的问题
我之前在使用CoreNLP处理多语言文本时也碰到过一模一样的问题,不同语言的默认配置确实藏着这些细节差异。法语的默认分词器配置没有开启beforeAfterAnnotations选项,而德语等语言的默认配置里是开启的,这就是为什么输出会有区别。
下面给你两种可行的解决办法:
方法一:修改法语默认配置文件
- 找到你的Stanford CoreNLP安装目录,定位到
french.properties文件(一般在stanford-corenlp-3.9.1-models-french包里) - 打开文件后,找到和分词相关的配置段,添加或修改
tokenize.options参数,确保包含beforeAfterAnnotations=true:
这个参数的作用就是让分词器生成每个token前后的文本(比如空格、标点等)并输出为tokenize.options = splitHyphenated=true, keepEmptyTokens=false, beforeAfterAnnotations=truebefore和after节点。 - 保存修改后,重启CoreNLP HTTP服务器,再测试法语文本的分词输出就能看到这两个节点了。
方法二:启动服务器时直接指定参数(无需修改配置文件)
如果不想改动默认配置文件,可以在启动HTTP服务器的命令行里直接覆盖分词选项:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000 -props french.properties -tokenize.options beforeAfterAnnotations=true
这里的-tokenize.options beforeAfterAnnotations=true会强制开启该选项,覆盖french.properties里的默认设置。
额外提示:API请求时临时指定参数
如果只是想针对某一次请求开启这个功能,也可以在发送POST请求时,在请求体的properties字段里添加配置:
{ "text": "Ton texte français ici", "properties": { "tokenize.options": "beforeAfterAnnotations=true" } }
这样处理后,法语分词的输出格式就会和德语保持一致,每个token对象里都会包含before和after节点啦。
内容的提问来源于stack exchange,提问作者bendecko
相关产品推荐
相关产品推荐

