Извлечение сущностей с использованием POS и NER в spacy

#python #python-3.x #string #nlp #spacy

#python #python-3.x #строка #nlp #spacy

Вопрос:

Мне нужно извлекать сущности из предложений с использованием тегов NER и POS. Например,

Учитывая приведенное ниже предложение:

 docx = nlp("The two blue cars belong to the tall Lorry Jim.")
  

где находятся сущности (две синие машины, высокий грузовик Джим). Запуск spacy NER в предложении,

 for ent in docx.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)
  

Он возвращает:

 two 4 7 CARDINAL
Lorry Jim 37 46 PERSON
  

Моя цель — добавить прилагательные / число перед объектами, идентифицируемыми NER вместе, в приведенном выше случае tall является ADJ и должно быть добавлено к Lorry Jim сущности. И two blue cars должен быть извлечен с помощью NUM ADJ NOUN теггера from POS.

Ответ №1:

Во-первых, я должен сказать, что задача, которую вы хотели и о которой вы писали, — это НЕ то, что вы сказали в названии. Я думаю, что сущность имеет стандартное определение, и, например, ADJ не является частью сущности.

Я думаю, что для решения вашей проблемы вам нужно использовать синтаксический анализ зависимостей и проанализировать дерево зависимостей предложения. Это может помочь вам найти ссылки для каждого слова.

Другим способом вы можете определить задачу разбиения на части для вашей проблемы и создать набор данных для того, что вы имели в виду, и попытаться обучить модель для такого типа разбиения на части.

Я думаю, что если вы хотите сделать это для функционального использования, вам нужно сделать вашу проблему очень понятной и простой, чтобы вы могли выбрать практический метод решения проблемы, которая у вас есть. Я думаю, что если вы допускаете какую-то ошибку, вы можете определить простые правила для любых частей существительных и прилагательных, чтобы, если у вас есть POS и NER вместе, вы могли бы ее решить. Это также зависит от языка, на котором вы хотите работать. Нравится ваш пример :

синяя машина

В английском языке прилагательные обычно ставятся перед существительными, и это известно как модификатор или атрибутивная позиция. но вы должны заботиться о предложениях, подобных этому :

Все машины, которые у него были, были синими.

Для работы с функциями вы также можете искать разрешение кореференции следующим образом :

Я видел машины, на которых он ездит, и все они были синими.