File size: 1,864 Bytes
19b8775 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
"""
Test the parser eval interface
"""
import pytest
import stanza
from stanza.models.constituency import tree_reader
from stanza.protobuf import EvaluateParserRequest, EvaluateParserResponse
from stanza.server.parser_eval import build_request, collate, EvaluateParser, ParseResult
from stanza.tests.server.test_java_protobuf_requests import check_tree
from stanza.tests import *
pytestmark = [pytest.mark.travis, pytest.mark.client]
def build_one_tree_treebank(fake_scores=True):
text = "((S (VP (VB Unban)) (NP (NNP Mox) (NNP Opal))))"
trees = tree_reader.read_trees(text)
assert len(trees) == 1
gold = trees[0]
if fake_scores:
prediction = (gold, 1.0)
treebank = [ParseResult(gold, [prediction], None, None)]
return treebank
else:
prediction = gold
return collate([gold], [prediction])
def check_build(fake_scores=True):
treebank = build_one_tree_treebank(fake_scores)
request = build_request(treebank)
assert len(request.treebank) == 1
check_tree(request.treebank[0].gold, treebank[0][0], None)
assert len(request.treebank[0].predicted) == 1
if fake_scores:
check_tree(request.treebank[0].predicted[0], treebank[0][1][0][0], treebank[0][1][0][1])
else:
check_tree(request.treebank[0].predicted[0], treebank[0][1][0], None)
def test_build_tuple_request():
check_build(True)
def test_build_notuple_request():
check_build(False)
def test_score_one_tree_tuples():
treebank = build_one_tree_treebank(True)
with EvaluateParser() as ep:
response = ep.process(treebank)
assert response.f1 == pytest.approx(1.0)
def test_score_one_tree_notuples():
treebank = build_one_tree_treebank(False)
with EvaluateParser() as ep:
response = ep.process(treebank)
assert response.f1 == pytest.approx(1.0)
|