code: def test_attention(self):
      model_save_path = "attention_model.pth"
      model = MatchingModel(attr_summarizer="attention")
      model.run_train(
          self.train,
          self.valid,
          epochs=1,
          batch_size=8,
          best_save_path=model_save_path,
          pos_neg_ratio=3,
      )
  
      unlabeled = process_unlabeled(
          path=os.path.join(
              test_dir_path, "test_datasets", "test_unlabeled.csv"
          ),
          trained_model=model,
          ignore_columns=("left_id", "right_id"),
      )
  
      pred_test = model.run_eval(self.test, return_predictions=True)
      pred_unlabeled = model.run_prediction(unlabeled)
  
      self.assertEqual(
          sorted([tup[1] for tup in pred_test]),
          sorted(list(pred_unlabeled["match_score"])),
      )
  
      if os.path.exists(model_save_path):
          os.remove(model_save_path)
  
imports: from nose.tools import *
  import io
  import os
  import shutil
  import pandas
  import torch
  import unittest
  from deepmatcher import attr_summarizers
  from deepmatcher.data.field import MatchingField, FastText
  from deepmatcher.data.process import process, process_unlabeled
  from deepmatcher import MatchingModel
  from urllib.parse import urljoin
  from urllib.request import pathname2url
  from test import test_dir_path
label_desc: Use image node_id 5 for calling the ModelPredictUnlabeledTest obj's underlying member method code with example usage: obj.test_attention() without return types