如何通过CoreNLP识别小写的命名实体,如kobe bryant?

我遇到了一个问题,CoreNLP只能识别名为Kobe Bryant的命名实体,它以一个大写字母开头,但不能识别kobe bryant作为一个人! 那么如何识别CoreNLP以小写字母开头的命名实体???? 欣赏它!!!!

首先,你必须承认,使用小写或不一致的英文文本比使用正式文本更难获得命名实体,大写字母是一个很好的线索。 (这也是为什么中文NER比英语NER更难的一个原因。)尽管如此,你必须做些事情才能让CoreNLP在小写文本上运行得相当好 – 默认模型经过训练,能够很好地处理编辑良好的文本。

如果您正在使用正确编辑的文本,则应使用我们的默认英语模型。 如果您正在使用的文本(主要)是小写或大写,那么您应该使用下面提供的两种解决方案之一。 如果它是真正的混合(如许多社交媒体文本),您可以使用下面的truecaser解决方案,或者您可以通过使用套管和无壳NER模型(作为给予ner.model属性的长模型列表)获得。

方法1:无壳模型。 我们还提供忽略案例信息的英语模型。 它们将在所有小写文本上更好地工作。

方法2:使用truecaser。 我们提供了一个truecase注释器,它试图将文本转换为正式编辑的大写。 您可以先应用它,然后使用常规注释器。

一般来说,我们不清楚这些方法中的一种通常或总是获胜。 你可以尝试两者。

重要提示:要获得下面调用的额外组件,您需要下载英文模型jar ,并在类路径中使用它。

这是一个例子。 我们从示例文本开始:

 % cat lakers.txt lonzo ball talked about kobe bryant after the lakers game. 

使用默认模型,不会找到任何实体,并且所有单词都只能获得一个通用名词标记。 伤心!

 % java edu.stanford.nlp.pipeline.StanfordCoreNLP -file lakers.txt -outputFormat conll -annotators tokenize,ssplit,pos,lemma,ner % cat lakers.txt.conll 1 lonzo lonzo NN O _ _ 2 ball ball NN O _ _ 3 talked talk VBD O _ _ 4 about about IN O _ _ 5 kobe kobe NN O _ _ 6 bryant bryant NN O _ _ 7 after after IN O _ _ 8 the the DT O _ _ 9 lakers laker NNS O _ _ 10 game game NN O _ _ 11 . . . O _ _ 

下面,我们要求使用无壳模型,然后我们做得很好:所有名称单词现在都被识别为专有名词,并且识别出两个人名。 但球队名称仍然缺席。

 % java edu.stanford.nlp.pipeline.StanfordCoreNLP -outputFormat conll -annotators tokenize,ssplit,pos,lemma,ner -file lakers.txt -pos.model edu/stanford/nlp/models/pos-tagger/english-caseless-left3words-distsim.tagger -ner.model edu/stanford/nlp/models/ner/english.all.3class.caseless.distsim.crf.ser.gz,edu/stanford/nlp/models/ner/english.muc.7class.caseless.distsim.crf.ser.gz,edu/stanford/nlp/models/ner/english.conll.4class.caseless.distsim.crf.ser.gz % cat lakers.txt.conll 1 lonzo lonzo NNP PERSON _ _ 2 ball ball NNP PERSON _ _ 3 talked talk VBD O _ _ 4 about about IN O _ _ 5 kobe kobe NNP PERSON _ _ 6 bryant bryant NNP PERSON _ _ 7 after after IN O _ _ 8 the the DT O _ _ 9 lakers lakers NNPS O _ _ 10 game game NN O _ _ 11 . . . O _ _ 

相反,您可以在POS标记和NER之前运行truecasing:

 % java edu.stanford.nlp.pipeline.StanfordCoreNLP -outputFormat conll -annotators tokenize,ssplit,truecase,pos,lemma,ner -file lakers.txt -truecase.overwriteText % cat lakers.txt.conll 1 Lonzo Lonzo NNP PERSON _ _ 2 ball ball NN O _ _ 3 talked talk VBD O _ _ 4 about about IN O _ _ 5 Kobe Kobe NNP PERSON _ _ 6 Bryant Bryant NNP PERSON _ _ 7 after after IN O _ _ 8 the the DT O _ _ 9 Lakers Lakers NNPS ORGANIZATION _ _ 10 game game NN O _ _ 11 . . . O _ _ 

现在, 湖人组织得到了认可,一般来说,几乎所有实体词都被标记为具有正确实体标签的专有名词,但它无法获得 ,这仍然是一个普通名词。 当然,在无壳文本中这是一个相当难的词,因为是一个非常频繁的普通名词。