Пытался сопоставить что-то вроде «125,00 долларов США за акцию» на spaCy, используя сопоставление на основе правил, как упомянуто здесь https://github.com/explosion/spaCy/issues/882. Однако при испытании
nlp = en_core_web_sm.load()
matcher = Matcher(nlp.vocab)
doc = nlp(u'$125.00/share, $ 125 / share, $ 125.00 / share, $ 125 . 00 / share')
token_pattern = [{'NORM': '$'}, {'IS_DIGIT': True}, {'ORTH': '.', 'OP': '?'},
{'IS_DIGIT': True, 'OP': '?'}, {'ORTH': '/'}, {'LOWER': 'share'}]
def matched_pattern (matcher, doc, i, matches):
match_id, start, end = matches[i]
span = doc[start: end]
print ('matched!', span)
matcher.add('SharePrice', matched_pattern, token_pattern)
matches = matcher(doc)
Я вернусь,
(«совпадает!», 125 долл. / акция)
(«совпадает!», 125,00 долл. / акция)
Вместо этого я хочу сопоставить такие шаблоны, как «125,00 долларов за акцию», без пробелов между ними. Пытаясь,
token_pattern = [{'NORM': '$'}, {'IS_SPACE': False}, {'IS_DIGIT': True}, {'IS_SPACE': False},{'ORTH': '.', 'OP': '?'}, {'IS_SPACE': False},
{'IS_DIGIT': True, 'OP': '?'}, {'IS_SPACE': False}, {'ORTH': '/'}, {'IS_SPACE': False}, {'LOWER': 'share'}]
Мое выражение лица не соответствует ни одному образцу. Пожалуйста помоги!