Шаблон регулярного выражения для просторного Entityruler не работает - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь идентифицировать сущности с помощью регулярного выражения и помечать их с помощью линейки сущностей. Шаблон регулярного выражения возвращает совпадение для Matcher, но не возвращает то же самое для линейки Entity и также работает с обычным регулярным выражением.

    from spacy.matcher import Matcher
    text = u"Name: first last \n Phone: +1223456790 \n e-mail: first.last@testmail.com."
    doc = nlp(text)
    matcher = Matcher(nlp.vocab)
    pattern = [{"LOWER": {'REGEX' :"\w+\.\w+\@\w+\.com"}}]
    matcher.add("email", None, pattern)
    matches = matcher(doc)
    print([doc[start:end] for match_id, start, end in matches])

вывод: [first. last@testmail.com]

`

text = u"Name: first last \n Phone: +1223456790 \n e-mail: first.last@testmail.com."
from spacy.lang.en import English
from spacy.pipeline import EntityRuler
nlp = English()
ruler = EntityRuler(nlp, overwrite_ents=True)
pattern = [{"label": "Email", "pattern":
            {"LOWER": {'REGEX' : "\w+\.\w+\@\w+\.com"}}
           }]

ruler.add_patterns(patterns)
nlp.add_pipe(ruler, name='customer')
text = u"Name: first last \n Phone: +1223456790 \n e-mail: first.last@testmail.com."
doc = nlp(text)
for ent in doc.ents:
    print(ent.text,ent.label_)

`Вывод: Нет

1 Ответ

2 голосов
/ 06 мая 2020

Шаблон EntityRuler должен быть представлен в виде списка лексем, как и в шаблоне Matcher:

pattern = [{"label": "Email", "pattern":
            [{"LOWER": {'REGEX' : "\w+\.\w+\@\w+\.com"}}]
           }]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...