docstr: Add tag to lexicon from csv file
  
  Parameters
  ----------
  name : str
      Tag name.
  path : str
      Path to csv file
  overwrite : bool
      If True, replaces tag with the same name if it already exists
  append : bool
      If True, adds values to current lexicon with name
  remove_duplicates: bool
      If append=True and remove_duplicates=True, remove duplicate values
      from lexicon after appending
docstr_tok: ["Add","tag","to","lexicon","from","csv","file","Parameters","--","--","--","--","--","name",":","str","Tag","name",".","path",":","str","Path","to","csv","file","overwrite",":","bool","If","True",",","replaces","tag","with","the","same","name","if","it","already","exists","append",":","bool","If","True",",","adds","values","to","current","lexicon","with","name","remove_duplicates",":","bool","If","append=True","and","remove_duplicates=True",",","remove","duplicate","values","from","lexicon","after","appending"]
code: def add_lexicon_from_csv(
      self,
      name,
      path,
      overwrite=False,
      append=False,
      remove_duplicates=False,
  ):
      """Add tag to lexicon from csv file
  
      Parameters
      ----------
      name : str
          Tag name.
      path : str
          Path to csv file
      overwrite : bool
          If True, replaces tag with the same name if it already exists
      append : bool
          If True, adds values to current lexicon with name
      remove_duplicates: bool
          If append=True and remove_duplicates=True, remove duplicate values
          from lexicon after appending
      """
      values = []
      col_names = []
      with open(path, newline="") as f:
          reader = csv.reader(f)
          for i, row in enumerate(reader):
              if i == 0:
                  for col_name in row:
                      col_names.append(col_name)
              else:
                  d = {}
                  if len(row) != len(col_names):
                      raise Exception(
                          f"Length of row {i} does not match header length ({len(row)} != {len(col_names)})"
                      )
                  for j, val in enumerate(row):
                      d[col_names[j]] = val
                  values.append(MunchWithAdd(d))
      self.add_lexicon(
          name,
          values,
          overwrite=overwrite,
          append=append,
          remove_duplicates=remove_duplicates,
      )
  
imports: import collections
  import itertools
  import string
  import numpy
  import re
  import copy
  import os
  import json
  import munch
  import pickle
  import csv
  from .viewer.template_editor import TemplateEditor
  from .multilingual import multilingual_params, get_language_code
label_desc: Use image node_id 15 for calling the Editor obj's underlying member method code with example usage: obj.add_lexicon_from_csv(name, path, overwrite, append, remove_duplicates) without return types