Может ли spaCy связывать только именованные объекты? - PullRequest
0 голосов
/ 23 марта 2020

Вот выдержка из (предположительно) забавного обзора ресторана:

Я бы хотел лично пожать руку мистеру Тофу . В то время как я не могу с медицинской точки зрения доказать это, я на 100% уверен, что их скороДубу содержит неопределенные свойства исцеления . Некоторые, как-то, я всегда чувствую себя лучше после еды здесь. Получил холодно ? Отвинтите Nyquil и получите пряный кимчи soondubu.

Я хотел бы извлечь важные объекты и связать их с объектами Википедии. Я обучил spaCy на небольшом примере Википедии / 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', '')]
  1. Как я могу заставить Spacy распознавать и другие сущности?
  2. Должно ли это быть сделано до связывания обучающей модели или с уже обученной моделью?
  3. Является ли spaCy подходящим инструментом для моя задача вообще?

1 Ответ

1 голос
/ 23 марта 2020

Теоретически это возможно. Во-первых, вам нужно убедиться, что у вас есть компонент, который помечает подобные объекты. Вы могли бы обучить модель NER для этого, но помните, что ее производительность может быть не такой хорошей для таких вещей, как "холодный", чем для реальных именованных объектов, таких как "Лондон".

Чтобы создать базу знаний и Entity Linker из Википедии / Викиданных, примеры сценариев не ограничиваются именованными сущностями - они пытаются проанализировать все, что появляется во внутри-вики-ссылке. Если слово «простуда» связано со страницей «Простуда», оно должно быть в состоянии выучить его. Точные сущности, которые хранятся в КБ и используются для обучения модели EL, зависят от того, какие сущности найдены вашим компонентом распознавателя сущностей. Поэтому, если вы отрегулируете это в соответствии со своим вариантом использования, компонент связывания сущностей будет следовать автоматически.

...