code: def _test_ok(self, gold, system, correct):
      metrics = evaluate(
          self._load_words(gold), self._load_words(system)
      )
      gold_words = sum(
          (max(1, len(word.split(" ")) - 1) for word in gold)
      )
      system_words = sum(
          (max(1, len(word.split(" ")) - 1) for word in system)
      )
      self.assertEqual(
          (
              metrics["Words"].precision,
              metrics["Words"].recall,
              metrics["Words"].f1,
          ),
          (
              correct / system_words,
              correct / gold_words,
              2 * correct / (gold_words + system_words),
          ),
      )
  
imports: from __future__ import division
  from __future__ import print_function
  import argparse
  import io
  import sys
  import unicodedata
  import unittest
label_desc: Use image node_id 3 for calling the TestAlignment obj's underlying member method code with example usage: obj._test_ok(gold, system, correct) without return types