https://github.com/explosion/spaCy/issues/882のようなルールベースのマッチングを使用してspaCyに '$ 125.00/share'のようなものをマッチングしようとしました。spaCy 'IS_SPACE'フラグが機能しない
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 'マッチ!'。00 /株)( 'マッチ!'、$ 125 /株)
、バック
を取得
代わりに、私は '$ 125.00/share'のようなパターンを間にスペースを入れずにマッチさせたいと思います。試してみると、
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'}]
私の表現はどのパターンとも一致しません。助けてください!