code: public double[] vectorize(List<String> phonemes) {
          int nextConsonantIndex = 0;
          int nextVowelIndex = 0;
          double[] result = new double[(vowelIndices.length +
                                        consonantIndices.length) * 3];
          for (String phoneme : phonemes) {
              int offset = 3;
              if (VOWELS.contains(phoneme))
                  offset *= vowelIndices[nextVowelIndex++];
              else
                  offset *= consonantIndices[nextConsonantIndex++];
              double[] values = PHONEME_VALUES.get(phoneme);
              for (int i = 0; i < 3; ++i)
                  result[i + offset] = values[i];
          }
          return result;
      }
docs: Returns a left-justified syllablilic template representation of the given
  list of phonemes.  Every three values correspond to a single phoneme
  representation.  If six syllables are used, a vector of 99 values is
  returned, otherwise a vector of 54 values is returned.
  
  @param phonemes A list of string phoneme representation using the IPA
  format
  
  @return A vector representing the word
  
  @throws NullPointerException If any requested phoneme does not have a
  mapping