class_docstr: Basic copyright metric for evaluating surface-level similarity.
  
  This class supports `longest_common_prefix_length` and `edit_distance`.
  In contrast to model-based semantic similarity evaluation.
code: def __init__(
      self,
      name: str,
      normalize_by_prefix_length=False,
      normalize_newline_space_tab=False,
  ):
      if name not in metric_fns.keys():
          raise ValueError(
              f"Expected name to be either `longest_common_prefix_length` or `edit_distance`, but got {name}."
          )
  
      self.metric_name: MetricName = MetricName(name)
      self.metric_fn = metric_fns[name]
      self.normalize_by_prefix_length = normalize_by_prefix_length
      self.normalize_newline_space_tab = normalize_newline_space_tab
      self.tokenizer = TreebankWordTokenizer()
  
imports: import re
  from typing import List, Optional
  import numba
  import numpy
  from nltk.tokenize.treebank import TreebankWordTokenizer
  from helm.benchmark.adaptation.request_state import RequestState
  from helm.benchmark.adaptation.adapter_spec import AdapterSpec
  from helm.benchmark.scenarios.scenario import Reference
  from helm.common.request import RequestResult
  from .metric import Metric
  from .metric_name import MetricName
  from .metric_service import MetricService
  from .statistic import Stat
label_desc: Use image node_id 1 to create a new BasicCopyrightMetric object from inherited base classes: Metric with example: obj = BasicCopyrightMetric(name, normalize_by_prefix_length, normalize_newline_space_tab)