从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可以保留线路吗?
答案 0 :(得分:1)
我们的系统设置为处理中文新闻专线文件,其中换行符类似于空字符串。例如,在英文中,令牌不会被换行符破坏,但在中文新闻专线文档中,令牌可能会被换行符分解。
话虽如此,已经有相当多的请求为中文添加每行一个句子。我将看看是否可以对代码进行一些更改并为Stanford CoreNLP 3.8.0实现这一点。