Spacy EntityRuler объединяет / редактирует объекты? - PullRequest
1 голос
/ 05 мая 2020

Я работаю над использованием пространства для некоторых задач NLP, таких как вычисление частоты сущностей и оценок PMI (ранжирование отношений между сущностями организации и леммами). В моем корпусе часто есть c организаций с различными перестановками (например, Harman, HARMAN, Harman International ...), которые я хочу всегда признавать как одно целое. Таким образом, при подсчете частот все они рассматриваются как одна организационная сущность, а не как отдельные уникальные сущности.

Я считаю, что spacy.pipeline.EntityRuler должен быть способом редактирования и обновления пространственного модуля, но я не получить желаемого результата. После выполнения приведенного ниже кода список объектов не обновляется. Я все еще возвращаю различные перестановки организации как уникальные сущности.

Я не уверен, что я делаю не так, поэтому приветствую любую помощь!

Спасибо.

Код:

import spacy
from spacy.pipeline import EntityRuler

nlp = spacy.load('en_core_web_sm', disable = ['parser','tagger'])
ruler = EntityRuler(nlp, overwrite_ents = True) #replace entities that may exist with the following
patterns = [{"label": "ORG", "pattern": [{"TEXT":"HARMAN"}, {"TEXT":"International"}], "id": "harman"},
           {"label": "ORG", "pattern": [{"TEXT":"HARMAN"}], "id": "harman"},
           {"label": "ORG", "pattern": [{"TEXT":"Harman"}], "id": "harman"},
           {"label": "ORG", "pattern": [{"TEXT":"Harman"}, {"TEXT":"International"}], "id": "harman"}
           ] 
ruler.add_patterns(patterns)
nlp.add_pipe(ruler, before="ner")
corpus_nlp = [nlp(corpus['Body'][i]) for i in corpus.index]

corpus_nlp[49].ents

(Харман, Зиннов, ХАРМАН, «Зона лидерства»)

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