In [20]:
import os

from pocores import Pocores, print_coreference_report
from discoursegraphs.readwrite.mmax2 import spanstring2text, spanstring2tokens
from discoursegraphs.readwrite import ConllDocumentGraph, MMAXDocumentGraph
from discoursegraphs import create_token_mapping, get_pointing_chains

In [3]:
CONLL_DIR = os.path.expanduser('~/repos/pocores/src/pocores/test/maz176')
MMAX_DIR = os.path.expanduser('~/repos/pcc-annis-merged/maz176/coreference')

In [8]:
conll_paths = !ls $CONLL_DIR/*.conll2009
document_ids = [os.path.basename(path).split('.')[0] for path in conll_paths]

In [42]:
def print_false_negatives(docgraph):
    pocores_chains = get_pointing_chains(docgraph, layer='pocores')
    mmax_chains = get_pointing_chains(docgraph, layer='mmax')

    for chain in mmax_chains:
        for node_id in chain:
            try:
                span_str = docgraph.node[node_id]['mmax:span']
            except KeyError:
                print "KeyError: {0} doesn't have an 'mmax:span' attribute:\n\t{1}".format(node_id, docgraph.node[node_id]) 

            markable_was_found = any([token_id in chain
                                   for token_id in spanstring2tokens(span_str)
                                   for chain in pocores_chains])

            try:
                # at least one word in this markable was found by pocores
                markable_str = spanstring2text(docgraph, span_str)
            except KeyError:
                print "KeyError: {} doesn't represent a token span".format(span_str)
    #         print markable_str, markable_was_found
            if not markable_was_found:
                markable_was_considered = any(mmax2pocores[mmax_token_id] in p.candidate_report
                                              for mmax_token_id in spanstring2tokens(span_str))
                if not markable_was_considered:
                    pass
#                     print (u"No word from the markable '{}' ({} - {}) "
#                            u"was even considered as an anaphora".format(markable_str, node_id, span_str))
                else:
                    for mmax_token_id in spanstring2tokens(span_str):
                        if mmax2pocores[mmax_token_id] in p.candidate_report:
                            report = p.candidate_report[mmax2pocores[mmax_token_id]]
                            if report['anaphora_type'] == 'pronominal':
                                print "Candidate was falsely rejected."
                                print p.candidate_report[mmax2pocores[mmax_token_id]]

In [43]:
for doc_id in document_ids:
    print doc_id
    mmax_path = os.path.join(MMAX_DIR, doc_id+'.mmax')
    conll_path = os.path.join(CONLL_DIR, doc_id+'.conll2009')
    
    cdg = ConllDocumentGraph(conll_path)
    p = Pocores(cdg)
    p.resolve_anaphora()
    p.add_coreference_chains_to_docgraph()
    
    mdg = MMAXDocumentGraph(mmax_path)
    mmax2pocores = create_token_mapping(mdg, p.document)
    mdg.merge_graphs(p.document)
    print_false_negatives(mdg)
    print


maz-00001

maz-00002

maz-10110

maz-10175

maz-10205

maz-10207

maz-10374

maz-10423

maz-10503

maz-10575
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t3', 's2_t2', 's3_t2', 's3_t4', 's3_t8', 's3_t10'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t3', 's2_t2', 's3_t2', 's3_t4', 's3_t8', 's3_t10'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', (['s3_t4', 's3_t10'], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t3', 's2_t2', 's3_t2', 's3_t4', 's3_t8', 's3_t10']})

maz-10652
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s2_t2', 's3_t3'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s2_t2', 's3_t3'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s2_t2', 's3_t3']})
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s2_t2', 's3_t3'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s2_t2', 's3_t3'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s2_t2', 's3_t3']})

maz-10902

maz-11177

maz-11279

maz-11280

maz-11299

maz-11318

maz-11507

maz-11544

maz-11670

maz-11735

maz-11766

maz-11916
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's2_t20', 's2_t25', 's3_t1'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's2_t20', 's2_t25', 's3_t1'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's2_t20', 's2_t25', 's3_t1']})

maz-12084
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s9_t2', 's9_t4', 's9_t5', 's9_t8', 's10_t4', 's10_t7', 's11_t3', 's11_t7', 's11_t10', 's12_t4'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s9_t2', 's9_t4', 's9_t5', 's9_t8', 's10_t4', 's10_t7', 's11_t3', 's11_t7', 's11_t10', 's12_t4'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t2', 's2_t1', 's3_t2', 's3_t6', 's3_t9', 's4_t4', 's5_t3', 's5_t5', 's5_t7', 's5_t9', 's5_t12', 's5_t14', 's5_t17', 's5_t20', 's5_t24', 's5_t29', 's5_t33', 's6_t1', 's6_t8', 's6_t9', 's6_t11', 's6_t13', 's6_t15', 's6_t18', 's7_t3', 's7_t4', 's7_t5', 's7_t11', 's7_t13', 's7_t15', 's7_t16', 's9_t2', 's9_t4', 's9_t5', 's9_t8', 's10_t4', 's10_t7', 's11_t3', 's11_t7', 's11_t10', 's12_t4']})
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t2'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t2'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t2']})

maz-12188

maz-12383

maz-12473

maz-12510

maz-12576

maz-12666
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's1_t4', 's2_t2', 's2_t4', 's2_t5', 's2_t8', 's2_t11', 's2_t13', 's2_t16', 's3_t3', 's3_t4', 's3_t6', 's3_t8', 's4_t3', 's4_t4', 's4_t8', 's4_t10', 's4_t12', 's4_t15', 's4_t19'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's1_t4', 's2_t2', 's2_t4', 's2_t5', 's2_t8', 's2_t11', 's2_t13', 's2_t16', 's3_t3', 's3_t4', 's3_t6', 's3_t8', 's4_t3', 's4_t4', 's4_t8', 's4_t10', 's4_t12', 's4_t15', 's4_t19'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's1_t4', 's2_t2', 's2_t4', 's2_t5', 's2_t8', 's2_t11', 's2_t13', 's2_t16', 's3_t3', 's3_t4', 's3_t6', 's3_t8', 's4_t3', 's4_t4', 's4_t8', 's4_t10', 's4_t12', 's4_t15', 's4_t19']})

maz-12976

maz-13015

maz-13125

maz-13153

maz-13311

maz-13507
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's2_t2'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's2_t2'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's2_t2']})

maz-13758

maz-13915
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's2_t2', 's2_t3', 's2_t6', 's2_t10', 's2_t12', 's3_t3', 's3_t5', 's3_t7', 's3_t11', 's3_t12', 's4_t4', 's4_t10', 's5_t3'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's2_t2', 's2_t3', 's2_t6', 's2_t10', 's2_t12', 's3_t3', 's3_t5', 's3_t11', 's3_t12', 's4_t4', 's4_t10', 's5_t3'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's2_t2', 's2_t3', 's2_t6', 's2_t10', 's2_t12', 's3_t3', 's3_t5', 's3_t7', 's3_t11', 's3_t12', 's4_t4', 's4_t10', 's5_t3']})

maz-13946
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's2_t3', 's2_t5', 's2_t10', 's2_t15', 's2_t17', 's2_t18', 's2_t21', 's2_t26', 's2_t29', 's2_t30', 's2_t32', 's2_t34', 's2_t36', 's2_t37', 's2_t39', 's3_t3', 's3_t5', 's3_t8', 's3_t14'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's2_t3', 's2_t10', 's2_t15', 's2_t17', 's2_t18', 's2_t21', 's2_t26', 's2_t29', 's2_t30', 's2_t32', 's2_t34', 's2_t36', 's2_t37', 's2_t39', 's3_t3', 's3_t5', 's3_t8', 's3_t14'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's2_t3', 's2_t5', 's2_t10', 's2_t15', 's2_t17', 's2_t18', 's2_t21', 's2_t26', 's2_t29', 's2_t30', 's2_t32', 's2_t34', 's2_t36', 's2_t37', 's2_t39', 's3_t3', 's3_t5', 's3_t8', 's3_t14']})
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's2_t3', 's2_t5'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's2_t3'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', (['s2_t3'], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's2_t3', 's2_t5']})

maz-14047

maz-14055

maz-14071

maz-14072

maz-14172
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t3', 's2_t2', 's2_t5', 's2_t9', 's2_t11', 's2_t15', 's2_t17', 's3_t5', 's3_t6'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t3', 's2_t2', 's2_t5', 's2_t9', 's2_t11', 's2_t15', 's2_t17', 's3_t5', 's3_t6'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t3', 's2_t2', 's2_t5', 's2_t9', 's2_t11', 's2_t15', 's2_t17', 's3_t5', 's3_t6']})
KeyError: markable_1000196 doesn't have an 'mmax:span' attribute:
	{'layers': set(['mmax', 'mmax:markable', 'mmax:primmark'])}

maz-1423

maz-14384
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's1_t4', 's2_t3', 's2_t5'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's1_t4', 's2_t3', 's2_t5'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', (['s2_t3'], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's1_t4', 's2_t3', 's2_t5']})

maz-14399

maz-14422

maz-1453

maz-14590

maz-14654

maz-14792

maz-14813

maz-14841

maz-14853

maz-14881

maz-15155

maz-15209

maz-15347

maz-15545

maz-15609
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t1', 's2_t3'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t1', 's2_t3'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t1', 's2_t3']})

maz-15702
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s2_t3', 's2_t6', 's2_t8', 's2_t9'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s2_t3', 's2_t6', 's2_t8', 's2_t9'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s2_t3', 's2_t6', 's2_t8', 's2_t9']})

maz-15734

maz-15970

maz-16153
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s4_t2', 's4_t5', 's4_t8', 's4_t12', 's5_t5', 's6_t5', 's6_t9', 's6_t12', 's6_t15', 's7_t4', 's7_t6', 's8_t2', 's8_t10', 's8_t14'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s4_t2', 's4_t5', 's4_t8', 's4_t12', 's5_t5', 's6_t5', 's6_t9', 's6_t12', 's6_t15', 's7_t4', 's7_t6', 's8_t2', 's8_t10', 's8_t14'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', (['s8_t10'], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s2_t2', 's2_t6', 's2_t9', 's2_t11', 's2_t16', 's2_t18', 's3_t1', 's3_t4', 's3_t6', 's3_t7', 's3_t9', 's3_t12', 's3_t13', 's4_t2', 's4_t5', 's4_t8', 's4_t12', 's5_t5', 's6_t5', 's6_t9', 's6_t12', 's6_t15', 's7_t4', 's7_t6', 's8_t2', 's8_t10', 's8_t14']})

maz-16177

maz-16250

maz-16294
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s2_t2', 's2_t4', 's2_t5', 's2_t11', 's2_t15', 's3_t3'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s2_t2', 's2_t4', 's2_t5', 's2_t11', 's2_t15'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s2_t2', 's2_t4', 's2_t5', 's2_t11', 's2_t15', 's3_t3']})
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s2_t2', 's2_t4', 's2_t5', 's2_t11', 's2_t15', 's3_t3'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s2_t2', 's2_t4', 's2_t5', 's2_t11', 's2_t15'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s2_t2', 's2_t4', 's2_t5', 's2_t11', 's2_t15', 's3_t3']})

maz-16353

maz-16360

maz-16590

maz-1679

maz-16987

maz-17062

maz-17091

maz-17242

maz-17254

maz-17300

maz-17539

maz-1757
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t2', 's2_t4'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t2', 's2_t4'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', (['s2_t4'], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t2', 's2_t4']})

maz-17664
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s1_t2', 's2_t4', 's3_t2', 's3_t7', 's3_t13', 's3_t17', 's3_t20', 's3_t23', 's3_t25', 's3_t29', 's4_t5', 's4_t7', 's5_t6'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s1_t2', 's2_t4', 's3_t2', 's3_t7', 's3_t13', 's3_t17', 's3_t20', 's3_t23', 's3_t25', 's3_t29', 's4_t5', 's4_t7', 's5_t6'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s1_t2', 's2_t4', 's3_t2', 's3_t7', 's3_t13', 's3_t17', 's3_t20', 's3_t23', 's3_t25', 's3_t29', 's4_t5', 's4_t7', 's5_t6']})

maz-17673

maz-17698

maz-17706
Candidate was falsely rejected.
defaultdict(<type 'str'>, {'anaphora_type': 'pronominal', 'filtered_candidates': [], 'filter_results': OrderedDict([('distance', (['s15_t6', 's15_t8', 's16_t3', 's16_t4', 's16_t8', 's16_t10', 's17_t2', 's17_t4', 's17_t8', 's17_t11', 's17_t14', 's18_t3', 's18_t10', 's18_t13', 's19_t2', 's19_t5', 's19_t9'], 'Candidates mentioned no more than 4 sentences ago')), ('non_reflexive', (['s15_t6', 's15_t8', 's16_t4', 's16_t8', 's16_t10', 's17_t2', 's17_t4', 's17_t8', 's17_t11', 's17_t14', 's18_t3', 's18_t10', 's18_t13', 's19_t2', 's19_t5'], ", which also don't represent reflexive personal pronouns, e.g. sich, einander, dich, mir")), ('agreement', ([], ', which are in morphological agreement with the anaphora')), ('binding', ([], 'and which can be bound by the anaphora'))]), 'candidates': ['s2_t2', 's2_t3', 's2_t5', 's2_t8', 's3_t3', 's3_t9', 's3_t12', 's4_t2', 's4_t4', 's5_t5', 's5_t7', 's5_t10', 's5_t11', 's6_t1', 's6_t4', 's7_t1', 's7_t5', 's7_t7', 's7_t11', 's7_t13', 's8_t4', 's8_t5', 's9_t2', 's9_t4', 's9_t7', 's10_t3', 's10_t4', 's10_t8', 's10_t9', 's11_t3', 's11_t7', 's11_t12', 's11_t13', 's11_t15', 's11_t17', 's12_t1', 's12_t5', 's14_t2', 's14_t4', 's14_t6', 's14_t9', 's14_t10', 's15_t6', 's15_t8', 's16_t3', 's16_t4', 's16_t8', 's16_t10', 's17_t2', 's17_t4', 's17_t8', 's17_t11', 's17_t14', 's18_t3', 's18_t10', 's18_t13', 's19_t2', 's19_t5', 's19_t9']})

maz-17953
KeyError: word_191..word_194 doesn't represent a token span
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-43-b6bb9be64742> in <module>()
     12     mmax2pocores = create_token_mapping(mdg, p.document)
     13     mdg.merge_graphs(p.document)
---> 14     print_false_negatives(mdg)
     15     print

<ipython-input-42-9f30a4b91729> in print_false_negatives(docgraph)
     29                 else:
     30                     for mmax_token_id in spanstring2tokens(span_str):
---> 31                         if mmax2pocores[mmax_token_id] in p.candidate_report:
     32                             report = p.candidate_report[mmax2pocores[mmax_token_id]]
     33                             if report['anaphora_type'] == 'pronominal':

KeyError: 'word_193'

In [ ]: