code: def fieldDistance(self, record_pairs: RecordPairs) -> None:
      record_ids, records = zip(
          *(zip(*record_pair) for record_pair in record_pairs)
      )
      if not records:
          return
  
      features = self.featurizer(records)
      scores = self.classifier.predict_proba(features)[:, -1]
  
      mask = scores > 0
      if not mask.any():
          return
      scores = scores[mask]
      record_id_array = numpy.array(record_ids)[mask]
  
      with self.offset.get_lock():
          fp: Scores
          fp = numpy.memmap(
              self.score_file_path,
              dtype=self.dtype,
              offset=self.offset.value,
              shape=(len(record_id_array),),
          )
          fp["pairs"] = record_id_array
          fp["score"] = scores
          fp.flush()
  
          self.offset.value += (
              len(record_id_array) * self.dtype.itemsize
          )
  
imports: from __future__ import annotations
  import collections
  import functools
  import itertools
  import multiprocessing
  import multiprocessing.dummy
  import os
  import queue
  import tempfile
  from typing import TYPE_CHECKING, overload
  import numpy
  from dedupe.backport import RLock
label_desc: Use image node_id 3 for calling the ScoreDupes obj's underlying member method code with example usage: obj.fieldDistance(record_pairs) without return types