python3Packages.spacy: add passthru test

I have been using the main example of the spaCy web page for testing
updates of spacy (and its transitive dependencies). Let's convert this
into a proper test to take out manual testing.
This commit is contained in:
Daniël de Kok 2020-08-18 19:38:43 +02:00 committed by Jon
parent 9b55e5bfcb
commit fb7acacd42
3 changed files with 95 additions and 0 deletions

View file

@ -0,0 +1,69 @@
import pytest
import spacy
en_text = (
"When Sebastian Thrun started working on self-driving cars at "
"Google in 2007, few people outside of the company took him "
"seriously. “I can tell you very senior CEOs of major American "
"car companies would shake my hand and turn away because I wasnt "
"worth talking to,” said Thrun, in an interview with Recode earlier "
"this week.")
@pytest.fixture
def en_core_web_sm():
return spacy.load("en_core_web_sm")
@pytest.fixture
def doc_en_core_web_sm(en_core_web_sm):
return en_core_web_sm(en_text)
def test_entities(doc_en_core_web_sm):
entities = list(map(lambda e: (e.text, e.label_),
doc_en_core_web_sm.ents))
assert entities == [
('Sebastian Thrun', 'PERSON'),
('Google', 'ORG'), ('2007', 'DATE'),
('American', 'NORP'),
('Thrun', 'ORG'),
('earlier this week', 'DATE')
]
def test_nouns(doc_en_core_web_sm):
assert [
chunk.text for chunk in doc_en_core_web_sm.noun_chunks] == [
'Sebastian Thrun',
'self-driving cars',
'Google',
'few people',
'the company',
'him',
'I',
'you',
'very senior CEOs',
'major American car companies',
'my hand',
'I',
'Thrun',
'an interview',
'Recode']
def test_verbs(doc_en_core_web_sm):
assert [
token.lemma_ for token in doc_en_core_web_sm if token.pos_ == "VERB"] == [
'start',
'work',
'drive',
'take',
'can',
'tell',
'would',
'shake',
'turn',
'talk',
'say']

View file

@ -0,0 +1,23 @@
{ stdenv, pytest, spacy_models }:
stdenv.mkDerivation {
name = "spacy-annotation-test";
src = ./.;
dontConfigure = true;
dontBuild = true;
doCheck = true;
checkInputs = [ pytest spacy_models.en_core_web_sm ];
checkPhase = ''
pytest annotate.py
'';
installPhase = ''
touch $out
'';
meta.timeout = 60;
}

View file

@ -1,5 +1,6 @@
{ lib
, buildPythonPackage
, callPackage
, fetchPypi
, pythonOlder
, pytest
@ -64,6 +65,8 @@ buildPythonPackage rec {
pythonImportsCheck = [ "spacy" ];
passthru.tests = callPackage ./annotation-test {};
meta = with lib; {
description = "Industrial-strength Natural Language Processing (NLP) with Python and Cython";
homepage = "https://github.com/explosion/spaCy";