我正在使用带有3类模型的Stanford NER来识别文件中的PERSON,LOCATION和ORGANIZATION。它的工作正常,除非有换行符分隔名称:
JANE DOE
约翰DOE
JANE SMITH
NER工具认为这三个名字是一个大名,而不是三个名字。如果我在每个名字后面加一个逗号,它会选择三个名字。如何告诉工具使用换行符分隔三个名称?
答案 0 :(得分:1)
如果名称最终成为同一“句子”中的连续令牌,那就会发生什么。您可以做的主要事情是将系统标记化/句子拆分为换行符,然后您将为每个名称获得单独的句子,并且事情将正常工作。一般情况下,如果您的文本被格式化为每行一个段落(使用软线包装,就像现代文本中常见的那样),这将正常工作,但如果您的文本带有硬换行符(而不是句子/段落边界),则会很糟糕),因为那时系统会错误地将每一行视为一个句子。直接和通过CoreNLP调用Stanford 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