Engli sh В аннотаторе NER для Stanford CoreNLP v 4.0.0 отсутствуют некоторые типы объектов по сравнению с v 3.9.2 - PullRequest
0 голосов
/ 28 мая 2020

Я недавно обновился до Stanford CoreNLP v 4.0.0 с v 3.9.2 и заметил, что производительность в отношении NER снизилась. В частности, v4, похоже, не распознает так много объектов и вообще не распознает URL-адреса или EMAIL. Версия 4 также больше не распознает Google как ОРГАНИЗАЦИЮ (все еще признает Microsoft, но я еще не проводил много тестов в других организациях). Мне было интересно, есть ли изменение в том, как использовать v4? Документация, похоже, не указывает на какие-либо отличия в использовании от того, что я вижу.

Журнал изменений на https://stanfordnlp.github.io/CoreNLP/history.html, похоже, не подразумевает, что NER на английском языке sh должно быть затронуто (хотя в нем говорится, что существует новая токенизация UDv2, которая влияет на теги и синтаксический анализ). Я заметил, что файлы jar между v4 и v3.9.2 отличаются, v4 значительно меньше.

Чтобы продемонстрировать различия, рассмотрим, например, базовый c следующий файл входных данных, который включает все типы сущностей и имеет следующий текст в каждой строке (т.е. два файла basic.txt и basic4.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-файла engli sh models, соответствующий каждой версии). Выход для двух версий вычисляется с помощью двух команд

 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.out и basic.txt.out соответственно. Новая версия CORENLP 4.0.0, похоже, не может идентифицировать URL, адреса электронной почты, а также не распознает Google как организацию.

Чтобы кратко продемонстрировать, вывод команды diff приведен ниже. Он показывает, что разные версии идентифицируют большинство объектов (с дополнительными подробностями в v4). Однако в версии 4 отсутствует 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

1 Ответ

1 голос
/ 03 июня 2020

В общем, однословные предложения плохо обрабатываются моделями 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 "

...