Sie haben versucht, mit SpaCy so etwas wie '$ 125.00/share' zu erreichen, indem Sie das hier beschriebene regelbasierte Matching verwenden, wie hier erwähnt https://github.com/explosion/spaCy/issues/882. Wenn jedochspaCy 'IS_SPACE' -Flagge funktioniert nicht
Ausprobierennlp = 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)
ich zurück,
('angepasst', $ 125/Aktie)
('Matched!', $ 125. 00/Aktie)
Stattdessen möchte ich Muster wie "125,00 $/Aktie" ohne die Leerzeichen dazwischen abgleichen. Beim Versuch,
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'}]
Mein Ausdruck stimmt mit keinem Muster überein. Bitte, hilf!