次のコード (SpaCy v2 からの移行) を使用して、特定のモデルの適合率、再現率、および f1 スコアを計算します。
nlp = spacy.load("my_model")
scorer = Scorer(nlp)
examples = []
for text, annotations in TEST_DATA:
examples.append(Example.from_dict(nlp.make_doc(text), annotations))
results = scorer.score(examples)
print(
"Precision {:0.4f}\tRecall {:0.4f}\tF-score {:0.4f}".format(results['ents_p'], results['ents_r'], results['ents_f'])
)
私が理解しようとしている奇妙なことは、なぜそれが常に返されるのかということです
Precision 0.0000 Recall 0.0000 F-score 0.0000
私の TEST_DATA セットは、同じモデルのトレーニングに使用していた TRAIN_DATA セットと同じ形式です。これがどのように見えるかです:
[
(
'Line 106 – for dilution times, the units should be specified', {'entities': [(51, 60, 'ACTION'), (41, 47, 'MODAL'), (11, 40, 'CONTENT'), (0, 8, 'LOCATION')]}
),
(
'It should be indicated what test was applied to verify the normality of distribution.', {'entities': [(13, 22, 'ACTION'), (28, 85, 'CONTENT'), (3, 9, 'MODAL')]}
)
]