code: def read_conll(path):
      """Yields CoNLL sentences read from CoNLL formatted file.."""
      with open(path, "r") as conll_fp:
          root = ConllEntry(
              0,
              "*root*",
              "*root*",
              "ROOT-POS",
              "ROOT-CPOS",
              "_",
              -1,
              "rroot",
              "_",
              "_",
          )
          tokens = [root]
          for line in conll_fp:
              stripped_line = line.strip()
              tok = stripped_line.split("\t")
              if not tok or line.strip() == "":
                  if len(tokens) > 1:
                      yield tokens
                  tokens = [root]
              else:
                  if line[0] == "#" or "-" in tok[0] or "." in tok[0]:
                      # noinspection PyTypeChecker
                      tokens.append(stripped_line)
                  else:
                      tokens.append(
                          ConllEntry(
                              int(tok[0]),
                              tok[1],
                              tok[2],
                              tok[4],
                              tok[3],
                              tok[5],
                              int(tok[6]) if tok[6] != "_" else -1,
                              tok[7],
                              tok[8],
                              tok[9],
                          )
                      )
          if len(tokens) > 1:
              yield tokens
  
file_path: nlp-architect/nlp_architect/models/bist/utils.py
imports: import os
  import subprocess
  from collections import Counter
  from nlp_architect.data.conll import ConllEntry
  from nlp_architect.models.bist.eval.conllu.conll17_ud_eval import run_conllu_eval
label_desc: Use image node_id 2 for calling a global function with example usage: read_conll(path) without return types