code: def sonority_from_fts(self, seg):
          
  
          def match(m):
              return self.fm.match(fts(m), seg)
  
          minusHi = BoolTree(match('-hi'), 9, 8)
          minusNas = BoolTree(match('-nas'), 6, 5)
          plusVoi1 = BoolTree(match('+voi'), 4, 3)
          plusVoi2 = BoolTree(match('+voi'), 2, 1)
          plusCont = BoolTree(match('+cont'), plusVoi1, plusVoi2)
          plusSon = BoolTree(match('+son'), minusNas, plusCont)
          minusCons = BoolTree(match('-cons'), 7, plusSon)
          plusSyl = BoolTree(match('+syl'), minusHi, minusCons)
          return plusSyl.get_value()
docs: Given a segment as features, returns the sonority on a scale of 1
             to 9.
  
          Args:
              seg (list): collection of (value, feature) pairs representing
                          a segment (vowel or consonant)
  
          Returns:
             int: sonority of `seg` between 1 and 9