【发布时间】:2016-05-01 09:33:47
【问题描述】:
我正在使用带有 3 类模型的斯坦福 NER 来识别文件中的 PERSON、LOCATION 和 ORGANIZATION。它工作正常,除非有名称由换行符分隔:
简·多伊
约翰·多伊
简·史密斯
NER 工具将这三个名称视为一个大名称,而不是三个名称。如果我在每个名字后加一个逗号,它会选择三个名字。如何告诉工具使用换行符来分隔三个名称?
【问题讨论】:
标签: stanford-nlp
我正在使用带有 3 类模型的斯坦福 NER 来识别文件中的 PERSON、LOCATION 和 ORGANIZATION。它工作正常,除非有名称由换行符分隔:
简·多伊
约翰·多伊
简·史密斯
NER 工具将这三个名称视为一个大名称,而不是三个名称。如果我在每个名字后加一个逗号,它会选择三个名字。如何告诉工具使用换行符来分隔三个名称?
【问题讨论】:
标签: stanford-nlp
如果名称最终成为同一个“句子”中的连续标记,那就会发生这种情况。您可以做的主要事情是让系统标记化/句子在换行符上拆分,然后您将为每个名称获得一个单独的句子,并且一切正常。一般来说,如果你的文本被格式化为每行一个段落(软换行,这在现代文本中很常见),这会很好用,但如果你的文本有硬换行符(不在句子/段落边界处),这会很糟糕),因为这样系统就会错误地将每一行视为一个句子。直接和通过 CoreNLP 调用斯坦福 NER 的命令是:
java edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators "tokenize,ssplit,pos,lemma,ner" -file taylorswift.txt -outputFormat conll -ssplit.newlineIsSentenceBreak always
java edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz -textFile taylorswift.txt -tokenizerOptions tokenizeNLs=true
【讨论】: