Files
Castor/common/evaluation.py
Michael Tu d7a631b0a9 MP-CNN with Bugs Fixed and PyTorch v0.4 (#107)
* Refactor datasets

* Update evaluators

* Update trainers

* Update main and MP-CNN model

* Add serialization util

* Fix bugs

* Refactoring for NCE to use new parent class
2018-05-24 23:42:13 -04:00

43 lines
1.5 KiB
Python

from .evaluators.sick_evaluator import SICKEvaluator
from .evaluators.msrvid_evaluator import MSRVIDEvaluator
from .evaluators.trecqa_evaluator import TRECQAEvaluator
from .evaluators.wikiqa_evaluator import WikiQAEvaluator
from nce.nce_pairwise_mp.evaluators.trecqa_evaluator import TRECQAEvaluatorNCE
from nce.nce_pairwise_mp.evaluators.wikiqa_evaluator import WikiQAEvaluatorNCE
class EvaluatorFactory(object):
"""
Get the corresponding Evaluator class for a particular dataset.
"""
evaluator_map = {
'sick': SICKEvaluator,
'msrvid': MSRVIDEvaluator,
'trecqa': TRECQAEvaluator,
'wikiqa': WikiQAEvaluator
}
evaluator_map_nce = {
'trecqa': TRECQAEvaluatorNCE,
'wikiqa': WikiQAEvaluatorNCE
}
@staticmethod
def get_evaluator(dataset_cls, model, embedding, data_loader, batch_size, device, nce=False):
if data_loader is None:
return None
if nce:
evaluator_map = EvaluatorFactory.evaluator_map_nce
else:
evaluator_map = EvaluatorFactory.evaluator_map
if not hasattr(dataset_cls, 'NAME'):
raise ValueError('Invalid dataset. Dataset should have NAME attribute.')
if dataset_cls.NAME not in evaluator_map:
raise ValueError('{} is not implemented.'.format(dataset_cls))
return evaluator_map[dataset_cls.NAME](
dataset_cls, model, embedding, data_loader, batch_size, device
)