【问题标题】:English NER Annotator for Stanford CoreNLP v 4.0.0 missing some entity types compared to v 3.9.2与 v 3.9.2 相比,Stanford CoreNLP v 4.0.0 的英语 NER 注释器缺少一些实体类型
【发布时间】:2020-06-03 05:54:28
【问题描述】:

我最近从 v 3.9.2 升级到 Stanford CoreNLP v 4.0.0 并注意到它似乎降低了 NER 的性能。特别是,v4 似乎无法识别那么多实体,并且根本无法识别 URL 或 EMAIL。版本 4 也不再承认 Google 是一个组织(仍然承认微软,但我还没有在其他组织上做过很多测试)。我想知道如何使用 v4 是否有变化?该文档似乎与我所看到的没有任何区别。

https://stanfordnlp.github.io/CoreNLP/history.html 处的更改日志似乎并不暗示英语中的 NER 应该受到影响(尽管它确实指出有一个新的 UDv2 标记化会影响标记和解析)。我确实注意到 v4 和 v3.9.2 之间的 jar 文件不同,v4 明显更小。

为了演示差异,例如,考虑基本的以下输入数据文件,该文件包括所有实体类型并在每行具有以下文本(即两个文件 basic.txtbasic4.txt 是相同的,并且每行都包含字符串元素下面列出)。

he 
cancer.
Los Angeles
California
Google
two days
Convention
night actor
special interest
todays ego
$1 million
100%
tonight, not sure
10/10
Islam
Nicole.
Europe
https://www.tom.com
fans@tom.com
@therealdeal
USA

运行以下两条命令(其中环境变量$CORENLP$CORENLP4分别指向包含3.9.2和4.0.0版本的目录,每个目录都有与每个版本相关的英文模型jar文件)。两个版本的输出是用两个命令计算的

 java -mx2g -cp "$CORENLP4/*" edu.stanford.nlp.pipeline.StanfordCoreNLP -ssplit.eolonly true -annotators tokenize,ssplit,pos,lemma,ner -file basic4.txt -outputFormat text

 java -mx2g -cp "$CORENLP/*" edu.stanford.nlp.pipeline.StanfordCoreNLP -ssplit.eolonly true -annotators tokenize,ssplit,pos,lemma,ner -file basic.txt -outputFormat text

给出两个输出文件。 basic4.txt.outbasic.txt.out 分别。较新的 4.0.0 版本的 CORENLP 似乎无法识别 URL、电子邮件,也无法将 Google 识别为组织。

为了简洁地演示,下面给出了 diff 命令的输出。它表明不同的版本识别了大多数实体(在 v4 中有额外的细节)。但是,v4 缺少 URL、EMAIL 和 Google 作为一个组织,如前所述。

diff basic.txt.out basic4.txt.out > corenlp.diff

1c1
< Document: ID=basic.txt (21 sentences, 34 tokens)
---
> Document: ID=basic4.txt (21 sentences, 34 tokens)
10c10
< he    PERSON
---
> he    PERSON  -
20c20
< cancer    CAUSE_OF_DEATH
---
> cancer    CAUSE_OF_DEATH  -
30c30
< Los Angeles   CITY
---
> Los Angeles   CITY    LOCATION:0.9501291593275937
39c39
< California    STATE_OR_PROVINCE
---
> California    STATE_OR_PROVINCE   LOCATION:0.558758796557467
45c45
< [Text=Google CharacterOffsetBegin=35 CharacterOffsetEnd=41 PartOfSpeech=NNP Lemma=Google NamedEntityTag=ORGANIZATION]
---
> [Text=Google CharacterOffsetBegin=35 CharacterOffsetEnd=41 PartOfSpeech=NNP Lemma=Google NamedEntityTag=O]
48d47
< Google    ORGANIZATION
58c57
< two days  DURATION
---
> two days  DURATION    DURATION:-1.0
64c63
< [Text=Convention CharacterOffsetBegin=51 CharacterOffsetEnd=61 PartOfSpeech=NNP Lemma=Convention NamedEntityTag=O]
---
> [Text=Convention CharacterOffsetBegin=51 CharacterOffsetEnd=61 PartOfSpeech=NN Lemma=convention NamedEntityTag=O]
76,77c75,76
< night TIME
< actor TITLE
---
> night TIME    TIME:-1.0
> actor TITLE   -
87c86
< special interest  IDEOLOGY
---
> special interest  IDEOLOGY    -
97c96
< todays    SET
---
> todays    SET SET:-1.0
108c107
< $1 million    MONEY
---
> $1 million    MONEY   MONEY:0.999511595823616
118c117
< 100%  PERCENT
---
> 100%  PERCENT PERCENT:0.9157902320089298
124c123
< [Text=tonight CharacterOffsetBegin=118 CharacterOffsetEnd=125 PartOfSpeech=RB Lemma=tonight NamedEntityTag=DATE NormalizedNamedEntityTag=THIS NI Timex=<TIMEX3 alt_value="THIS NI" anchorTimeID="t0" temporalFunction="true" tid="t4" type="DATE" valueFromFunction="tf0">tonight</TIMEX3>]
---
> [Text=tonight CharacterOffsetBegin=118 CharacterOffsetEnd=125 PartOfSpeech=NN Lemma=tonight NamedEntityTag=DATE NormalizedNamedEntityTag=THIS NI Timex=<TIMEX3 alt_value="THIS NI" anchorTimeID="t0" temporalFunction="true" tid="t4" type="DATE" valueFromFunction="tf0">tonight</TIMEX3>]
130c129
< tonight   DATE
---
> tonight   DATE    DATE:-1.0
139c138
< 10/10 NUMBER
---
> 10/10 NUMBER  NUMBER:-1.0
148c147
< Islam RELIGION
---
> Islam RELIGION    ORGANIZATION:0.4330241395436507
158c157
< Nicole    PERSON
---
> Nicole    PERSON  PERSON:0.8292894556058169
167c166
< Europe    LOCATION
---
> Europe    LOCATION    LOCATION:0.8992206702193217
173c172
< [Text=https://www.tom.com CharacterOffsetBegin=163 CharacterOffsetEnd=182 PartOfSpeech=NNP Lemma=https://www.tom.com NamedEntityTag=URL]
---
> [Text=https://www.tom.com CharacterOffsetBegin=163 CharacterOffsetEnd=182 PartOfSpeech=ADD Lemma=https://www.tom.com NamedEntityTag=O]
176d174
< https://www.tom.com   URL
182c180
< [Text=fans@tom.com CharacterOffsetBegin=183 CharacterOffsetEnd=195 PartOfSpeech=NNP Lemma=fans@tom.com NamedEntityTag=EMAIL]
---
> [Text=fans@tom.com CharacterOffsetBegin=183 CharacterOffsetEnd=195 PartOfSpeech=ADD Lemma=fans@tom.com NamedEntityTag=O]
185d182
< fans@tom.com  EMAIL
191c188
< [Text=@therealdeal CharacterOffsetBegin=196 CharacterOffsetEnd=208 PartOfSpeech=NN Lemma=@therealdeal NamedEntityTag=HANDLE]
---
> [Text=@therealdeal CharacterOffsetBegin=196 CharacterOffsetEnd=208 PartOfSpeech=JJ Lemma=@therealdeal NamedEntityTag=HANDLE]
194c191
< @therealdeal  HANDLE
---
> @therealdeal  HANDLE  -
203c200
< USA   COUNTRY
---
> USA   COUNTRY LOCATION:0.7231044794961725

【问题讨论】:

    标签: stanford-nlp named-entity-recognition


    【解决方案1】:

    一般来说,NER 模型不能很好地处理单个单词的句子,因为这些模型使用周围的上下文来处理文本。用于高精度 NER 的硬编码表达式不包括 google 或 Google,但您可以根据需要进行更改。请注意,有时它可以将 Google 本身识别为 ORG,因为它有一种机制可以记住它首先在小写或大写上下文中看到的单词。如果您向 3.9.2 询问“Google”然后是“google”,它会将“Google”识别为 ORG。如果您以相反的顺序询问,它不会识别为 ORG。

    无法识别电子邮件或 url 的问题是高精度 NER 仅设置为适用于名词或形容词,并且新版本为地址引入了新的 POS 标签。我们可以更改我们端的代码,以便将来默认检测到这一点。同时,您可以将此选项添加到命令行,它应该会再次检测 url 和电子邮件:

    -ner.fine.regexner.mapping "ignorecase=true,validpospattern=^(NN|JJ|ADD).*,edu/stanford/nlp/models/kbp/english/gazetteers/regexner_caseless.tab;edu/stanford /nlp/models/kbp/english/gazetteers/regexner_cased.tab"

    【讨论】:

      猜你喜欢
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      相关资源
      最近更新 更多