docstr: :param list[Sample] data_samples: list of Samples
  :return: dict obj to save metrics result
code: def evaluate(self, data_samples, prefix=""):
      r"""
      :param list[Sample] data_samples: list of Samples
      :return: dict obj to save metrics result
  
      """
      word_seq, target_tag_seq, seq_len = self.encode(data_samples)
      pred_tag_seq = self.model.predict_tags_from_words(
          word_seq, batch_size=self.batch_size
      )
      metric = self.metrics
      metric.evaluate(pred_tag_seq, target_tag_seq, seq_len)
      score = {}
      for key in metric.get_metric():
          score[prefix + self.metrics2score[key]] = metric.get_metric()[
              key
          ]
      return score
  
file_path: textflint/textflint/input/model/flint_model/flint_model_ner.py
imports: import json
  from ..metrics.nerspanmetric import NERSpanMetric
  from .flint_model import TASK_METRICS, FlintModel
  from ..test_model.bilstm_crf_torch import TaggerFactory
label_desc: Use image node_id 2 for calling the FlintModelNER obj's underlying member method code with example usage: obj.evaluate(data_samples, prefix) and returns: score