code: def chuan_hoa_dau_tu_tieng_viet(word):
      if not is_valid_vietnam_word(word):
          return word
  
      chars = list(word)
      dau_cau = 0
      nguyen_am_index = []
      qu_or_gi = False
      for index, char in enumerate(chars):
          x, y = nguyen_am_to_ids.get(char, (-1, -1))
          if x == -1:
              continue
          elif x == 9:  # check qu
              if index != 0 and chars[index - 1] == "q":
                  chars[index] = "u"
                  qu_or_gi = True
          elif x == 5:  # check gi
              if index != 0 and chars[index - 1] == "g":
                  chars[index] = "i"
                  qu_or_gi = True
          if y != 0:
              dau_cau = y
              chars[index] = bang_nguyen_am[x][0]
          if not qu_or_gi or index != 1:
              nguyen_am_index.append(index)
      if len(nguyen_am_index) < 2:
          if qu_or_gi:
              if len(chars) == 2:
                  x, y = nguyen_am_to_ids.get(chars[1])
                  chars[1] = bang_nguyen_am[x][dau_cau]
              else:
                  x, y = nguyen_am_to_ids.get(chars[2], (-1, -1))
                  if x != -1:
                      chars[2] = bang_nguyen_am[x][dau_cau]
                  else:
                      chars[1] = (
                          bang_nguyen_am[5][dau_cau]
                          if chars[1] == "i"
                          else bang_nguyen_am[9][dau_cau]
                      )
              return "".join(chars)
          return word
  
      for index in nguyen_am_index:
          x, y = nguyen_am_to_ids[chars[index]]
          if x == 4 or x == 8:  # ê, ơ
              chars[index] = bang_nguyen_am[x][dau_cau]
              # for index2 in nguyen_am_index:
              #     if index2 != index:
              #         x, y = nguyen_am_to_ids[chars[index]]
              #         chars[index2] = bang_nguyen_am[x][0]
              return "".join(chars)
  
      if len(nguyen_am_index) == 2:
          if nguyen_am_index[-1] == len(chars) - 1:
              x, y = nguyen_am_to_ids[chars[nguyen_am_index[0]]]
              chars[nguyen_am_index[0]] = bang_nguyen_am[x][dau_cau]
              # x, y = nguyen_am_to_ids[chars[nguyen_am_index[1]]]
              # chars[nguyen_am_index[1]] = bang_nguyen_am[x][0]
          else:
              # x, y = nguyen_am_to_ids[chars[nguyen_am_index[0]]]
              # chars[nguyen_am_index[0]] = bang_nguyen_am[x][0]
              x, y = nguyen_am_to_ids[chars[nguyen_am_index[1]]]
              chars[nguyen_am_index[1]] = bang_nguyen_am[x][dau_cau]
      else:
          # x, y = nguyen_am_to_ids[chars[nguyen_am_index[0]]]
          # chars[nguyen_am_index[0]] = bang_nguyen_am[x][0]
          x, y = nguyen_am_to_ids[chars[nguyen_am_index[1]]]
          chars[nguyen_am_index[1]] = bang_nguyen_am[x][dau_cau]
          # x, y = nguyen_am_to_ids[chars[nguyen_am_index[2]]]
          # chars[nguyen_am_index[2]] = bang_nguyen_am[x][0]
      return "".join(chars)
  
file_path: underthesea/examples/text_normalize/tools/nvh.py
imports: import regex
label_desc: Use image node_id 5 for calling a global function with example usage: chuan_hoa_dau_tu_tieng_viet(word) and returns: str, word, word, str, str