我使用Stanford NER 3.6.0识别人名。从输入文本文件或输入XML文件生成XML没有问题。
我在阅读NER返回的XML文件时遇到问题。
我现在面临的两个问题是: 名称不能以'开头。 '字符,十六进制值0xA0。
我使用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"
非常感谢任何帮助。
感谢。
答案 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文档中有效。