code: def test_knp_entity_extractor(
      nlp: Language, text: str, ents: Tuple[str]
  ):
      doc: Doc = nlp(text)
      for _ in range(2):  # loop 2 times to validate cache
          assert len(doc.ents) == len(ents)
          for s, expected_ent in zip(doc.ents, ents):
              assert s.text == expected_ent[0], (s, expected_ent)
              assert s.label_ == expected_ent[1]
  
file_path: camphr/packages/camphr_knp/tests/test_knp.py
imports: from camphr_knp import create_knp_nlp
  import itertools
  from typing import List, Tuple
  import pytest
  from spacy.language import Language
  from spacy.tokens import Doc
  from camphr_knp import BUNSETSU, KNP_USER_KEYS, TAG
  from .utils import check_knp
label_desc: Use image node_id 2 for calling a global function with example usage: test_knp_entity_extractor(nlp, text, ents) without return types