1-я вещь 1-я: я новичок в SpaCy и только начал его тестировать. Я должен сказать, что я впечатлен его простотой и качеством do c. Спасибо!
Теперь я пытаюсь определить PER во французском тексте. Кажется, для большинства это работает довольно хорошо, но я видел повторяющуюся неправильную схему: имена с дефисом не распознаются правильно (например, Пьер-Луи Дюран будет отображаться как два PER: «Пьер» и «Луи Дюран»).
См. Пример:
import spacy
# nlp = spacy.load('fr')
nlp = spacy.load('fr_core_news_md')
description = ('C\'est Jean-Sébastien Durand qui leur a dit. Pierre Dupond n\'est pas venu à Boston comme attendu. '
'Louis-Jean s\'est trompé. Claire a bien choisi.')
text = nlp(description)
labels = set([w.label_ for w in text.ents])
for label in labels:
entities = [e.string for e in text.ents if label==e.label_]
entities = list(entities)
print(label, entities)
вывод:
LOC ['Boston ']
PER ['Jean', 'Sébastien Durand ', 'Pierre Dupond ', 'Louis', 'Jean ', 'Claire ']
Это должны быть: "Жан-Себастьян Дюран" и "Луи-Жан".
Я не уверен, что делать здесь:
- изменить способ извлечения токенов (меня интересует побочный эффект для не PER) - я не думаю, что это проблема как PER может представлять собой совокупность нескольких токенов
- применить магию c где-нибудь, чтобы дефис можно было использовать в NER для PER
- обучить модель
- go обратно в школу; -)
Спасибо за вашу помощь (и да, я изучаю, читая больше, мне это нравится)!
-T C