Имеет ли предыдущее предложение какое-либо влияние на текущее предложение в Признании именованных организаций (NER)? Одинаков ли результат, если вы применяете NER к каждому предложению отдельно по сравнению с применением NER к статьям, состоящим из нескольких предложений?
Более конкретно, я использую Spacy NER. Это первый подход:
import spacy
nlp = spacy.load('en')
sentences = "My name is Bruce and I come from New York. Pete is my best friend from Amsterdam."
nlp_object = nlp(sentences)
print([(y.text, y.label_) for y in nlp_object.ents])
, который дает этот результат:
[('Bruce', 'PERSON'), ('New York', 'GPE'), ('Pete', 'PERSON'), ('Amsterdam', 'GPE')]
Но вместо двух последних строк вы также можете разбить предложения и применить NER к каждому предложению:
for s in sentences.split("."):
nlp_object = nlp(s)
print([(y.text, y.label_) for y in nlp_object.ents])
, который возвращает тот же результат (но вместо этого в двух отдельных строках):
[('Bruce', 'PERSON'), ('New York', 'GPE')]
[('Pete', 'PERSON'), ('Amsterdam', 'GPE')]
В этом примере выполнение кода дает те же извлеченные сущности. Но как основная модель делает это? Есть ли какое-либо влияние предыдущего предложения в NER? И есть ли разница между различными реализациями NER?