class_docstr: Scenario for the entity matching task.
  
  This scenario supports all datasets from the benchmark entity matching datasets from
  https://github.com/anhaidgroup/deepmatcher/blob/master/Datasets.md. We anticipate only
  running one from each category of Structured, Textual, and Dirty.
  
  Entity matching (EM) is a core preprocessing step in structured data ETL pipelines. The task
  is as follows. Given two structured relations A and B, determine which rows from each relation
  refer to the same underlying entity and which ones do not. Typically the task is separated
  into two steps. The first performs blocking (or candidate generation) where a small set of
  possible matches from B are generated for each row in A. The second does matching where
  for each row in A and candidate pair, generate a T/F label if the pair refers to the same entity.
  To make benchmarking performance easier, standard EM benchmarks come pre-blocked. Therefore,
  the goal is to simply determine which pairs are matches or not.
  
  A negative and positive example are below. Note that there are no newlines for a single row. We
  only add new lines between each row.
  
  Input
  
      Row A: title: adobe creative suite cs3 design premium upsell [ mac ] | manufacturer: adobe price: 1599.0
      Row B: title: 19600061dm adobe creative suite 3 production premium media tlp download mac world
      | manufacturer: nan price: 20.97
  
  Reference [CORRECT]: No
  
  Input
  
      Row A: title: adobe creative suite cs3 web premium upgrade [ mac ] | manufacturer: adobe price: 499.0
      Row B: title: adobe cs3 web premium upgrade | manufacturer: nan price: 517.99
  
  Reference [CORRECT]: Yes
  
  The above example highlights the model will need to reason over semantic dissimilarities (e.g.,
  premium upsell being in [A] but not [B] in the first example) as well as notions of price
  similarity (e.g., 499 is closer to 518 compared to 1599 versus 21.)
code: def __init__(self, dataset: str):
      super().__init__()
      self.em_datasets_paths = {
          "Beer": "Structured/Beer",
          "iTunes_Amazon": "Structured/iTunes-Amazon",
          "Fodors_Zagats": "Structured/Fodors-Zagats",
          "DBLP_ACM": "Structured/DBLP-ACM",
          "DBLP_GoogleScholar": "Structured/DBLP-GoogleScholar",
          "Amazon_Google": "Structured/Amazon-Google",
          "Walmart_Amazon": "Structured/Walmart-Amazon",
          "Abt_Buy": "Textual/Abt-Buy",
          "Company": "Textual/Company",
          "Dirty_iTunes_Amazon": "Dirty/iTunes-Amazon",
          "Dirty_DBLP_ACM": "Dirty/DBLP-ACM",
          "Dirty_DBLP_GoogleScholar": "Dirty/DBLP-GoogleScholar",
          "Dirty_Walmart_Amazon": "Dirty/Walmart-Amazon",
      }
      assert dataset in self.em_datasets_paths
      self.dataset = dataset
  
file_path: H2O/h2o_hf/helm/src/helm/benchmark/scenarios/entity_matching_scenario.py
imports: import pandas
  from pathlib import Path
  from typing import Dict, List, Tuple
  from helm.common.hierarchical_logger import hlog
  from helm.common.general import ensure_file_downloaded
  from .scenario import Scenario, Instance, Reference, TRAIN_SPLIT, VALID_SPLIT, TEST_SPLIT, CORRECT_TAG, Input, Output
  from .entity_matching_scenario_fixed_random_state import set_fixed_random_state_for_dataset
label_desc: Use image node_id 1 to create a new EntityMatchingScenario object from inherited base classes: Scenario with example: obj = EntityMatchingScenario(dataset)