Fix and document matcher operator 'shadowing' behaviour

This commit is contained in:
Matthew Honnibal 2017-10-16 13:38:20 +02:00
parent 748d525801
commit 56aa42cc5d

View File

@ -138,7 +138,10 @@ cdef int get_action(const TokenPatternC* pattern, const TokenC* token) nogil:
# This is a bandaid over the 'shadowing' problem described here: # This is a bandaid over the 'shadowing' problem described here:
# https://github.com/explosion/spaCy/issues/864 # https://github.com/explosion/spaCy/issues/864
next_action = get_action(pattern+1, token) next_action = get_action(pattern+1, token)
return REPEAT if next_action is REJECT else next_action if next_action is REJECT:
return REPEAT
else:
return ADVANCE_ZERO
else: else:
return PANIC return PANIC
@ -228,9 +231,8 @@ cdef class Matcher:
return len(self._patterns) return len(self._patterns)
def add(self, key, on_match, *patterns): def add(self, key, on_match, *patterns):
"""Add a match-rule to the matcher. """Add a match-rule to the matcher. A match-rule consists of: an ID key,
A match-rule consists of: an ID key, an on_match callback, and one or an on_match callback, and one or more patterns.
more patterns.
If the key exists, the patterns are appended to the previous ones, and If the key exists, the patterns are appended to the previous ones, and
the previous on_match callback is replaced. The `on_match` callback will the previous on_match callback is replaced. The `on_match` callback will