mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 09:57:26 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# coding: utf8
 | 
						|
from __future__ import unicode_literals
 | 
						|
 | 
						|
import pytest
 | 
						|
from spacy.matcher import Matcher
 | 
						|
from spacy.tokens import Token, Doc
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.xfail
 | 
						|
def test_issue1971(en_vocab):
 | 
						|
    # Possibly related to #2675 and #2671?
 | 
						|
    matcher = Matcher(en_vocab)
 | 
						|
    pattern = [
 | 
						|
        {"ORTH": "Doe"},
 | 
						|
        {"ORTH": "!", "OP": "?"},
 | 
						|
        {"_": {"optional": True}, "OP": "?"},
 | 
						|
        {"ORTH": "!", "OP": "?"},
 | 
						|
    ]
 | 
						|
    Token.set_extension("optional", default=False)
 | 
						|
    matcher.add("TEST", None, pattern)
 | 
						|
    doc = Doc(en_vocab, words=["Hello", "John", "Doe", "!"])
 | 
						|
    # We could also assert length 1 here, but this is more conclusive, because
 | 
						|
    # the real problem here is that it returns a duplicate match for a match_id
 | 
						|
    # that's not actually in the vocab!
 | 
						|
    assert all(match_id in en_vocab.strings for match_id, start, end in matcher(doc))
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.xfail
 | 
						|
def test_issue_1971_2(en_vocab):
 | 
						|
    matcher = Matcher(en_vocab)
 | 
						|
    pattern1 = [{"LOWER": {"IN": ["eur"]}}, {"LIKE_NUM": True}]
 | 
						|
    pattern2 = list(reversed(pattern1))
 | 
						|
    doc = Doc(en_vocab, words=["EUR", "10", "is", "10", "EUR"])
 | 
						|
    matcher.add("TEST", None, pattern1, pattern2)
 | 
						|
    matches = matcher(doc)
 | 
						|
    assert len(matches) == 2
 |