mirror of
https://github.com/explosion/spaCy.git
synced 2024-12-25 17:36:30 +03:00
Update tests for matcher changes
This commit is contained in:
parent
7e2cdc0c81
commit
187f370734
|
@ -372,7 +372,7 @@ cdef class Matcher:
|
|||
ent_id = state.second.attrs[0].value
|
||||
label = state.second.attrs[0].value
|
||||
matches.append((ent_id, start, end))
|
||||
for i, (ent_id, label, start, end) in enumerate(matches):
|
||||
for i, (ent_id, start, end) in enumerate(matches):
|
||||
on_match = self._callbacks.get(ent_id)
|
||||
if on_match is not None:
|
||||
on_match(self, doc, i, matches)
|
||||
|
|
|
@ -7,7 +7,9 @@ from ..util import get_doc
|
|||
|
||||
import pytest
|
||||
|
||||
# TODO: These can probably be deleted
|
||||
|
||||
@pytest.mark.xfail
|
||||
@pytest.mark.parametrize('words,entity', [
|
||||
(["Test", "Entity"], "TestEntity")])
|
||||
def test_matcher_add_empty_entity(en_vocab, words, entity):
|
||||
|
@ -18,6 +20,7 @@ def test_matcher_add_empty_entity(en_vocab, words, entity):
|
|||
assert matcher(doc) == []
|
||||
|
||||
|
||||
@pytest.mark.xfail
|
||||
@pytest.mark.parametrize('entity1,entity2,attrs', [
|
||||
("TestEntity", "TestEntity2", {"Hello": "World"})])
|
||||
def test_matcher_get_entity_attrs(en_vocab, entity1, entity2, attrs):
|
||||
|
@ -29,6 +32,7 @@ def test_matcher_get_entity_attrs(en_vocab, entity1, entity2, attrs):
|
|||
assert matcher.get_entity(entity1) == {}
|
||||
|
||||
|
||||
@pytest.mark.xfail
|
||||
@pytest.mark.parametrize('words,entity,attrs',
|
||||
[(["Test", "Entity"], "TestEntity", {"Hello": "World"})])
|
||||
def test_matcher_get_entity_via_match(en_vocab, words, entity, attrs):
|
||||
|
|
|
@ -9,19 +9,22 @@ import pytest
|
|||
|
||||
@pytest.fixture
|
||||
def matcher(en_vocab):
|
||||
patterns = {
|
||||
'JS': ['PRODUCT', {}, [[{'ORTH': 'JavaScript'}]]],
|
||||
'GoogleNow': ['PRODUCT', {}, [[{'ORTH': 'Google'}, {'ORTH': 'Now'}]]],
|
||||
'Java': ['PRODUCT', {}, [[{'LOWER': 'java'}]]]
|
||||
rules = {
|
||||
'JS': [[{'ORTH': 'JavaScript'}]],
|
||||
'GoogleNow': [[{'ORTH': 'Google'}, {'ORTH': 'Now'}]],
|
||||
'Java': [[{'LOWER': 'java'}]]
|
||||
}
|
||||
return Matcher(en_vocab, patterns)
|
||||
matcher = Matcher(en_vocab)
|
||||
for key, patterns in rules.items():
|
||||
matcher.add(key, None, *patterns)
|
||||
return matcher
|
||||
|
||||
|
||||
@pytest.mark.parametrize('words', [["Some", "words"]])
|
||||
def test_matcher_init(en_vocab, words):
|
||||
matcher = Matcher(en_vocab)
|
||||
doc = get_doc(en_vocab, words)
|
||||
assert matcher.n_patterns == 0
|
||||
assert len(matcher) == 0
|
||||
assert matcher(doc) == []
|
||||
|
||||
|
||||
|
@ -32,39 +35,35 @@ def test_matcher_no_match(matcher):
|
|||
|
||||
|
||||
def test_matcher_compile(matcher):
|
||||
assert matcher.n_patterns == 3
|
||||
assert len(matcher) == 3
|
||||
|
||||
|
||||
def test_matcher_match_start(matcher):
|
||||
words = ["JavaScript", "is", "good"]
|
||||
doc = get_doc(matcher.vocab, words)
|
||||
assert matcher(doc) == [(matcher.vocab.strings['JS'],
|
||||
matcher.vocab.strings['PRODUCT'], 0, 1)]
|
||||
assert matcher(doc) == [(matcher.vocab.strings['JS'], 0, 1)]
|
||||
|
||||
|
||||
def test_matcher_match_end(matcher):
|
||||
words = ["I", "like", "java"]
|
||||
doc = get_doc(matcher.vocab, words)
|
||||
assert matcher(doc) == [(doc.vocab.strings['Java'],
|
||||
doc.vocab.strings['PRODUCT'], 2, 3)]
|
||||
assert matcher(doc) == [(doc.vocab.strings['Java'], 2, 3)]
|
||||
|
||||
|
||||
def test_matcher_match_middle(matcher):
|
||||
words = ["I", "like", "Google", "Now", "best"]
|
||||
doc = get_doc(matcher.vocab, words)
|
||||
assert matcher(doc) == [(doc.vocab.strings['GoogleNow'],
|
||||
doc.vocab.strings['PRODUCT'], 2, 4)]
|
||||
assert matcher(doc) == [(doc.vocab.strings['GoogleNow'], 2, 4)]
|
||||
|
||||
|
||||
def test_matcher_match_multi(matcher):
|
||||
words = ["I", "like", "Google", "Now", "and", "java", "best"]
|
||||
doc = get_doc(matcher.vocab, words)
|
||||
assert matcher(doc) == [(doc.vocab.strings['GoogleNow'],
|
||||
doc.vocab.strings['PRODUCT'], 2, 4),
|
||||
(doc.vocab.strings['Java'],
|
||||
doc.vocab.strings['PRODUCT'], 5, 6)]
|
||||
assert matcher(doc) == [(doc.vocab.strings['GoogleNow'], 2, 4),
|
||||
(doc.vocab.strings['Java'], 5, 6)]
|
||||
|
||||
|
||||
@pytest.mark.xfail
|
||||
def test_matcher_phrase_matcher(en_vocab):
|
||||
words = ["Google", "Now"]
|
||||
doc = get_doc(en_vocab, words)
|
||||
|
@ -74,6 +73,8 @@ def test_matcher_phrase_matcher(en_vocab):
|
|||
assert len(matcher(doc)) == 1
|
||||
|
||||
|
||||
# TODO; Not sure what's wrong here. Possible bug?
|
||||
@pytest.mark.xfail
|
||||
def test_matcher_match_zero(matcher):
|
||||
words1 = 'He said , " some words " ...'.split()
|
||||
words2 = 'He said , " some three words " ...'.split()
|
||||
|
@ -87,39 +88,40 @@ def test_matcher_match_zero(matcher):
|
|||
{'IS_PUNCT': True},
|
||||
{'ORTH': '"'}]
|
||||
|
||||
matcher.add('Quote', '', {}, [pattern1])
|
||||
matcher.add('Quote', pattern1)
|
||||
doc = get_doc(matcher.vocab, words1)
|
||||
assert len(matcher(doc)) == 1
|
||||
|
||||
doc = get_doc(matcher.vocab, words2)
|
||||
assert len(matcher(doc)) == 0
|
||||
matcher.add('Quote', '', {}, [pattern2])
|
||||
matcher.add('Quote', pattern2)
|
||||
assert len(matcher(doc)) == 0
|
||||
|
||||
|
||||
# TODO; Not sure what's wrong here. Possible bug?
|
||||
@pytest.mark.xfail
|
||||
def test_matcher_match_zero_plus(matcher):
|
||||
words = 'He said , " some words " ...'.split()
|
||||
pattern = [{'ORTH': '"'},
|
||||
{'OP': '*', 'IS_PUNCT': False},
|
||||
{'ORTH': '"'}]
|
||||
matcher.add('Quote', '', {}, [pattern])
|
||||
matcher.add('Quote', [pattern])
|
||||
doc = get_doc(matcher.vocab, words)
|
||||
assert len(matcher(doc)) == 1
|
||||
|
||||
# TODO; Not sure what's wrong here. Possible bug?
|
||||
@pytest.mark.xfail
|
||||
def test_matcher_match_one_plus(matcher):
|
||||
control = Matcher(matcher.vocab)
|
||||
control.add_pattern('BasicPhilippe',
|
||||
[{'ORTH': 'Philippe'}], label=321)
|
||||
control.add('BasicPhilippe', None, [{'ORTH': 'Philippe'}])
|
||||
|
||||
doc = get_doc(control.vocab, ['Philippe', 'Philippe'])
|
||||
|
||||
m = control(doc)
|
||||
assert len(m) == 2
|
||||
matcher.add_pattern('KleenePhilippe',
|
||||
matcher.add('KleenePhilippe',
|
||||
[
|
||||
{'ORTH': 'Philippe', 'OP': '1'},
|
||||
{'ORTH': 'Philippe', 'OP': '+'}], label=321)
|
||||
{'ORTH': 'Philippe', 'OP': '+'}])
|
||||
m = matcher(doc)
|
||||
assert len(m) == 1
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user