import re
re.sub(' +',' ', "barack obama")
#op
'barack obama'
ссылаясь на документы https://spacy.io/api/phrasematcher
import en_core_web_sm
nlp = en_core_web_sm.load()
matcher = PhraseMatcher(nlp.vocab)
matcher.add("OBAMA", None, nlp("Barack Obama"))
doc = nlp("Barack Obama urges Congress to find courage to defend his healthcare reforms")
matches = matcher(doc)
#op
[(7732777389095836264, 0, 2)]
, но если между строкой есть несколько пробелов, будет возвращен пустой список. то есть между Бараком Обамой есть несколько пробелов
doc = nlp("Barack Obama urges Congress to find courage to defend his
healthcare reforms")
print(matcher(doc))
#op
[]
Чтобы решить это, я подумал об удалении лишнего пробела из заданной строки
string_= 'Barack Obama urges Congress to find courage to defend his healthcare reforms'
space_removed_string = re.sub(' +',' ', string_)
#now passing the string in model
doc = nlp(space_removed_string)
print(matcher(doc))
#op
[(7732777389095836264, 0, 2)]