首先,您必须承认,在小写或大小写不一致的英文文本中正确命名实体比在正式文本中更难,在正式文本中大写字母是一个很好的线索。 (这也是中文 NER 比英文 NER 难的原因之一。)不过,为了让 CoreNLP 很好地处理小写文本,您必须做一些事情——默认模型经过训练,可以在精心编辑的文本上很好地工作。
如果您使用正确编辑的文本,则应使用我们默认的英文模型。如果您正在使用的文本(主要)是小写或大写,那么您应该使用下面提供的两种解决方案之一。如果它是真正的混合物(就像许多社交媒体文本),您可以使用下面的 truecaser 解决方案,或者您可以通过使用both带壳和无壳 NER 模型(作为给定的一长串模型)ner.model
财产)。
方法一:无壳模型。我们还提供忽略大小写信息的英文模型。它们对所有小写文本的效果会更好。
方法 2:使用 truecaser。我们提供一个truecase
注释器,尝试将文本转换为正式编辑的大写形式。您可以先应用它,然后使用常规注释器。
一般来说,我们不清楚这些方法中的一种通常或总是获胜。你可以两者都尝试一下。
重要的:要使用下面调用的额外组件,您需要下载英语模型罐 https://stanfordnlp.github.io/CoreNLP/download.html,并使其在您的类路径中可用。
这是一个例子。我们从示例文本开始:
% 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 _ _
现在,该组织Lakers被识别,并且通常几乎所有实体词都被标记为具有正确实体标签的专有名词,但它无法获得ball,它仍然是一个普通名词。当然,在不区分大小写的文本中,这是一个相当难正确表达的单词,因为ball是一个相当常见的普通名词。