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:
parent
9b55e5bfcb
commit
fb7acacd42
|
@ -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 wasn’t "
|
||||||
|
"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']
|
|
@ -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;
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib
|
{ lib
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
|
, callPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, pythonOlder
|
, pythonOlder
|
||||||
, pytest
|
, pytest
|
||||||
|
@ -64,6 +65,8 @@ buildPythonPackage rec {
|
||||||
|
|
||||||
pythonImportsCheck = [ "spacy" ];
|
pythonImportsCheck = [ "spacy" ];
|
||||||
|
|
||||||
|
passthru.tests = callPackage ./annotation-test {};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Industrial-strength Natural Language Processing (NLP) with Python and Cython";
|
description = "Industrial-strength Natural Language Processing (NLP) with Python and Cython";
|
||||||
homepage = "https://github.com/explosion/spaCy";
|
homepage = "https://github.com/explosion/spaCy";
|
||||||
|
|
Loading…
Reference in a new issue