保留Stanford CoreNLP

时间:2017-04-18 03:48:03

标签: utf-8 nlp stanford-nlp tokenize chinese-locale

https://nlp.stanford.edu/software/tokenizer.html开始,斯坦福大型分类器选项-preserveLines可以保留文本文件中\n确定的换行符。

但是在CoreNLP中,有ssplit分割句子并打破了界限。

所以给出了文本文件:

生告激効雑題鹿際写徹輝万。最協領野京部習頂経日交日考当備。
foo foo bar bar.

标记文件的所需输出应为:

生 告 激効 雑題 鹿際 写 徹輝万 。 最協領 野京部 習頂経 日 交日 考 当備 。
foo foo bar bar .

使用中文CoreNLP模型:

wget http://nlp.stanford.edu/software/stanford-corenlp-full-2016-10-31.zip
unzip stanford-corenlp-full-2016-10-31.zip
cp stanford-corenlp-full-2016-10-31/stanford-corenlp-3.7.0.jar .
wget http://nlp.stanford.edu/software/stanford-english-corenlp-2016-10-31-models.jar
echo -e "生告激効雑題鹿際写徹輝万。最協領野京部習頂経日交日考当備。\nfoo foo bar bar." > input.txt

java -mx10g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLP -props stanford-tools/StanfordCoreNLP-chinese.tokenize.properties -file input.txt -outputFormat text

stanford-chinese.properties文件应如下所示:

annotators = segment, ssplit
customAnnotatorClass.segment = edu.stanford.nlp.pipeline.ChineseSegmenterAnnotator
segment.model = edu/stanford/nlp/models/segmenter/chinese/ctb.gz
segment.sighanCorporaDict = edu/stanford/nlp/models/segmenter/chinese
segment.serDictionary = edu/stanford/nlp/models/segmenter/chinese/dict-chris6.ser.gz
segment.sighanPostProcessing = true
ssplit.boundaryTokenRegex = [.]|[!?]+|[。]|[!?]+

(注意:如果ssplit未被使用,中国人不会写入文件的Stanford CoreNLP,请参阅https://github.com/stanfordnlp/CoreNLP/issues/409

输出产生3行而不是2行:

生 告 激効 雑題 鹿際 写 徹輝万 。 
最協領 野京部 習頂経 日 交日 考 当備 。
foo foo bar bar .

使用-preserveLines选项和以下命令会产生相同的结果:

java -mx10g -cp "stanford-tools/*"  edu.stanford.nlp.pipeline.StanfordCoreNLP -props stanford-tools/StanfordCoreNLP-chinese.tokenize.properties -preserveLines -file input.txt

斯坦福分离者没有明确的选择来预先设定来自https://nlp.stanford.edu/software/segmenter.shtml#Questions

的行

据我所知,我可以简单地使用Stanford分段器而无需使用更完整的NLP套件进行分段:

wget https://nlp.stanford.edu/software/stanford-segmenter-2016-10-31.zip
unzip stanford-segmenter-2016-10-31.zip
cd stanford-segmenter-2016-10-13
./segment.sh ctb input.txt utf-8 0

[OUT]:

生 告 激効 雑題 鹿際 写 徹輝万 。 最協領 野京部 習頂経 日 交日 考 当備 。

foo foo bar bar。

但问题仍然存在于Stanford CoreNLP,即中国模式的Stanford CoreNLP可以保留线路吗?

1 个答案:

答案 0 :(得分:1)

我们的系统设置为处理中文新闻专线文件,其中换行符类似于空字符串。例如,在英文中,令牌不会被换行符破坏,但在中文新闻专线文档中,令牌可能会被换行符分解。

话虽如此,已经有相当多的请求为中文添加每行一个句子。我将看看是否可以对代码进行一些更改并为Stanford CoreNLP 3.8.0实现这一点。