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

Jia*_*Liu 2 java stanford-nlp

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

Chr*_*ing 6

首先,你必须承认,使用小写或不一致的英文文本比使用正式文本更难获得命名实体,大写字母是一个很好的线索.(这也是为什么中文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.
Run Code Online (Sandbox Code Playgroud)

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

% 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   _   _
Run Code Online (Sandbox Code Playgroud)

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

% 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   _   _
Run Code Online (Sandbox Code Playgroud)

相反,您可以在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   _   _
Run Code Online (Sandbox Code Playgroud)

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