Я новичок в spacy, и я прочитал документы о сопоставлении с токеном.Я попробовал spaCy matcher, используя REGEX, но у меня нет результатов.
Когда я использую библиотеку re для сопоставления, она работает, хотя.
Я что-то не так делаю в коде.
Я пытаюсь найти слово "accès'd"
Спасибо за вашу помощь
# REGEX
import re
text = u"accès'd est ferme aujpourd'hui"
pattern_re = re.compile("^acc?é?e?è?s?s?'?D" , re.I)
pattern_re.match(text)
# <re.Match object; span=(0, 7), match="accès'd">
# REGEX SPACY VERSION 1
import spacy
from spacy.matcher import Matcher
nlp = spacy.load("fr_core_news_sm")
pattern = [{'TEXT': {'REGEX' : "^acc?é?e?è?s?s?'?D"}}]
matcher = Matcher(nlp.vocab)
matcher.add('AccèsD' , None , pattern)
doc = nlp(text)
matches = matcher(doc)
for match_id, start , end in matches:
match_string = nlp.vocab.strings[match_id]
span = doc[start:end]
print(match_id, match_string, start , end , span.text)
# NOTHING
# REGEX SPACY VERSION 2
import spacy
from spacy.matcher import Matcher
nlp = spacy.load("fr_core_news_sm")
accesd_flag = lambda text : bool(re.compile(r"^acc?é?e?è?s?s?'?D" , re.I).match(text))
IS_ACCESD = nlp.vocab.add_flag(accesd_flag)
pattern= [{IS_ACCESD : True}]
matcher = Matcher(nlp.vocab)
matcher.add('AccèsD' , None , pattern)
doc = nlp(text)
matches = matcher(doc)
for match_id, start , end in matches:
match_string = nlp.vocab.strings[match_id]
span = doc[start:end]
print(match_id, match_string, start , end , span.text)
# NOTHING