斯坦福NER,输出编码问题

时间:2016-07-02 12:27:07

标签: xml character-encoding stanford-nlp

我使用Stanford NER 3.6.0识别人名。从输入文本文件或输入XML文件生成XML没有问题。

我在阅读NER返回的XML文件时遇到问题。

我现在面临的两个问题是: 名称不能以'开头。 '字符,十六进制值0xA0。

  1. 意外的XML声明。 XML声明必须是文档中的第一个节点,并且不允许在其前面显示空白字符。
  2. 我使用JAR文件和命令提示符生成XML输出。

    命令行:

    java -mx1000m -cp" D:/Downloads/Projects/Installations/stanford-ner-2015-12-09/stanford-ner.jar; D:/ Downloads / Projects / Installations / stanford-ner- 2015年12月9日/ lib中/ *" edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier" D:/Downloads/Projects/Installations/stanford-ner-2015-12-09/classifiers/english.conll.4class.distsim.crf.ser。 GZ" -outputFormat inlineXML -textFile" C:\ Users \ Freeware Sys \ AppData \ Local \ Temp \ References(2)_in.txt" > " C:\ Users \ Freeware Sys \ AppData \ Local \ Temp \ References(2)_ner.xml" -inputEncoding" UTF-8" -outputEncoding" UTF-8"

    非常感谢任何帮助。

    感谢。

1 个答案:

答案 0 :(得分:1)

我想我们一直在用“inlineXML”这个名字过度使用/误导。在实践中,这仅仅意味着斯坦福NER在实体周围输出XML样式的标签。它从未意味着它生成一个有效的XML文档作为输出。我们可以改变它,但是我们可能会产生不同的东西,因为对于真正的XML解析,每个实体类型都有不同的标记没有多大意义。

如果你想要真正的XML,请尝试CoreNLP的xml输出,这是真正的XML:

java -mx1g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators "tokenize,ssplit,pos,lemma,ner", -ner.model edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz -ner.useSUTime false -outputFormat xml -file foo.txt -encoding "UTF-8"

为什么不间断的空格字符有问题?在罕见的情况下(如电话号码),它们被故意用于斯坦福NLP代码中,其中单个令牌内允许空格。它们在以UTF-8编码的XML文档中有效。