SpaCy: лица, пропавшие без вести
У меня есть некоторые проблемы с пропавшими без вести лицами. Ниже приведен пример, когда кажется, что SpaCy ослепнет, когда имени предшествуют определенные названия. Когда вы удаляете Labour MP
(закомментированная строка) распознает имя, в противном случае возвращает пустой список.
import spacy
from spacy.en import English
nlp_toolkit = English()
nlp = spacy.load('en')
text = u"In a recent tweet, Labour MP Luciana Berger sought clarification..."
#text = u"In a recent tweet, Luciana Berger sought clarification..."
all_tags = nlp(text)
person_list=[]
for ent in all_tags.ents:
if ent.label_=="PERSON":
person_list.append(str(ent))
print person_list
Сейчас я использую 1.8.2 версию SpaCy. Но перед обновлением мне бы очень хотелось узнать, была ли эта проблема исправлена в версии 2, так как кажется, что обновление не так просто. Может кто-нибудь проверить это или предложить обходной путь? Спасибо!
ОБНОВИТЬ:
Это становится еще интереснее. Если вы измените имя на другое, более распространенное, оно будет работать.
text = u"In a recent tweet, Labour MP James Mill sought clarification..."
out: ['James Mill']
Так что это связано с именем, а не MP
до этого... Во всяком случае - если кто-нибудь может проверить, работает ли он правильно с v2, я буду признателен!
1 ответ
Я попробовал ваш код с Spacy Version 2.0.7, и он дает "Luciana Berger" как сущность для предложения
Я получаю этот список ['Luciana Berger']
для предложения "In a recent tweet, Labour MP Luciana Berger sought clarification..."
Также для другого предложения, это дает "Джеймс Милл"
Возможно, если вы хотите попробовать более новую версию, попробуйте установить ее в виртуальной среде, чтобы вы могли поэкспериментировать с обеими версиями. Вы можете воспользоваться помощью этого, как использовать виртуальную среду. На самом деле я рекомендую использовать Virtual env, поскольку переключение между версиями является довольно длительным процессом. Так что лучше попробуй, прежде чем переключаться.
Также просто для справки, NER работают в Spacy над "Обучение моделей", вот ссылка. Так что может случиться так, что не все имена будут включены в NER.