mirror of https://github.com/explosion/spaCy.git
Fix #1434: Matcher failed on ending ? if no token
This commit is contained in:
parent
fec53f09f7
commit
d8391b1c4d
|
@ -391,7 +391,7 @@ cdef class Matcher:
|
|||
matches.append((ent_id, start, end))
|
||||
# Look for open patterns that are actually satisfied
|
||||
for state in partials:
|
||||
while state.second.quantifier in (ZERO, ZERO_PLUS):
|
||||
while state.second.quantifier in (ZERO, ZERO_ONE, ZERO_PLUS):
|
||||
state.second += 1
|
||||
if state.second.nr_attr == 0:
|
||||
start = state.first
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from spacy.tokens import Doc
|
||||
from spacy.vocab import Vocab
|
||||
from spacy.matcher import Matcher
|
||||
from spacy.lang.lex_attrs import LEX_ATTRS
|
||||
|
||||
|
||||
def test_issue1434():
|
||||
'''Test matches occur when optional element at end of short doc'''
|
||||
vocab = Vocab(lex_attr_getters=LEX_ATTRS)
|
||||
hello_world = Doc(vocab, words=['Hello', 'World'])
|
||||
hello = Doc(vocab, words=['Hello'])
|
||||
|
||||
matcher = Matcher(vocab)
|
||||
matcher.add('MyMatcher', None,
|
||||
[ {'ORTH': 'Hello' }, {'IS_ALPHA': True, 'OP': '?'} ])
|
||||
|
||||
matches = matcher(hello_world)
|
||||
assert matches
|
||||
matches = matcher(hello)
|
||||
assert matches
|
Loading…
Reference in New Issue