Может ли spaCy связывать только названные объекты?
Вот отрывок из (предположительно) забавного обзора ресторана:
Я хочу лично пожать руку мистеру Тофу. Хотя я не могу доказать это с медицинской точки зрения, я на 100% уверен, что их скородубу содержит неопределенные лечебные свойства. Каким-то образом я всегда чувствую себя лучше после еды здесь. Получил простуду? Прикрутите NyQuil и получить пряный кимчи soondubu.
Я хотел бы выделить важные объекты и связать их с объектами Википедии. Я обучил spaCy на небольшой выборке Wikipedia/WikiData и запустил ссылку на объект в обзоре:
[('Tofu', 'PERSON', 'Q177378'),
('Nyquil', 'WORK_OF_ART', 'NIL')]
Я бы хотел, чтобы другие объекты также были извлечены и связаны, например:
kimchi -> Kimchi
cold -> Common cold
healing -> medicine
medically -> medicine
Похоже, что spaCy может связывать только именованные объекты. Я попытался явно перечислить другие названные сущности (которые, очевидно, плохо масштабируются):
ruler = EntityRuler(nlp)
patterns = [{"label": "ORG", "pattern": "kimchi"}, {"label": "ORG", "pattern": "cold"}]
ruler.add_patterns(patterns)
nlp.add_pipe(ruler)
Однако похоже, что spaCy вообще не связывает новые сущности:
[ ('Tofu', 'PERSON', 'Q177378'),
('cold', 'ORG', ''),
('Nyquil', 'WORK_OF_ART', 'NIL'),
('kimchi', 'ORG', '')]
- Как я могу заставить Spacy распознавать и другие сущности?
- Следует ли это сделать до обучения модели связывания сущностей или это можно сделать с уже обученной моделью?
- Подходит ли spaCy для моей задачи?
1 ответ
Теоретически это возможно. Во-первых, вам нужно убедиться, что у вас есть компонент, который маркирует такие объекты. Вы можете обучить для этого модель NER, но имейте в виду, что ее производительность может быть не такой хорошей для таких вещей, как "холодный", чем для реальных именованных сущностей, таких как "Лондон".
Для создания базы знаний и компоновщика сущностей из Википедии / Викиданных примеры сценариев не ограничиваются именованными сущностями - они пытаются анализировать все, что появляется во внутренней ссылке вики. Если слово "простуда" будет связано со страницей "Простуда", он сможет его выучить. Конкретные сущности, которые хранятся в базе знаний и используются для обучения модели EL, зависят от того, какие сущности обнаруживает ваш компонент распознавания сущностей. Поэтому, если вы настроите это в соответствии с вашим вариантом использования, компонент связывания сущностей будет следовать автоматически.