mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 09:57:26 +03:00 
			
		
		
		
	* adding enhancement #4074. * modified behavior to strictly require top level dictionary keys - issue #4074 * pass expected keys to error message and add links as expected top level key
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# coding: utf-8
 | 
						|
from __future__ import unicode_literals
 | 
						|
 | 
						|
import pytest
 | 
						|
from spacy.vocab import Vocab
 | 
						|
from spacy.language import Language
 | 
						|
from spacy.tokens import Doc
 | 
						|
from spacy.gold import GoldParse
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture
 | 
						|
def nlp():
 | 
						|
    nlp = Language(Vocab())
 | 
						|
    textcat = nlp.create_pipe("textcat")
 | 
						|
    for label in ("POSITIVE", "NEGATIVE"):
 | 
						|
        textcat.add_label(label)
 | 
						|
    nlp.add_pipe(textcat)
 | 
						|
    nlp.begin_training()
 | 
						|
    return nlp
 | 
						|
 | 
						|
 | 
						|
def test_language_update(nlp):
 | 
						|
    text = "hello world"
 | 
						|
    annots = {"cats": {"POSITIVE": 1.0, "NEGATIVE": 0.0}}
 | 
						|
    wrongkeyannots = {"LABEL": True}
 | 
						|
    doc = Doc(nlp.vocab, words=text.split(" "))
 | 
						|
    gold = GoldParse(doc, **annots)
 | 
						|
    # Update with doc and gold objects
 | 
						|
    nlp.update([doc], [gold])
 | 
						|
    # Update with text and dict
 | 
						|
    nlp.update([text], [annots])
 | 
						|
    # Update with doc object and dict
 | 
						|
    nlp.update([doc], [annots])
 | 
						|
    # Update with text and gold object
 | 
						|
    nlp.update([text], [gold])
 | 
						|
    # Update badly
 | 
						|
    with pytest.raises(IndexError):
 | 
						|
        nlp.update([doc], [])
 | 
						|
    with pytest.raises(IndexError):
 | 
						|
        nlp.update([], [gold])
 | 
						|
    with pytest.raises(ValueError):
 | 
						|
        nlp.update([text], [wrongkeyannots])
 | 
						|
 | 
						|
 | 
						|
def test_language_evaluate(nlp):
 | 
						|
    text = "hello world"
 | 
						|
    annots = {"cats": {"POSITIVE": 1.0, "NEGATIVE": 0.0}}
 | 
						|
    doc = Doc(nlp.vocab, words=text.split(" "))
 | 
						|
    gold = GoldParse(doc, **annots)
 | 
						|
    # Evaluate with doc and gold objects
 | 
						|
    nlp.evaluate([(doc, gold)])
 | 
						|
    # Evaluate with text and dict
 | 
						|
    nlp.evaluate([(text, annots)])
 | 
						|
    # Evaluate with doc object and dict
 | 
						|
    nlp.evaluate([(doc, annots)])
 | 
						|
    # Evaluate with text and gold object
 | 
						|
    nlp.evaluate([(text, gold)])
 | 
						|
    # Evaluate badly
 | 
						|
    with pytest.raises(Exception):
 | 
						|
        nlp.evaluate([text, gold])
 |